「Frequently Asked Questions」、すなわち「頻繁に尋ねられる質問」です。
といっても実際に訊かれたと言うより、ありがち/ありそうな質問類を載せています。
一般人にはFAQって言っても通じないらしいので注意(自戒も込めて)
そもそも「メタ」とは、
メタ(meta-)とは、「高次な―」「超―」「―間の」「―を含んだ」「―の後ろの」等の意味の接頭語。ギリシャ語から。
という意味で、詳しくは上記リンクを読んでもらうとして、要は「このFAQそのものに関する質問」という意味です。
Flash☆Video☆Starのことです。
ニコニコ$の時は「$」って略してました。安直ですね。
入手できたデータの種類によります。
ただ、これくらいのことは自分で調べられるようになっている方が後々楽できます。
それっぽいキーワード(ここでは「flv」とか「swf」とかと「再生」とかを組み合わせてみるとか)で、
GoogleやYahoo!で検索すればよろしいかと。
2008/03/07から、全自動取得できるようになりました。
一応、取得失敗した時のために過去の手法も利用できます。
全自動で取得するためにはサーバーがログインを行う必要があるからで、本試験サーバーを
家庭内ネットワークの一部に置いている身としては「何かあった場合に自分のアカウントがBANされるのが嫌」という
至極私的な理由によってログインセッションを取得せずに実装できる方法をとっています。
また、「ユーザー自身のID/パスワードを入力させ、サーバーサイドでその情報を使ってログインする」という
実装も技術的には可能ですが、以下の点から実装すべきではない/する必要がないものと考えます。
ちなみに、ログインシステムの変更があってもまったく影響を受けないと言う利点もあります。
事実、07年8月末に行われたログインシステムの大改修の際、Flash☆Video☆Starの前身である
ニコニコ$は一切の修正を行っていませんし、それ以降のあまたのサーバーサイドの仕様変更に対しても
何ら変更を加えることなく現在(2009年2月)に至るまで問題なく使用できています。
2008/03/07から、全自動取得できるようになり、「多少の手順」も不要になりました。
以下、過去の手法を利用する場合の説明なのであまり読む必要は無いです。
具体的には、「ログインセッションを持っているユーザー側でsmileAPI的なものにアクセスしてもらい、
得られた情報を元にFLVのURLを探し出す作業」の一部を手作業で手伝ってもらっています。
smileAPI的なものから得られる文字列にFLVのURLが含まれているのですがURLエンコードされているので、
それをちゃんと利用できるURLに変換する作業を行っているわけです。
変換はJavaScriptで行われており、サーバーとの通信はしていません。必要ないので。
自動取得に失敗したのかもしれません。
従来手法を使う場合は今でもログインが必要です。
SMILEVIDEOの動画探索は、ニコニコ動画へログインしていないと行うことができません。
ログインしていない場合、FLVの存在するURLもデータに出力されないため、ニコニコ動画にログインしてから
再度本プログラムをお試しください。
なお、「ログインしている状態でのみ得られる動画に関係する情報」が必要なだけで、ログイン情報自体は
本プログラムでは必要ありません。
再生するときに、ニコニコ動画のサーバーが動画を取得するためのクッキーを送信するからです。
これが無いと、403 Forbidden(アクセス権限が無いよ)と表示されて、動画にアクセスできません。
次の項目もご覧ください。
いくつか理由が考えられます。
これらに普遍的に対応するには、以下をお試しください。
他に、各ブラウザのキャッシュに対する挙動の差などにより正常にFLVを得られないケースがある…かもしれません。
IEでなら上記手順を守ることでほぼ確実にFLVの実データを入手できます。
個人的にはアカウントを作成することを薦めますが、どうしても嫌ならいろいろ手を尽くしてみればいいかと。
2008/03/07から、OFFでも問題なくなりました。
従来手法を使う場合のみJavaScriptをONにする必要があります。
以上お好きな方をどうぞ。以下めんどくさい方の説明。
smileAPI的なものからは、以下のような文字列が得られます。※ここでは架空のものにしています。
thread_id=1122334455&l=320&url=http%3A%2F%2Fsmilevideoserver.nicovideo.jp%2Fsmile%3Fv%3D0.12345&link=http%3A%2F%2Fwww.smilevideo.jp%2Fview%2F0%2F0&ms=http%3A%2F%2Fsmilemsgserver.nicovideo.jp%2Fapi%2F&user_id=0&is_premium=0&nickname=example&time=1122334455&done=true&ng_rv=3
ここにはいろいろ面白い情報が含まれていますが、今必要なのはFLVのURLですね。
上の文字列は、すべて「名前=値」という形式で表記され、それが&で区切られています。
で、&を改行に置換するとこんな感じになります。
thread_id=1122334455
l=320
url=http%3A%2F%2Fsmilevideoserver.nicovideo.jp%2Fsmile%3Fv%3D0.12345
link=http%3A%2F%2Fwww.smilevideo.jp%2Fview%2F0%2F0
ms=http%3A%2F%2Fsmilemsgserver.nicovideo.jp%2Fapi%2F
user_id=0
is_premium=0
nickname=example
time=1122334455
done=true
ng_rv=3
FLVは、url以降に書かれているURLに存在します。ここでは
http%3A%2F%2Fsmilevideoserver.nicovideo.jp%2Fsmile%3Fv%3D0.12345
ですね。
URLに見えませんか?
では、「URLデコード」とかで検索してみてください。
…という作業や知識を、JavaScriptをONにしておくだけで一切使わずに済みます。
ニコニコ動画で使われているURLや動画管理IDにはいくつか種類があり、便宜上呼び分けてます。
ちなみに、システムの仕様はその大半が非公開であるため、必要そうな項目それぞれに当方で勝手に名前をつけてます。
配信サイトによって扱いが異なりますが、おおむね以下のパターンのどれかです。
実装上は一番一般的なFLV1を優先して表示するようになっており、たいていのサイトでは複数のURLが表示されたときに
一番下に出てくるURLが一番高画質である可能性が高いです。
なお、高画質動画は全てのサイトで提供されているわけではなく、また対応サイトでも
動画によって用意されていない場合もあるので、必ずしも表示されたURLが有効であるとは限りません。
「☆から配信サイトへの情報取得要求を拒否された」「情報取得には成功したが、動画URLを取得するのに必要な情報が含まれていない」
などの場合に表示されます。
ここだけの話、似たようなエラーメッセージでも、句読点の位置などが違えば細かいエラー内容は異なっていたりします。この辺はソースコード見ると分かります。
これらエラーが発生したことは記録され、当方で確認することが出来るので、数日ほど待っていただければ
直っているかもしれません。
基本的に「普通のブラウザで普通にアクセスした場合」よりも大きな負荷がかかることは無いはずです。
サイトによって異なりますが、APIやそれに近いものが用意されていて、そこから動画データのURLを取得できる場合はそれを使い、
そうでない場合は動画配信ページのHTMLなどから動画URLを探します。
取得したデータはキャッシュされ、短時間に連続して同じ動画へのリクエストがあった場合は
Flash☆Video☆Star内で全ての処理が完結します。
そして、実際に動画をダウンロードする場合ですが、上で挙げているように再生画面で
すでにダウンロードが完了していればブラウザから発生するアクセスは、簡単に言えば
「(動画)データの更新はありますか?」(HTTPの条件付GET)
と尋ねることだけで、当然消去されない限り動画データは変化しないのでサーバーからは
「変わってねーよ」(304 Not Modified/更新なし)
と返事が来ます。よって結局キャッシュのデータをフォルダ間コピーしてるのとほとんど同じ状況となり、
配信サーバー側にはほとんど負荷はかからないことになります。
まあそんなサービスの意味は?って訊かれるとつらいですが…
再生画面でダウンロードし終わった後に☆を使うことを想定していることもあり、URLそのものを
簡単に手間なく他所に負担をかけずに取得できることを目標としています。
もともとニコニコ$についていた文面なので今となってはちょっと微妙なところがあるのですが、
当時は「ニコニコ動画のアカウント情報を$に渡すことなく」、という意味で使用していました。
もちろん現在でも当方はアカウント情報を受け取る必要はありませんし、なくても十分機能を発揮できます。
他の動画サービスについても、アカウント情報やログイン情報を当方に知らせることなく
機能を利用することが出来ます。たとえば、YouTubeの動画を取得するのにYouTubeのアカウントは要らない、ということです。
ただし、インターネット経由でのサービスの関係上、完全な匿名にはなりえません。
以下のような情報は当サイト、および動画配信サイト側に送信されてしまいます。
なお、これらの情報は一般的なウェブサイトでも取得できる情報です。
つまり、やろうとおもえばどのIPアドレスの人がどの動画に関して☆を使ったか
追跡できてしまうわけですが、当方ではそのような利用方法は一切しないことを宣言します。