2015年11月7日土曜日

黒い猫の配達業者とGyaoのストリームゲット

MacBookPro が回収されていきました。

先日アップした通り、お亡くなりになられた私のMacBookPro17インチ2011ですが、
昨日、黒い猫の配送業者の手によって、回収されていきました。
通常でいけば修理は1週間程度で完了するとのことでしたので、そんなに気長というレベルではないくらいで
届きそうなので、とりあえず安心しています。
あとは、修理の判定がリコール対象であることを祈るばかりです。

さて、上記の件で一つ、黒い猫の配送業者ですが、
自宅にくるなり、ガムテープを忘れたので貸して欲しいとか言い出した。
梱包までやってくれるサービスなのだから、ガムテープを持っていないとはどういうこと?
といいつつ、貸したのですけど、梱包に四苦八苦されていました。
ノートPC系専用の梱包セットを持って来ておられたのですが、扱うのが初めてのようで
説明書を見ながら必死でした。自分的には、仕事でよくこういった系の梱包を使っていたので
お手の物なのですが、私の自宅周辺でノートPC専用の梱包を使うような配送はまずないような地域
ど!田舎なのでしかたないかもしれないけれど、くる前にガムテープも合わせて
確認ぐらいしといて欲しいものです。と、愚痴っておきます。

本日、昨日にサクッと作っておいたGyaoの.m3u8系で配信されている動画をダウンロードについてのお話

ざくっと言うと、基本的に、ネットに出回っている動画と地デジ録画を極力低コストで集めて
自宅のDLNAサーバーで自動配信して、一人オンデマンドサービスを展開することが目的がこのブログですが
ネット動画も多種多様、いろんな形式があり、また日々変化しています。
今回はその一つGyaoの無料動画を収集している方法についてご紹介です。

・動画収集ターゲット
地デジ・BS/CS
Torrent
Youtube
Hulu
Gyao←今回はここの話

手順としては、簡単です。Gyaoの動画再生ページを解析して.m3u8を抜き出して
ffmpegでダウンロードすることです。

先に、関連サイト

・ffmpegでGyao動画をダウンロードする手順について
http://freesoft-plaza.com/blog-entry-148.html
・Gyaoのサイトを解析して、ffmpeg用のダウンロードコマンドを生成するサイト
http://kmake.net/gyaommsurl/
・ffmpegサイト
https://www.ffmpeg.org

大きくは、手順サイトの通りです。ただし、ブラウザでの解析方法が面倒くさいので、2個目の解析サイトを利用します。

手順としては

1.ffmpegのインストール
インストールといっても、ダウンロードしたファイルを解凍して、ffmpeg.exeを都合のいい場所に保存すること

2.目的のサイトからダウンロードする.m3u8を解析
これが面倒くさいので、解析サイトを使います。ちなみに、解析サイトの真ん中にぐらいにあるブックマークレットのURLを
ブックマークなどに登録しておいて、Gyaoの目的動画サイトを表示させてから、登録したブックマークに行くの
解析サイトが自動的に、元のページ(前のページ)から解析をしてくれるので便利です。

解析で生成されるコマンドサンプル
ffmpeg -c copy “動画のタイトルがここに入ります.ts" -i "https://gw.gyao.yahoo.co.jp/v1/hls/xF_YRT2nfHMarRRTJfJha6BzR77Q45KlzJWPRwIDRujkmpWZLgh.eg15uuw37oWPH_03uo0RQQ--.m3u8?appid=ff_rbJCxg67.bRk_lk7CbWFjhorGVKjvFsRgiLDHW4PE.vN6zxDW6KyRr1Zw3rI-"

3.ダウンロード
Windowsのコマンドプロンプトを使用して、ffmpegがあるフォルダ階層で、2で解析してできたコマンドを流すとダウンロードがスタート
対象ファイルの容量によっては地味に時間がかかります。

細かい手順については、関連サイトのffmpegでGyao動画をダウンロードする手順を参照してください
問題はここから、上記の手順でほぼ問題なく動画がダウンロードできますが、面倒なのは複数ダウンロードしたい時
普通にいけば、複数コマンドプロンプトを開けてやればいいのですが、その分ネットワークの帯域を食うことになる
自宅なので問題ないといえばそれまでですが、他のダウンロード等も行っているので、同時に一気はさけたい
また、複数のコマンドプロンプトを表示させて・・・って面倒くさい
あと、これは問題というかなんというか、上記の手順は全てWindowsです。目的のない限りWindowsはプライベートで使う気がないので
このためにWindowsで作業も面倒くさい、サーバー群のなかのWindows機にやらせばいいけど
いちいち遠隔操作でちまちまダウンロード指示なんて、毎日メンドクセー!!

ということで、サクッとMacで解析までやって、テキストに保存
でもってWindows側でそれを見て、1個づつダウンロードさせてしまおう

GyaoのURLから解析も含めてやろうかとも思ったが、まず面倒くさい
そして、この方法が永遠に保障されるわけではない(保障されるのならばやってもいいけど)ので
とりあえず、ある程度の作業が楽になればいいレベルとして、解析までは手動で、ダウンロードはオートで勝手にやらせておくこととした。
まぁ〜ほとんど現状のスクリプト等の流用でできる範疇なので簡単ですし、やっとくと楽ですし

実際に作る作業時間は30分もかかっていないと思います。
それよりか、事前の確認資料を書く方に時間がかかった気がします。

要件

・自動化を行うのはダウンロード作業のみとする
・ダウンロードにはffmpegを使用する(方式に変更なし)
・Windows環境での実行とし、バッチ(BAT)での動作としたい。現状その形式が多いから
・実行はタスクスケジュールマネジャーで実施 現状は1日2回(12時、20時)の予定、こちらも上記と同様多いから
→初期段階は手動キックとする。必要であればタスク化します。
・同時ダウンロードは1つとする。
(2つ以上にしてもいいけど制御が面倒くさいのと、裏でオートで行われるなら時間はある程度どうでもいいから)

ちなみに、それ以外の作業
・URL解析し、ストリーム用URLを作成するのは外部サイトを利用する
http://kmake.net/gyaommsurl/
・取得したURLはテキスト形式で保存
・所定場所への保存

補足事項
・ffmpegは64bit版を使用
・実装は作業フォルダ配下にffmフォルダ内に実装
・バッチファイルも同じく作業フォルダ内とする
・取得用URL入りテキストファイルは¥¥ファイルサーバ¥gyao¥gyao.txtとする
(GyaoGyaoうるさい気がする!!)

バッチファイルの流れ
・排他制御を実施、実行時に制御ファイルのチェク、作成を行う→ログファイルとして扱う
・制御ファイルはローカルとする
・作業ドライブはS:¥ドライブとする?いいのか?
・ファイル名は固定gyao.txt
・Gyao.txtファイルの有無確認、なければ終了
・ファイル内が空の場合終了とする。→ログへの書き出しはせずに終了
・ファイル内にデータがあれば、ローカルにコピーする。
・Gyao.txtファイルを空にする
・コピーしたファイルをShift-JISに変換

・ファイルを1行づつ読み込み
・保存先をS:¥gyaoへ変更
・ダウンロード C:¥作業フォルダ¥ffm¥ffmpeg.exe copy*****
・EOFまで繰り返す


・ダウンロード完了後にファイルサーバー¥へ移動させる

・コピーした。対象ファイル(Gyao.txt)を削除する
・ログファイル(排他制御ファイル)を、サーバーへ送り終了

ざっくりですが、以上みたいな感じで作成しました。
文字変換あたりが、MacとWindowsその他OSとのやりとりをしている環境にあるので
以外とキーになってきたりしますね。そのままだと、文字化けして正常に機能しない場合があります。
実際のスクリプトはお見せできるほど綺麗なものではないので、ご勘弁を

しかし、上記のようにある程度先に仕様書的なものを作成しておくと便利というか楽です。
作業中に目的を忘れて、違う方向へ進むことの回避や、離席した時など、一旦離れたときでも
すぐに復帰できるので、楽チンです。今回のケースぐらいであれば、作らなくてもいいかもしれませんが
サクッと適当に作って、あとでブラックボックス化した時が面倒くさいので、ここら辺の資料を残しておくと
助かることが多々あります。仕事のレベルほど精密なものは必要ないですが
自宅の環境や設定、こう言ったプログラミング系の仕様書を作っておくと、トラブル発生時に役立ちますので
お勧めします。

上記のスクリプトで、とりあえずテキストに解析したコマンド群を流し込んでおけば
あとは、ゆっくりとダウンロードしてくれます。ダウンロード等にCPUの能力はほとんど必要ない
10年以上むかしのPCであれば問題になるかもしれませんけどね。なので、とりあえずエンコード機かメール・ウィルスチェック機にでも
適当に放り込んで、おいて、空いてる時にキックするだけでOK

ちなみにいずれ話すことになると思いますが
自分で作成したツールは1つのフォルダにパッケージングしていて、それをコピーすれば、それだけで動くようになっています。
エンコードツールも同じです。なので、友達のPCや家族のPCで空きができたり、エンコードを試してみたい場合でも
自宅のネットワークに繋がっている状態であれば、フォルダ1つコピーするだけですぐにエンコードマシンをして稼働させることが可能です。
また、少してを加えることでファイル単位になりますが、エンコードの分散処理も可能になる状態にしてあります。
初期は低スペックのPCしかなかったので、やむなくファイル単位での分散処理をしていたのを、エンコード専用マシンを新調したので
変更した状態です。(振り分け処理が、振り分け箇所を1つにしている状態)

はい、今回は以上です。
結構どうでもいい話で終わった気もしますが、そいう日も多いので良しとしておきましょう
ではでは

0 件のコメント:

コメントを投稿