Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Private SID As String
- Private wc As WebClient
- Private Function GetURL(name As String) As String
- Return "https://p.ytmp3eu.com/" & name
- End Function
- Private Function PerformSearch(link As String) As String
- Const NoCache = "-1"
- Dim req = New Specialized.NameValueCollection()
- req.Add("id", link)
- req.Add("type", "audio")
- req.Add("sid", SID)
- Dim res = wc.UploadValues(GetURL("search2.php"), req)
- Dim txt = System.Text.Encoding.UTF8.GetString(res)
- If txt.StartsWith(NoCache) Then
- WaitForConversion(link)
- txt = PerformSearch(link)
- If txt.StartsWith(NoCache) Then Throw New Exception("Unexpected response")
- End If
- Return txt
- End Function
- Private Sub WaitForConversion(link As String)
- Dim req = New Specialized.NameValueCollection()
- req.Add("id", link)
- req.Add("type", "audio")
- req.Add("sid", SID)
- req.Add("onoffswitch", "true")
- wc.UploadValues(GetURL("responsive2_n.php"), req)
- req.Clear()
- req.Add("idt", SID)
- Dim res As String = ""
- Do Until res = "-1"
- Dim b = wc.UploadValues(GetURL("getprogress.php"), req)
- res = System.Text.Encoding.UTF8.GetString(b)
- Threading.Thread.Sleep(1000)
- Loop
- End Sub
- Private Function GetDirectLink(metaData As String) As String
- Dim start = "window.location.assign("""
- Dim parts = metaData.Split(",__")
- If parts.Length < 5 Then Throw New Exception("Invalid response in PerformSearch")
- Dim req = New Specialized.NameValueCollection()
- req.Add("video_id", parts(1))
- req.Add("type", "audio")
- req.Add("sid", SID)
- req.Add("video_name", parts(0))
- req.Add("file_size", parts(2))
- req.Add("file_length", parts(3))
- req.Add("bitrate", parts(4))
- req.Add("address", parts(5))
- req.Add("onoffswitch", "true")
- Dim res = wc.UploadValues(GetURL("responsivet2d.php"), req)
- Dim text = System.Text.Encoding.UTF8.GetString(res)
- Dim spos = text.IndexOf(start)
- If spos = -1 Then Throw New Exception("Invalid response in GetDirectLink")
- Dim link = text.Substring(spos + start.Length)
- Return link.Substring(0, link.IndexOf(""""))
- End Function
- Private Sub GenerateSID()
- SID = ""
- Dim rnd As New Random()
- For i As Integer = 0 To 22
- Dim r = rnd.Next(0, 16)
- If r < 10 Then
- r += 48
- Else
- r += 87
- End If
- SID &= Chr(r)
- Next
- SID &= "."
- For i As Integer = 0 To 7
- SID &= Chr(rnd.Next(48, 57))
- Next
- End Sub
- Public Function DownloadYoutubeMP3(youtubeLink As String) As Byte()
- If wc Is Nothing Then
- wc = New WebClient
- wc.Encoding = System.Text.Encoding.UTF8
- wc.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.82 Safari/537.36")
- wc.Headers.Add("Origin", "https://ytmp3eu.com")
- wc.Headers.Add("Referer", "https://ytmp3eu.com")
- End If
- If SID Is Nothing Then GenerateSID()
- Dim metaData = PerformSearch(youtubeLink)
- Dim audioLink = GetDirectLink(metaData)
- ' Se vuoi solo il link ritorna audioLink
- Return wc.DownloadData(audioLink)
- End Function
- Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- Dim mp3 = DownloadYoutubeMP3("https://www.youtube.com/watch?v=-YQ8IbVIwPM")
- IO.File.WriteAllBytes("test.mp3", mp3)
- End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement