forked from pkrumins/perl-youtube-downloader-one-liner
-
Notifications
You must be signed in to change notification settings - Fork 0
This is a Perl one-liner that downloads YouTube videos.
martoncsukas/perl-youtube-downloader-one-liner
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
This is a Perl one-liner that downloads YouTube videos. I wrote it for fun. It was written by Peteris Krumins (peter@catonmat.net). His blog is at http://www.catonmat.net -- good coders code, great reuse. The code is licensed under the MIT license. I explained every bit of it in my article "Downloading YouTube Videos with a Perl One-Liner". Read it here: http://www.catonmat.net/blog/downloading-youtube-videos-with-a-perl-one-liner/ ------------------------------------------------------------------------------ Here it is: perl -MWWW::Mechanize -e '$m = WWW::Mechanize->new; $_=shift; ($i) = /v=(.+)/; s/%(..)/chr(hex($1))/ge for (($u) = $m->get($_)->content =~ /l_map": .+(?:%2C)?5%7C(.+?)"/); $m->get($u, ":content_file" => "$i.flv")' Use it as following: $ perl ... <http://www.youtube.com/watch?v=ID> It will save the video to a file named "ID.flv". Here is how it works, statement by statement: ------------------------------------.----------------------------------------- code | explanation ------------------------------------+----------------------------------------- $m = WWW::Mechanize->new; | creates WWW::Mechanize object ------------------------------------+----------------------------------------- $_=shift; | puts the command line argument in $_ ------------------------------------+----------------------------------------- ($i) = /v=(.+)/; | extracts the video ID for later user for | filename. ------------------------------------+----------------------------------------- s/%(..)/chr(hex($1))/ge for (($u) = | this GETs the content of video page at $m->get($_)->content =~ | $_, then matches it against a regular /l_map": .+(?:%2C)?5%7C(.+?)"/); | expression and captures the video url | for flv video (id 5). this is evaled in | list context, therefore the capture goes | into $u variable, which gets url | unescaped by s/%(..)/chr(hex($1))/ge ------------------------------------+----------------------------------------- $m->get($u, ":content_file" => | this GETs the video file that was in $u "$i.flv") | variable and saves it to file "$i.flv" ------------------------------------'----------------------------------------- That's it. :) ------------------------------------------------------------------------------ Happy downloading! Sincerely, Peteris Krumins http://www.catonmat.net
About
This is a Perl one-liner that downloads YouTube videos.
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published