YourFileHostのFLVのURLを探す
YourFileHostのFLVへのパスを探すコードをうpしてみる。
Imports System.Text.RegularExpressions Public Class ModYourFileHost Private Sub New() End Sub ''' <summary> ''' YourFileHostからFLVのURLを取得します。 ''' </summary> ''' <param name="url">YourFileHostのUrl</param> ''' <returns></returns> ''' <remarks></remarks> Public Shared Function Read(ByVal url As String) As ModYourFileHost Dim instance As New ModYourFileHost '// ムービーのパラムを検索 Dim r As New Regex("<param name=""movie"" value="".*?>") Dim mc As MatchCollection = r.Matches(GetResponse(url)) If mc.Count > 0 Then instance.FileName = GetFilename(url) If instance.FileName.Length > 0 Then instance.FlvUrl = FindFlvUrl(System.Web.HttpUtility.UrlDecode(mc(0).Value)) instance.ThumbnailUrl = GetThumbnailUrl(FindAPIUrl(System.Web.HttpUtility.UrlDecode(mc(0).Value))) End If End If Return instance End Function Private Shared Function GetFilename(ByVal url As String) As String '// ファイル名を取得します。 Dim r As New Regex("file=.*?\.") Dim mc As MatchCollection = r.Matches(url) If mc.Count > 0 Then Return mc.Item(0).Value.Replace("file=", "").Replace(".", "") & ".flv" End If Return "" End Function Private Shared Function FindFlvUrl(ByVal target As String) As String '// FLVのパスを取得する Dim r As New Regex("videoembed_id=.*?search_url") Dim mc As MatchCollection = r.Matches(target) If mc.Count > 0 Then Return mc.Item(0).Value.Replace("videoembed_id=", "").Replace("&search_url", "") End If Return "" End Function Private Shared Function FindAPIUrl(ByVal target As String) As String '// ビデオの文字列からAPIのパスを取得する Dim r As New Regex("video=.*?search_url") Dim mc As MatchCollection = r.Matches(target) If mc.Count > 0 Then Return mc.Item(0).Value.Replace("video=", "").Replace("&search_url", "") End If Return "" End Function Private Shared Function GetThumbnailUrl(ByVal apiUrl As String) As String '// APIの結果からサムネイルのパスを取得する Dim result As String = System.Web.HttpUtility.UrlDecode(GetResponse(apiUrl)) Dim r As New Regex("photo=.*?jpg") Dim mc As MatchCollection = r.Matches(result) If mc.Count > 0 Then Return mc.Item(0).Value.Replace("photo=", "") End If Return "" End Function Private m_fileName As String '// 保存するファイル名 Private m_flvUrl As String '// FLVのURL Private m_thumbnailUrl As String '// サムネイルのURL Public Property FileName() As String Get Return m_fileName End Get Set(ByVal value As String) m_fileName = value End Set End Property Public Property FlvUrl() As String Get Return m_flvUrl End Get Set(ByVal value As String) m_flvUrl = value End Set End Property Public Property ThumbnailUrl() As String Get Return m_thumbnailUrl End Get Set(ByVal value As String) m_thumbnailUrl = value End Set End Property ''' <summary> ''' HTTPのレスポンスデータを取得します。 ''' </summary> ''' <param name="url"></param> ''' <returns></returns> ''' <remarks></remarks> Private Shared Function GetResponse(ByVal url As String) As String Dim webreq As System.Net.WebRequest = System.Net.WebRequest.Create(url) '// 10秒でタイムアウト webreq.Timeout = 10 * 1000 Using webres As System.Net.WebResponse = webreq.GetResponse() Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding("euc-jp") Using st As System.IO.Stream = webres.GetResponseStream() Dim result As String = "" Using sr As New System.IO.StreamReader(st, enc) result = sr.ReadToEnd() End Using Return result End Using webres.Close() End Using Return Nothing End Function End Class