Ne pouvez pas Télécharger à partir de youtube
J'ai un script qui télécharge des fichiers mp4 à partir de youtube. Ce qu'il fait est de générer un lien de la forme http://youtube.com/get_video?video_id=*VIDEO_ID*&&t=*THE_TOKEN*=&fmt=18&asv=2, mais il ne fonctionne plus (il remarqué aujourd'hui). Qu'en pensez-vous?
Nous avons tous sérieusement besoin d'un projet open source pour suivre youtube lien dl pour nous. Je suis fatigué de les garder avec leur jeu.
OriginalL'auteur Alex1987 | 2010-12-09
Vous devez vous connecter pour publier un commentaire.
Au lieu de tenter de l'utiliser get_video pour obtenir la vidéo, d'essayer d'analyser fmt_url_map (format de l'url de la carte) à la place.
Vous devriez être capable de trouver le fmt_url_map dans le même endroit que vous avez trouvé le jeton (comme dans les flashvars de la vidéo sur YouTube flash player ou à l'intérieur de la page YouTube, quelque part). Si vous ne le trouvez pas, envoyez une demande à http://www.youtube.com/get_video_info?video_id=VIDEO_ID et vous devriez obtenir un bon résultat dans le format de
name=value&name=value&...
Trouver "fmt_url_map" à l'intérieur de ce résultat (recherche par le biais du résultat pour une chaîne qui commence par "&fmt_url_map=" et se termine par "&").Après que vous obtenez cette valeur (vous peut-être url-le décoder), il sera quelque chose comme (sans les sauts de ligne):
où chacun, séparés par des virgules entrée commence avec l'esf de la valeur (22 ou 35 dans l'exemple), suivi d'un caractère, qui est ensuite suivie par l'URL où vous pouvez utiliser pour télécharger la vidéo dans ce format. (Cette URL est spécifique au client, donc une URL pour un certain client le plus susceptibles de ne pas travailler avec un autre client en raison de YouTube vérification de l'IPs. Aussi, l'Url n'expirent après un certain temps.)
Pour une liste des différents fmt valeurs, voir: http://en.wikipedia.org/wiki/YouTube#Quality_and_formats et de montrer la "Comarison de YouTube media options d'encodage". NOTE: tous les formats ne peuvent être disponibles pour toutes les vidéos.
Déconseillés: ne fonctionne plus!
Cela pourrait être un problème (bien que get_video eu ce problème). Si vous avez fait la demande de la page et obtenir la URL de téléchargement sur un serveur extérieur, YouTube associe l'adresse IP du serveur avec l'adresse URL (juste comme la façon dont il serait d'associer une IP à chaque jeton dans la get_video méthode). En supposant que vous êtes en train de le faire dans un navigateur web, vous pouvez essayer de le faire côté client avec une applet Java (c'est ce que de nombreux sites comme clipnabber.com faire, mais il peut être assez maladroit). Si vous êtes juste écrit un tout côté client du programme, il devrait être bon, car toutes les demandes sont envoyées avec l'IP du client
J'ai remarqué aujourd'hui que cette méthode ne fonctionne plus. Si quelqu'un d'entre vous connais une méthode de travail bien vouloir poster ici
J'ai trouvé une nouvelle méthode. Voir ma réponse pour plus de détails.
OriginalL'auteur jhartz
Si vous voulez télécharger vers un serveur, vous pouvez utiliser youtube-dl qui fonctionne toujours.
OriginalL'auteur Marques
Eh bien, il semble qu'ils ont supprimé l'esf option. Voir http://en.wikipedia.org/wiki/YouTube#Quality_and_codecs.
Si vous analysez fmt_url_map (à partir de youtube.com/get_video_info?video_id=*VIDEO_ID*), vous pouvez obtenir un plus à l'URL de téléchargement direct, mais, généralement, ils n'ont pas tous les formats possibles...
C'est un grand homme! vous devriez vraiment mettre cela comme une réponse!
OK, je l'ai posté une réponse - si vous avez des questions, veuillez les poser.
OriginalL'auteur Huusom
J'ai créé un node.js serveur pour diffuser des vidéos YouTube directement sur le client et il fonctionne. Voir https://github.com/licson0729/node-YouTubeStreamer pour plus de détails.
OriginalL'auteur Licson