Hi
Ich programmiere mir zurzeit einen kleinen Downloader, der alle Medien (Videos, Sounds) von Webseiten anhand des Html-codes findet und downloadet. Das funktioniert inzwischen relativ gut (bis auf ein paar kleine Bugs). Nun kommt aber die Frage: Ich weiß nicht wie das youtube macht, aber irgendwie ist es genial, ich habe es bisher noch nicht geschafft aus dem Quelltext heraus ein Video zu downloaden. Normalerweise sucht mein Prog nach einer Dateiendung (.flv, .mp4, .avi, .mp3...), das gibt es da aber schonmal nicht. Nett finde ich es auch das Youtube die Flashplayer argumente in über 10k Zeichen in einer Zeile versteckt. In diese Zeile kommt man schnell, wenn man z.b. nach flashvars sucht.
Die %20 Zeichen und was noch dazugehört, dekodiere ich natürlich.
Der einzige Anhaltspunkt den ich habe ist ein kleines JavaSnippet, das ich aber nicht ganz verstehe und daher noch nichts erreicht habe.
javascript:(function()
{
if(document.getElementById('download-youtube-video'))return;
var args=null,video_title=null,video_id=null,video_hash=null;
var download_code=new Array();
var fmt_labels=
{
'18':'standard MP4','22':'HD 720p','37':'HD 1080p'};
try
{
args=yt.getConfig('SWF_ARGS');
video_title=yt.getConfig('VIDEO_TITLE')
}
catch(e)
{
}
if(args)
{
var fmt_url_map=unescape(args['fmt_url_map']);
if(fmt_url_map=='')return;
video_id=args['video_id'];
video_hash=args['t'];
video_title=video_title.replace(/["\'\?\\\/\:\*<>]/g,'');
var fmt=new Array();
var formats=fmt_url_map.split(',');
var format;
for(var i=0; i<formats.length; i )
{
var format_elems=formats[i].split('|');
fmt[format_elems[0]]=unescape(format_elems[1])}for(format in fmt_labels)
{
if(fmt[format]!=null)
{
download_code.push('<a href=\'' (fmt[format] '&title=' video_title) '\'>' fmt_labels[format] '</a>')}else if(format=='18')
{
download_code.push('<a href=\'http://www.youtube.com/get_video?fmt=18&video_id=' video_id '&t=' video_hash '\'>' fmt_labels[format] '</a>')}}}if(video_id==null||video_hash==null)return;
var div_embed=document.getElementById('watch-embed-div');
if(div_embed)
{
var div_download=document.createElement('div');
div_download.innerHTML='<br /><span id=\'download-youtube-video\'>Download: ' download_code.join(' | ') '</span>';
div_embed.appendChild(div_download)
}
}
)();
void(0)
Der funktioniert aber inzwischen auch nicht mehr (bei mir zumindest).
Das man evtl. RTSP braucht ist mir bewusst, aber ob der Link funktioniert kann man ja auch mit der Streamingfunktion von VLC überprüfen (unterstützt das Protokoll).
Ich habe keine Idee mehr, wie ich das machen sollte, bin ich vielleicht völlig auf dem Holzweg, oder ist das wirklich so kompliziert?
Hallo,
wenn es nur um YouTube geht kannst du dir dieses Projekt mal ansehen kleiner Youtube Player
fz
"We better hurry up and start coding, there are going to be a lot of bugs to fix."
Wow, danke für die schnelle Antwort.
Der Downloader soll eigentlich allgemein werden. Aber Youtube & Co sollte er schon unterstützen.
Aus dem Projekt müsste ich das extrahieren können.
Hallo Sam1900,
schau mal auf den Seiten von CodePlex. Dort findest du fertige Komponenten/APIs.
zero_x
zero_x | <span style="font-size: 10;">my</span><span style="font-size: 10;">CSharp</span><span style="font-size: 10;">.de</span> - gemeinsam mehr erreichen
Für längere Zeit inaktiv.
Hallo Sam1900,
bitte beachte die AGBs der jeweiligen Seite. Auf den Seiten, wo das Herunterladen nicht so ohne weiteres gelingen will, ist es nicht unwahrscheinlich, dass das Herunterladen verboten ist und damit unrechtmäßig wäre.
herbivore
bitte beachte die AGBs der jeweiligen Seite. Auf den Seiten, wo das Herunterladen nicht so ohne weiteres gelingen will, ist es nicht unwahrscheinlich, dass das Herunterladen verboten ist und damit unrechtmäßig wäre.
Es ist doch kein Unterschied, ob ich sie online schaue oder von meinem Datenträger. Weitergegeben hab ich de Videos noch nie, und das habe ich auch nicht vor.
Der Youtube Flash Player speichert die Videos angeblich noch im Temp-Ordner, eigentlich legt er sie schon auf meine Platte.
Deine eigene Ansicht, spielt da, sorry, keine Rolle. Wichtig ist das Gesetz, die AGBs und die rechtliche Wertung. Dabei wird eben doch ein Unterschied zwischen Streaming (ansehen) und Download (urheberrechtliche Vervielfältigung) gemacht. Genauso wie es einen Unterschied macht, ob du ein (z.B. geliehenes) Buch nur liest oder auf den Kopierer legst.
Caches werden von der Rechtsprechung nicht wie normale Kopien behandelt (ich meine mich sogar zu erinnern, dass es Caches mittlerweile sogar als "Zwischenspeicher zur Beschleunigung des Abrufs" oder so ähnlich explizit in das Gesetz geschafft haben). Insofern kannst du dich darauf also nicht berufen. Und wenn du von der Datei im Cache eine (dauerhafte) Kopie erstellen würdest, wäre das wieder eine urheberrechtliche Vervielfältigung.
Also wie du es auch drehst und wendest, bei einer juristischen Auseinandersetzung würdest du mit deiner Argumentation nicht durchkommen.
(
Es ist doch kein Unterschied, ob ich sie online schaue oder von meinem Datenträger. Und ob das einen Unterschied macht. Lies dir die Nutzungsbedingungen durch. Da du die Videos ja offensichtlich lokal speichern möchtest, verstößt du eindeutig gegen diese Nutzungsbedingungen, im speziellen Punkt 6.1 K. Daher ist hier auch Schluss mit der Diskussion.){gray}
Baka wa shinanakya naoranai.
Mein XING Profil.