PANDORAプレイリスト仕様
ちょとPANDORA.TVで遊んでいたので、PANDORA.TVの「プレイリスト」に関する仕様をまとめておく。
PANDORA.TVとは、韓国発の動画共有サイト。今年HD(1280×720/H.264/2Mbps)にも対応した、という感じのサイトで、まぁ詳細は以下で。
それで、上記事でも書いたんだが、動画の本体ファイルアドレスが、動画の個別再生ページに内に記載されています。一般的な「PANDORA動画のダウンロードツール/サービス」というのは、この「ソース内の動画アドレス」を拾っているはずだ。
しかし、ネット上では、「PANDORAの動画が、場合によって落とせないことがあったりして良く分からない」とった声があったりする。おそらく、これは「プレイリスト」の仕様故に出てくる「声」だ。「PANDORA動画のダウンロード」ということを考える場合には、「プレイリストの仕様」という問題を避けて通れない。この仕様に関して。
<PANDORAのプレイリスト関連の仕様とDL時の問題点>
PANDORAで検索を行うと、まぁ当然検索結果として動画が表示される訳です。これらをクリックした場合に開かれるのは「video.ptv」。このページが、上記の「動画の個別再生ページ」であり、つまり「動画の本体ファイルアドレスが記載されているページ」だ。

そして、検索結果ページの上部、「プレイリスト」内の項目をクリックしたときに開かれるのは、プレイリストページ(playlist.ptv)。

画面は↑。つまり、すごく「動画再生ページ」っぽい。ぽいけど、これは別物です。「別物」で何が問題かというと
- 動画の本体ファイルアドレスが記載されていない
- 右側に表示されている「同一プレイリスト内動画一覧」はJavaScriptによる描画
- さらに、「同一プレイリスト内動画一覧」の各動画リンクは「個別再生ページ」ではない(詳細な動作は割愛するが、要は、ページ遷移なしで他の動画を開けるようになっている、つまりプレイリストページ内には「各動画個別再生ページへのリンク」が存在しない)
と、いうことで、つまり、通常の方法では、「プレイリストページ」から「各動画の個別再生ページ」に辿り着くことができず、従って「各動画の動画本体ファイルアドレス」へ辿り着けない。
- プレイリストページ
- 個別再生ページ
- 動画本体ファイルアドレス
2と3は(ソース内に書いてあるから)繋がるんだが、1と2が、普通の方法では繋がらないのだ。
</PANDORAのプレイリスト関連の仕様とDL時の問題点>
と、まぁ、上記のような理由で、「如何にしてプレイリストページと個別再生ページを繋ぐか」という問題が発生する訳です。で、以下の方法で繋げます。
プレイリストページのURLから情報を取得
プレイリストページURL:ttp://channel.pandora.tv/channel/playlist.ptv?ch_userid=プレイリストユーザーID&ref=spl#プレイリスト番号.ページ番号
プレイリストユーザーID:プレイリスト作者のID。必ずしも各動画のアップロードユーザーとは一致しない
プレイリスト番号:各リストに対してユニークに与えられているID
ページ番号:25を超える動画が登録されているプレイリストは複数のページに分割されている
取得した情報を元にPOSTを行う
POSTする相手:ttp://channel.pandora.tv/json/v003/playlist.dll/init
標準入力:json={ "userid": "プレイリストユーザーID", "limit": "25", "categ_id": "プレイリスト番号", "page": "ページ番号" }
レスポンスから各動画のIDを取得
レスポンスが異常に長いので、(現時点の)サンプルをプレーンテキストで上げておきます。要は、このレスポンス内には
- プレイリストユーザーの作成した全プレイリストの情報
- 再生中プレイリスト内各動画の情報
が記載されている。ここで欲しいのは後者で。部分的に抜き出すと以下。
list:[{prg_id:"動画ID1",prg_title:"動画タイトル1",userid:"プレイリストユーザーID",prg_org_userid:"動画ユーザー1",prg_chname:"プレイリスト名",embed_pub:1,prg_reg_date:"2/month",prg_runtime:"動画1の再生時間",play_index:1,open_pub:0,resolquality_type:1,localfile_name:"動画本体ファイル名1",prg_pub:0,status:30003,adult_chk:0,fs:73226210,vs:"解像度",language:40003,reg_date:"アップロード日"},{prg_id:"動画ID2",prg_title:"動画タイトル2(以下略)
動画ID1:一つ目の動画のID
動画タイトル1:一つ目の動画のタイトル
動画ユーザー1:一つ目の動画のアップロードユーザー
動画本体ファイル名1:動画本体ファイルのファイル名(詳細後述)
各動画の個別再生ページURLを生成
各動画の個別再生ページURL:ttp://channel.pandora.tv/channel/video.ptv?ch_userid=動画ユーザー1&prgid=動画ID1&categid=all&page=1
これで繋がる。「動画本体ファイル名1」が記載されているので、直接ダウンロードを行えそうな予感がするんだが、ディレクトリ名が不明。動画本体ファイルアドレスは、例えば
ttp://flvg.pandora.tv/flv/_user/l/u/動画ユーザー1/92/動画ファイル名1.flv
なので、この「92」がどこから生まれているのか分かれば、という感じ。上記のレスポンス内に「92」が見あたらないので何とも……。
ともかく、
- プレイリストページ
- 個別再生ページ
- 動画本体ファイルアドレス
2と3は元々(ソース内に書いてあるから)繋がっていて、そしてこれで1と2が繋がる、と。
……で、こっそりとこんなん作ったんで、まぁどなたかの参考になれば、ということで……。

Comment