サーバ」カテゴリーアーカイブ

niconico + php = infinity。

可能性は無限大。とでも。

 

最近、ニコニコ動画側で仕様変更ありまくり。つっても変更されたのはちょっと前の話なんだけど。
FLVファイルDLにCookieが必要になったのに加え、最近ではログインページがSSLで通信せにゃならんようになりました。
https://で始まるURLはHSPでアクセスできない。ログインできない。

そこで、ファイルDLはHSPの仕事だったのを変更し、ファイルDLまでPHPで行うことに。
ファイル全体を一度メモリに読み込んでるっぽいのが嫌だけども。この際しゃーない。
(無理やり部分GET(http_range)を繰り返してもいいだろうけど、それもスマートじゃないしな。

っちゅーわけで今、PHPいじり中。
PHPだと現在どこまでDLしたか表示とかできんのかな。できんだろうけど。
ちょっと不都合はあるけども、いじるのが楽しい。インタプリタは即トライ&エラーができて便利だわ。
とにかく自動でランキング取得からFLVダウンロードまではできた。

あとはそれを変換君に渡すだけ。あとちょっとだ。

ubicast Blogger。

ってソフトを初めて使ってみる・・・。

要はブログを書くためのアプリケーション。HTMLベースのページで書くんじゃないから不思議な感じ・・・。

MovableTypeも対応(まぁ当たり前か。)しているので、早速使ってみることにする。今はそのアプリから書いてみてる。

定型句の挿入もあって、なかなか便利かもしれやん。

さて、投稿ボタンをポチっとな・・・。

続きを読む

HTTP。

HTTP通信が面白い。
TCP/IP上で成り立つHTTPが面白い。
GETとPOSTの違いくらいは知ってたつもりだったけど、実際にソケット通信でPOSTするプログラム書いてみたらその違いに驚いた。
クライアントがまるでサーバ。Content-Type:て。Content-Length:て。
あとHost:の扱い方とか。ヴァーチャルサーバに対応してるかどうかはここで決まるものなのな。
こうしてみてみると、HTTPって後から無理やり追加していった感がある。元々はHost:なんてなかったのかも。
あとHEADとか。HEADリクエストを送られても、適当にGETと同じ処理をしてたPHPスクリプトがあったりした。アホだ。
HTTP/1.1 206 Partial Contentってのももう見慣れたもの。Range対応が最初はあんなに難しいと思ってたのに。
ま、全部ニコニコに振り回された結果だわ。動画をDLできるところまではきたけど、レスポンスの中からFLVデータだけを取り出すことにちょっとつまづいてる。

Kanonのファンブックについてた『うぐぅ』CDはひたすら『うぐぅ』。
『うぐぅ、ひどいよ』とか、うぐぅの後の言葉も入れて欲しかった。
ひたすら86個のうぐぅが聴けました。ううむ・・・。

niconico(相手も必死編)。

久しぶりにニコニコの続き。
最近、自動エンコードの調子が悪く、多くのFLVが取得時に503 Server Unavailableを返しやがる。
その数も段々と増えてきて、最初は10個中1,2個だったのが7個にまで増えた。
動画のURLが分かってるのに、どうしても503エラーばかりでDLできない。
どうしたものかと思ってログインしながらそのURLを開いてみたりして気付いた。FLV取得時にクッキーが必要になったんだ。

今までの仕様だと、動画のURLさえ分かってしまえばダウンローダなどで簡単にDLできた。その証拠っちゅーと変かもしれないが、ニコニコのURLを入力すれば動画本体のリンクを返してくれるWebサービス(スクリプト)もあった。
つまりはこれ対策なのだろうね。FLV本体のURL+FlowPlayerなんかで再生されちゃたまらんもんね。会員でもないのに動画を置いてるサーバのリソースだけ食いまくって。
んで、ログイン状態を示すクッキーを渡してやればいいだけだと思っていたらまだ手の込んだ制限があった。
http://www.nicovideo.jp/watch/sm561422
たとえばこんなURL。
この場合、
http://smile-clb31.nicovideo.jp/smile?v=561422.34896
が動画本体のURLなのだが、ここにアクセスするだけじゃ503を返しよります。
ここで鍵となるのは動画再生履歴。履歴の管理はすべてクッキーで、クッキーに再生した動画のID、日時が記録されてます。
この履歴の追加されるタイミングは、最初に示したURLに接続したとき。そのレスポンスでSet-Cookieが返ってきます。
つまりは、
http://www.nicovideo.jp/watch/sm561422 に接続→再生履歴にsm561422追加→動画本体のURL http://smile-clb31.nicovideo.jp/smile?v=561422.34896 に接続→履歴にsm561422があるかチェック→あればFLVデータを返し、なければ503
これなんですよね。めんどくせぇ。
対応させたいけどちょっとやる気を殺ぐような仕様になっとります。。。

myドメイン。

ドメインを取りたい。

よそ様のサービスをいつまでも使ってるんじゃなくて自分でドメインをとりたい。
前からちょくちょく言っていたことではあるが、やっぱ憧れがあったりする。
今までに欲しいと思ったドメインはいくつかあるが、
ff7.acは年間8000円もするのがもったいない気がするし、
0x00.net(com)は確か誰かが取得済み。
ドメイン取るからには短いものにしたいけど、短ければそれだけ取得済みの可能性が高いし。
DDNSでも (好きな文字).○○.jp とか短いのもあるけど、やっぱ (好きな文字).net あたりが欲しい。
ケータイでのURL入力を考えると、.jpは打ちやすいのが良だし、金銭的に考えると.net、.comはお安いので良。

niconico(解決編)。

続きだぜヒャッホーイ。

エンコードに失敗するのをなんとか解決。ビデオが認識されてないから映像周りばかり調べてたけど、リモートデスクトップでも、VNCでもなく直接サーバをいじってみて気づいた。サウンドデバイスが1つもねぇよ。
サーバ用途だとサウンドはいらないだろという勝手な判断で、オンボードのAC97をDisableにしてたのよね。BIOSからDisableにしてたのでWindowsからはまったく認識されてない状態。
それをEnableに変えて起動するだけでドライバは読み込んでくれて、無事エンコード可能に!
しっかし、サウンドデバイスがないからってビデオ部分が読めなくなるとはこれいかに。

と思った瞬間にニコニコ動画のログイン制限ががが。ログイン可能は500000番までに。
負荷が高くなりすぎてサーバが飛んだとかなんとか。そのあと1時50分くらいに888888番までになったけども。

続きを読む

niconico(挫折編)。

前のエントリの続き。

ランキング取得、FLVダウンロード、MP4変換を自動化することができない。サーバ単体で完結させることができない。
MP4変換で失敗する。しかも原因がイマイチ分からないときた。
リモートデスクトップ(以下RD)で接続してる状態でエンコードさせると成功し、接続してないと失敗する。
ffmpegが吐くログを見る限りでは、どうも動画ファイルのビデオ部分を認識してない模様。
普通にエンコードするとビデオ+オーディオでMP4に変換するのだが、rd接続されてない状態だとソースファイルにオーディオしか含まれてないように認識されてる。
そもそもFLVの扱いが特殊すぎ。ffmpegで変換するっていっても、avisynth経由だし、さらにdirectshow経由だし。
もしかしてDirectShowってVGAの性能に超依存?サーバはオンボードビデオ使ってるし。RD接続すると別のVGAに差し替えられたような扱いになるしね。ちなみにVNC接続だとエンコード失敗。
それとももしかしてDirectX8.1が古すぎ?もう何がなんだか分からない。

020070609_00085.png
020070609_00086.png
うまくいけば、自動でここまでできるはずなんだが・・・。

niconico。

ニコニコ動画、ご存知ですかー っと。
知ってても登録してないって人も多いかもねぇ。ログインのいるものなんて面倒だし。
ところが最近ちょっと気になりだしたわけです。

2chを見てると、ニコニコ動画のランキング10位くらいまでをPSP用にエンコードして公開してるgeocitiesのサイトが出てきて。ジオってことはCGIが動かん=オール手動更新ってわけで。

それなら自分はオール自動でやってやろうじゃねーかってことでPHPで書き起こしてみてる。
PHPはあんまりいじったことないけど。一から書いたのはRSSチャンネルのときだけ。今回が2回目。
それでもPerlと共通部分もあるので、多々つまづきながらも書いてみる。

まずログインが必要なので、ログインフォームにPOSTを送らなくては。(実際にはGETで十分だけど、できるだけ本家にあわせたい。
ログインしただけではクッキーが保存されてなくて、その次のランキングページのリクエストで弾かれた。
PHPでクッキーをどうにか取得して、次のリクエストで内容を送信せねばならない。とっても面倒。
Proxomitronを使いながら通信内容を見て、クッキーの受信を確認しながらテスト。
なんとかうまくいき、ランキングページ取得に成功。そのあとは正規表現でビデオのID、タイトルとサムネイルのURLを取得。
ビデオのIDからさらに別のページにリクエストを送り、返ってきたテキストデータの中から動画本体のURLを取得。
サムネイルも一応全て保存し、動画のDLまでは自動化。今作ってるのはそれをエンコードする部分。
ここでも携帯動画変換君にお世話になってます。ffmpeg最強。FrontEndのおかげで簡単にジョブを追加できるしね。
エンコードしたら公開ページでちゃんとリンクも張ってくれる。ここはほぼ完成。
作ってないのは動画を変換君に渡すところだけ。ちょろっと時間かければすぐにできそうだけども、少し飽きてきたw
完成すれば便利なはずなのに、完成間近でこのやる気のなさ。どうしたものか。

phpupdate。

サーバのPHPをアップデート。今までPHP4(詳しくは覚えてない)だったけど、使いたいエクステンションが5以降対応だったのでPHP 5.2.2にアップデート。
PHPのアップデートは初めてだったけどうまくいってよかった。
5は4とは微妙にフォルダ構成違うし、正直さっぱりだったが。

使いたかったエクステンションはphp_id3.dll。
PSPのRSSチャンネルのため、今までperlで書いてたスクリプトを丸々PHPで書き直そうとした。
PHPのほうが動作が軽いみたいだからね。
ま、なんとかHTTP_RANGEの要求も処理できるようになったけど、逆に今まで取得できてたMP3の再生時間、ビットレート、周波数が取得できなくなったり。php_id3じゃ無理なのかよ。

今度はFlashVideo(FLV)関連にちょっと惹かれてる。。
アップロードした動画を自動エンコードでFlashストリーミング可能にするって・・・なんかよさげ。

神戸(というよりその道中)。

神戸行ったこと書くっつったのに忘れてしまいそうなので無理やり適当に書いてみる。
父さんが神戸に単身赴任ということで、ちょっくらマンションにおじゃましに行く。
神戸行ったっつっても所詮マンションに行っただけなのでポートピアランドなどは割愛。結局買い物の話だけになりそうな・・・。

当然難波駅を通るので日本橋、と言いたいところだけど数日前に友達と行ってたので梅田でヨドバシへ。
大きな店だから流石に物が多い。特に欲しいものとかはなかったけども、
http://www2.elecom.co.jp/peripheral/gamepad/jc-ps303u/
これ買った。2780円。
PS用の変換ケーブルは持ってたし、GC用も持ってたけど、PS2に対応してないのよね。しかもGC用は認識悪すぎて使い物にならなかった。
改めて買いなおしてみてよかったかな。しっかり認識しとる。
ここでもAIR関連を探してみたけど流石にないね。古いか。

移動は電車なので音楽聴きまくる。普段ならAIR聴いて終わるのが、時間たっぷりのおかげで他のも聴ける。
っつーかね、マンション近くの店で炊飯器買って手に下げてタクシーに乗り込む自分と母さんってどうかと思うのよね。もちろん箱には入っているけど、炊飯器て。
いつの間にか父さんのところにもeo光。マンションタイプってグローバルIPもらえるのか。ずっとプライベートIPしかもらえないのかと思ってた。サーバ置けるじゃん。
んで以前渡したルータがそこに。設定を自宅のとまったく一緒にして、ネットを楽にできるようにしてきた。PSPって無線LANクライアントとしてちょこっとしたテストにぴったりだな。PCだと起動がめんどいし、PDAは持ってないし。

神戸でソフマップにも行ったんだけど、あそこのソフマップはすげぇな!濃いw

流石に都会の店だけあって、中古の量も半端ない。AIR BD-BOXが中古2万で売ってたぜ。買えるけど買えん。BDプレイヤーが買えん。誰かPS3くれ。
それにDVD版も中古でほぼ揃ってたしな。Prelude、本編(1巻以外)、IN SUMMER、MEMORIES。1巻は難波BOOKOFFで売ってたからそろえることもできたんだな。と思ったが帰りにBOOKOFFに寄ってみると1巻だけなくなってたwま、そろえるとなるとそれこそ中古でも万札が飛ぶわけだが。
Kanonとか堂々デカイテレビで流してたしね。発売前に配られた店頭宣伝用ディスクかな。こいつだけで1コーナー築いてたしね。
パソコンのコーナー見てたら30インチのモニターでAIR BD版に収録されてるオープニングロングバージョン流してた。。いやもうなぜ今さらAIRをこんなに流してるのかと。うれしいんだけどさ。このOPとnVidia(ビデオボードなどのメーカー)の宣伝動画を交互に再生してた。
結論:神戸のソフマップはある意味すげぇ。(何

神戸帰りにまた日本橋に寄ったけど、時間がそんなにないのでちゃちゃっと。
020070509_00075.jpg
んでこれ買うた。また買っちまいやがった。
サーバ用。今まではCeleronの1.7GHz(Willamette)使ってたけど、発熱がそれなりに・・・。
Wikipediaに載ってた
だからこの機会にちょっとしたグレードアップも兼ねて ということで2.5GHz(Northwood)買ってきた。
シリコングリス買うの忘れちゃって、冷却シールが残ってるからそのままでいいかと思って動かしてみたらなんか臭いとのこと。火吹かんでよかった・・・。いそいで停止して、偶然にも家に転がってたシリコングリスを塗ってなんとか解決。今は快適に動いとります。家んなか探せばシリコングリスが出てくるウチってどうなのよ。
これからIN SUMMERだし!もし発熱がひどいようならクロックダウンですごせばいいしね。ちょっとくらい落としたところで1.7GHzよりはいいんじゃないだろうか。
サーバで音楽エンコードさせたりすることがあるから、ちょっとでもCPUが速いといいもんさ。
エンコードだけじゃなくて、PerlでもPHPでも、少しでも反応がよくなってるといいな。

こんなもんで終了。結局買い物日記。だめだこりゃってか?