Support Forums
[Source] Youtube Download [VB.net] - Printable Version

+- Support Forums (https://www.supportforums.net)
+-- Forum: Categories (https://www.supportforums.net/forumdisplay.php?fid=87)
+--- Forum: Coding Support Forums (https://www.supportforums.net/forumdisplay.php?fid=18)
+---- Forum: Visual Basic and the .NET Framework (https://www.supportforums.net/forumdisplay.php?fid=19)
+---- Thread: [Source] Youtube Download [VB.net] (/showthread.php?tid=13607)



[Source] Youtube Download [VB.net] - KoBE - 11-09-2010

I posted this on HF. Thought I'd share over here.

This is my take on a Youtube Downloader. Instead of downloading the file automatically I have it generate the links in a webbrowser so the user can right-click save-target-as.

[Image: youtube.gif]

Credits go to:
xSilent - helped me learn mulithreading/use of delegates. Thanks.
TraptCode - original post similar to mine. used .Replace commands(commented in source). Thanks
Mr. Predictable - idea to use Camtasia Studio to produce gif came from him.

now the code.
You will need the following
  • Textbox - txtUrl
  • Button - btnGenerate
  • webbrowser - wb
  • listbox - lstIndex
  • listbox - lstLinks

Here is the code.

Code:
Public Class Form1
    Dim HttpRequest As Net.HttpWebRequest
    Dim HttpResponse As Net.HttpWebResponse
    Dim Stream As IO.StreamReader
    Dim scode As String = ""
    Delegate Sub _generateLinks()
    Private Sub generateLinks()
  Dim type As String = ""
  Dim page As String = ""
  Dim tstring As String = ""
  Dim link As Integer = 1
  Dim index As Integer = 0
  Dim count As Integer = 0
  Dim num1 As Integer = 0
  Dim num2 As Integer = 0
  lstIndex.Items.Clear()
  lstLinks.Items.Clear()
  Do Until index = -1
    index = scode.IndexOf("http://v", index + 1)
    If index <> -1 Then
    lstIndex.Items.Add(index)
    End If
  Loop
  For i = 0 To lstIndex.Items.Count - 2
    num1 = lstIndex.Items(i)
    num2 = lstIndex.Items(i + 1)
    If num2 - num1 < 380 Then
    tstring = scode.Substring(num1, num2 - num1)
    Dim right As String = Microsoft.VisualBasic.Right(tstring, 8)
    If right.Substring(0, 1) = "%" Then
    tstring = tstring.Substring(0, tstring.Count - 8)
    Else
    tstring = tstring.Substring(0, tstring.Count - 7)
    End If
    If Not lstLinks.Items.Contains(tstring) Then
    If Not Microsoft.VisualBasic.Right(tstring, 3) = "com" Then
    lstLinks.Items.Add(tstring)
    End If
    End If
    count += 1
    End If
  Next
  index = 0
  For i = 0 To lstLinks.Items.Count - 1
    HttpRequest = Net.HttpWebRequest.Create(New Uri(lstLinks.Items.Item(i)))
    HttpResponse = HttpRequest.GetResponse
    type = HttpResponse.ContentType
    page = page & "<br>" & "<a href = """ & lstLinks.Items(i) & """>" & "Link " & link & "  -  Type: " & type
    link += 1
  Next
  wb.DocumentText = page
  btnGenerate.Enabled = True
    End Sub
    Private Sub btnGenerate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGenerate.Click
  Dim t As Threading.Thread
  wb.DocumentText = ""
  btnGenerate.Enabled = False
  t = New Threading.Thread(AddressOf getpage)
  t.Start()
    End Sub
    Private Sub getpage()
  HttpRequest = Net.HttpWebRequest.Create(txtUrl.Text)
  HttpResponse = HttpRequest.GetResponse
  Stream = New IO.StreamReader(HttpResponse.GetResponseStream)
  scode = Stream.ReadToEnd
  'credit to TraptCode for replace codes
  scode = scode.Replace("%3A", ":")
  scode = scode.Replace("%2F", "/")
  scode = scode.Replace("%3F", "?")
  scode = scode.Replace("%3D", "=")
  scode = scode.Replace("%26", "&")
  scode = scode.Replace("%25", "%")
  Invoke(New _generateLinks(AddressOf generateLinks))
    End Sub
End Class

I didnt use Try-catch because I meant for this to be more informative for downloading youtube vids rather than releasing it. I plan on making a better GUI and adding error handling. But for the purpose of this thread, i left that out. Also, the code is probably a bit sloppy and im sure there are better ways to do some of things i did in this code. But this is what i know. So if you have a better way to code something, reply and let us know.
Enjoy!

Download Code here

*Message to noobs/skids*
I left this code copy/pasteable... learn from it. Go through the code as you use it and understand the flow of it. Like, when you click the button it starts a thread, which starts another sub, then learn what that sub is doing. I didnt comment this code because it's late and I am tired. If you have a question about something in the code, reply/pm.


RE: [Source] Youtube Download [VB.net] - Shock - 11-09-2010

This is good.
Thanks, I will bookmark this.
Future Reference.


RE: [Source] Youtube Download [VB.net] - єץє - 11-11-2010

Nice man, thanks for sharing. Added to my bookmarks.


RE: [Source] Youtube Download [VB.net] - Jet - 11-11-2010

Great share, I will be sure to try this out later and post feedback. This is a good idea.


RE: [Source] Youtube Download [VB.net] - dime111 - 03-06-2011

Great share dude


RE: [Source] Youtube Download [VB.net] - zerdnem - 03-07-2011

dude how did you create that gif tutorial? please pm me. thanks

btw I'm learning vb and this post would really help me learn new things.