2010-12-30 3 views

Antwort

0

Jeder Kanal stellt rss-Daten zur Verfügung, die nicht sofort aktualisiert werden.

Hier ist ein Generator für Youtube RSS-Dateien. Sie sollten in der Lage sein, den Standort von Videofiles basierend auf den RSS-Informationen abzuleiten. Die FLV-Dateien sollten streambar sein, aber andere Formate werden ebenfalls bereitgestellt.

EDIT: http://www.referd.info/ ist nicht mehr verfügbar. Es war im Grunde ein Dienst, bei dem du den youtube-Link zur Verfügung gestellt hast und es deneferenziert hat, dass er alle möglichen Downloads für dieses Video gefunden hat. Ich bin sicher, dass diese Dienste immer noch da draußen sind ... das ist nicht mehr.

+0

das tut verbinden scheint sehr gut zu funktionieren – Sridarshan

+0

der Link nicht funktioniert, überprüfen Sie bitte. – jAckOdE

+0

[KeepVid] (http://keepvid.com) scheint zu funktionieren, das einzige Problem ist das Java-Applet. –

1

Hier ist eine kurze Lektion zum Reverse-Engineering der YouTube-Seite, um die Stream-Daten zu extrahieren.

Im HTML Sie <Skript> Tag finden, die eine Variable "swfHTML" definiert - es sieht wie folgt aus: "var swfHTML = (ISIE)?" ...

Der Text in Die Anführungszeichen, die diesem Snippet folgen, sind der HTML-Code, der das Flash-Objekt anzeigt. Hinweis, dieser Text ist eine Reihe von zerbrochenen Strings, die verkettet werden, so müssen Sie es aufräumen (dh strip Instanzen von '' + '' und und Escaping Backslashes, um die HTML-Zeichenfolge zu erhalten.)

Einmal reinigen Sie die <param> Tag mit name = "flashvars", der Wert dieser Tag ist ein & separierten URL finden müssen. Machen Sie eine Aufteilung auf die & und Sie erhalten Ihre Schlüssel-Wert-Paare für alle Daten in Bezug auf dieses Video.

Der Haupt Schlüssel Sie nach suchen ist "fmt_url_map" und es ist eine URL kodierter String von Comma-Separated Values, beginnend mit "35 |" oder "34 |" oder andere. (Diese werden in einem anderen Schlüssel definiert, "fmt_list" -Dateien der Auflösung 854x480 zu sein für 35, 640x360 für 34, etc ..)

+0

und wie genau verarbeite ich diese codierten URLs? – Sridarshan

+0

Erstellen Sie eine GET-Anfrage (mit CURL, Fiddler oder etwas anderem) für eine der URLs.Stellen Sie sicher, dass die entsprechenden Anforderungsheader (Cookie und Host und möglicherweise andere) enthalten sind. Ich habe die YouTube-Cookies von meinem Browser gepackt. Ich habe das manuell mit Fiddler getestet und konnte einige Videos herunterladen. – nedk

2

Der folgende Bash-Skript wird abrufen URLs youtube-Streaming. Ich weiß, das ist veraltet, aber vielleicht wird das jemandem helfen.

#!/bin/bash 

[ -z "$1" ] && printf "usage: `basename $0` <youtube_url>\n" && exit 1 

ID="$(echo "$1" | grep -o "v=[^\&]*" | sed 's|v=||')" 
URL="$(curl -s "http://www.youtube.com/get_video_info?&video_id=$ID" | sed -e 's|%253A|:|g' -e 's|%252F|/|g' -e 's|%253F|?|g' -e 's|%253D|=|g' -e 's|%2525|%|g' -e 's|%2526|\&|g' -e 's|\%26|\&|g' -e 's|%3D|=|g' -e 's|type=video/[^/]*&sig|signature|g' | grep -o "http://o-o---preferred[^:]*signature=[^\&]*" | head -1)" 

[ -z "$URL" ] && printf "Nothing was found...\n" && exit 2 

echo "$URL"