Laden...

Wie versteckt Youtube seine Videos?

Erstellt von Sam1900 vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.851 Views
Thema geschlossen
S
Sam1900 Themenstarter:in
24 Beiträge seit 2010
vor 13 Jahren
Wie versteckt Youtube seine Videos?

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?

F
155 Beiträge seit 2009
vor 13 Jahren

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."

S
Sam1900 Themenstarter:in
24 Beiträge seit 2010
vor 13 Jahren

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.

1.044 Beiträge seit 2008
vor 13 Jahren

Hallo Sam1900,

schau mal auf den Seiten von CodePlex. Dort findest du fertige Komponenten/APIs.

zero_x

49.485 Beiträge seit 2005
vor 13 Jahren

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

S
Sam1900 Themenstarter:in
24 Beiträge seit 2010
vor 13 Jahren

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.

Hinweis von herbivore vor 13 Jahren

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.

6.862 Beiträge seit 2003
vor 13 Jahren

(

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.

Thema geschlossen