# NAME WWW::YouTube::Download - Very simple YouTube video download interface # SYNOPSIS use WWW::YouTube::Download; my $client = WWW::YouTube::Download->new; $client->download($video_id); my $video_url = $client->get_video_url($video_id); my $title = $client->get_title($video_id); # maybe encoded utf8 string. my $fmt = $client->get_fmt($video_id); # maybe highest quality. my $suffix = $client->get_suffix($video_id); # maybe highest quality file suffix # DESCRIPTION WWW::YouTube::Download is a library to download videos from YouTube. It relies entirely on scraping a video's webpage and does not use YT's /get\_video\_info URL space. # METHODS - **new()** $client = WWW::YouTube::Download->new; Creates a WWW::YouTube::Download instance. - **download($video\_id \[, \\%args\])** $client->download($video_id); $client->download($video_id, { fmt => 37, filename => 'sample.mp4', # save file name }); $client->download($video_id, { filename => '{title}.{suffix}', # maybe `video_title.mp4` }); $client->download($video_id, { cb => \&callback, }); Download the video file. The first parameter is passed to YouTube video url. Allowed arguments: - `cb` Set a callback subroutine, SEE [LWP::UserAgent](https://metacpan.org/pod/LWP::UserAgent) ':content\_cb' for details. - `filename` Set the filename, possibly using placeholders to be filled with information gathered about the video. `filename` supported format placeholders: {video_id} {title} {user} {fmt} {suffix} {resolution} Output filename is set to `{video_id}.{suffix}` by default. - `file_name` **DEPRECATED** alternative for `filename`. - `fmt` set the format to download. Defaults to the best video quality (inferred by the available resolutions). - **playback\_url($video\_id, \[, \\%args\])** $client->playback_url($video_id); $client->playback_url($video_id, { fmt => 37 }); Return playback URL of the video. This is direct link to the movie file. Function supports only "fmt" option. - **prepare\_download($video\_id)** Gather data about the video. A hash reference is returned, with the following keys: - `fmt` the default, suggested format. It is inferred by selecting the alternative with the highest resolution. - `fmt_list` the list of available formats, as an array reference. - `suffix` the filename extension associated to the default format (see `fmt` above). - `title` the title of the video - `user` the YouTube user owning the video - `video_id` the video identifier - `video_url` the URL of the video associated to the default format (see `fmt` above). - `video_url_map` an hash reference containing details about all available formats. The `video_url_map` has one key/value pair for each available format, where the key is the format identifier (can be used as `fmt` parameter for ["download"](#download), for example) and the value is a hash reference with the following data: - `fmt` the format specifier, that can be passed to ["download"](#download) - `resolution` the resolution as _width_x_height_ - `suffix` the suffix, providing a hint about the video format (e.g. webm, flv, ...) - `url` the URL where the video can be found - **ua(\[$ua\])** $self->ua->agent(); $self->ua($LWP_LIKE_OBJECT); Sets and gets LWP::UserAgent object. - **video\_id($url)** Parses given URL and returns video ID. - **playlist\_id($url)** Parses given URL and returns playlist ID. - **user\_id($url)** Parses given URL and returns YouTube username. - **get\_video\_url($video\_id)** - **get\_title($video\_id)** - **get\_user($video\_id)** - **get\_fmt($video\_id)** - **get\_fmt\_list($video\_id)** - **get\_suffix($video\_id)** # AUTHOR xaicron # CONTRIBUTORS yusukebe # BUG REPORTING Plese use github issues: [https://github.com/xaicron/p5-www-youtube-download/issues](https://github.com/xaicron/p5-www-youtube-download/issues). # SEE ALSO [WWW::YouTube::Info](https://metacpan.org/pod/WWW::YouTube::Info) and [WWW::YouTube::Info::Simple](https://metacpan.org/pod/WWW::YouTube::Info::Simple). [WWW::NicoVideo::Download](https://metacpan.org/pod/WWW::NicoVideo::Download) [http://rg3.github.io/youtube-dl/](http://rg3.github.io/youtube-dl/) # LICENSE This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.