YourFileHost の flv を WWW::YourFileHost を使って簡単にダウンロード

| 0 Comments | 0 TrackBacks | このエントリーをはてなブックマークに追加 このエントリーのはてなブックマーク件数

こんばんは。インプラントの手術を1ヶ月後に控えている yusukebe です。今回も「悪い」ダウンロード系スクリプトの紹介をします。題材は、みんな大好き YourFileHost の flv の動画を簡単にゲットしてしまおうというものです。よい子は真似しないでね。


実はわたくし、某サイトを作るときに必要になり YourFileHost の API をたたくモジュール「WWW::YourFileHost」を作成しました。


http://search.cpan.org/dist/WWW-YourFileHost/


このモジュールを使うと指定したURLの flv 動画ファイルへのパスを簡単に見つけることができます。その URL を以前の記事でも扱った LWP::UserAgent を使いファイルに保存するよう指定し完成です。大体10行ちょいで書けました。

use strict;
use warnings;
use LWP::UserAgent;
use WWW::YourFileHost;

my $url =
    $ARGV[0] ||
    "http://www.yourfilehost.com/media.php?cat=video&file=guns_dont_kill_people.flv";
my $ua = LWP::UserAgent->new( agent => "WWW::YourFileHost" );
my $response = WWW::YourFileHost->new( url => $url , ua => $ua );
$ua->get( $response->video_id, ":content_file" => $response->id . ".flv" );

こんな感じで実行します。あ、繰り返しになりますが、よい子は真似しないでね。

perl fetch.pl "http://www.yourfilehost.com/media.php?cat=video&file=080128.4_exo_part001.wmv"

WWW::YourFileHost では動画のページをスクレイピングして、裏APIへのURLを解析しています。スクレイピングには Web::Scraper というとってもクールで便利なモジュールを使用しています。Web::Scraper のことをもっと知りたい方はとみたさんが詳しい記事を書いてくれているので、そちらを参照してみてください


http://e8y.net/mag/013-web-scraper/


あ、そうそう、WWW::YourFileHost は CPAN モジュールになっているので、

sudo -H cpan 

とCPANシェルを起動し

install WWW::YourFileHost

とすればインストールができます(sudo 権限があれば。CPANシェルについて誰か解説してー)。


このようによく使う処理やデータはモジュールにすると再利用ができて便利な上、いろんな方に使ってもらえます。モジュールの書き方、CPANへのアップロード方法などは、今後このページで紹介されるでしょう。というわけで Enjoy!

No TrackBacks

TrackBack URL: http://perl-mongers.org/MT/mt-tb.cgi/27

Leave a comment

About this Entry

This page contains a single entry by yusukebe published on May 29, 2008 12:07 AM.

Text::Vim-Colorを使えなくてもText::HatenaでSuperPreを使う was the previous entry in this blog.

良い子のお約束。use strict; is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.

Categories

Pages

Creative Commons License
This blog is licensed under a Creative Commons License.
Powered by Movable Type 4.21-en