Verfasst am:

Posted in: nicht kategoriesiert

2 Komentare

Meta Infos

id="post-380">

URL zu Youtube Videos

Ich habe mir vor einigen Tagen ein kleines Server Programm geschrieben, was mich einen bestimmten Youtube Kanal als Podcast abonnieren lässt. Dazu muss ich aber die URL des Youtube Videos im mp4-Format haben. So das iTunes es auch ohne weiteres auf meinen iPod packen kann. Nun hat Youtube aber leider die in Netz gänige Methode generft.Daher habe ich meine gesamten “Datamining-Content-grabber-reverseengeriering-Sk1lzzz” eingesetzt um die neue Methode um URLs zum Video zu bekommen zu finden. Naja eigentlich habe ich nur den original Player extrahiert und in wiredshark geguckt das für http-Requests raus gehen, aber das so zu sagen ist ja uncool.
Also wie kommt man an den Link:
Man braucht zu erst einen Token, den YT einem für einen bestimmten Zweitpunkt generriert. Dazu gibt es 2 Möglichkeiten: 1. eine Anfrage an http://www.youtube.com/get_video_info?&video_id=XXX stellen und den Token aus der Antwort parsen(XXX ist die Video id, und nach “&token” suchen). 2. die wie ich finde bessere Lösung, einfach den token es Original Players klauen (auf der Video Seite nach  “t”: “  suchen). Die Video ID raus zu finden ist nicht das Problem, entweder weiss man die schon oder einfach nach ‘VIDEO_ID’: ‘ in code suchen. Jetzt muss man nur noch einen Link zusammen bauen nach folgendem Schema:

http://youtube.com/get_video?video_id=XXXXX&asv=2&t=YYYYYY&fmt=ZZZZZZ

X ist die ID des videos z.B: eUBIT-cWg6Y
Y ist der Token z.B: vjVQa1PpcFOqy88jtu6wFerqmkza4006UogZ1Wn6kRQ=
und Z ist das Format z.B 18 für mp4
&asv=2 ist der neue Vodoo den man ran hängen muss damits geht, ka was das macht

Gemäß dem Motto Code talks hier ein Stück Python:

def getVidUrl(url):
 site = urllib2.urlopen(url).read()
 #ID raus parsen
 pos_a = site.find("'VIDEO_ID': '", 0, len(site)) + 13
 pos_b = site.find("',", pos_a, len(site))
 video_id = site[pos_a:pos_b]
 #Token raus parsen
 pos_a = site.find('"t": "', 0, len(site)) + 6
 pos_b = site.find('", ', pos_a, len(site))
 t = site[pos_a:pos_b]
 link = "http://youtube.com/get_video?video_id=" + video_id + "&asv=2&t=" +t
 print "Der Link zum Standart-File:"+link
 #Formate raus parsen
 pos_a = site.find('"fmt_map": "', 0, len(site)) + 12
 pos_b = site.find('", ', pos_a, len(site))
 fmt_map = site[pos_a:pos_b]
 #37=1080mp4, 22=720mp4, 35=480flv, 34=360flv, 5=226flv, 17=1143gp, 18=270mp4
 fmt_map = fmt_map.split(",")
 for e in fmt_map:
  print "Alternativ Format:"+link+"&fmt="+e.split("\\/", 1)[0]

Ich werde demnächst den “Youtube to Podcast” Server hier mal etwas näher vorstellen. Erbekommt gerade den letzten Feinschliff

2 Komentare

  1. XXLTomate sagt:

    Dankeschön :-)

Verfasse einen Komentar

Security Code: