m3u8の動画を保存する

某オンライン動画をオフラインでも見たいなーということでローカルに保存する。
動画のページを辿るとJavaScriptやらなんやらで呼び出されていて、htmlソースを見てもファイルの実態の在処はわからない。
Google Chromeのデベロッパーツールで辿ると拡張子.m3u8が動画の指定ファイルのようだ。

m3u8をダウンロードしてみると、中身はテキストで、さらに細かくファイルが指定されている。プレイリストファイルのutf8ということでm3u8という拡張子になっているようだ。
これを全部ダウンロードしろというのか、DL後の結合も面倒だなと思っていたら、ffmpegでできるという。

ffmpeg -i (m3u8のURL) -movflags faststart -c copy (出力ファイル名.ts)
(参考)ffmpegでm3u8ファイル(HLS)から動画をダウンロードして保存するコマンド – 動かざることバグの如し

ffmpegがない場合はVLCでもできるようだが(ctrl+Rでメディアを開く→ネットワーク、URLにm3u8を入れて保存)、バッチファイル的に書いて連続実行させたいのでffmpegがラクだった。

これで飛行機や新幹線の移動中にも回線に依存しないで済むぞ…

sambaがアップデートしたら動かなくなったので修復

CentOS7でずいぶん触ってなかったサーバーをyum updateしたらsambaが止まってしまった。
systemctl status smbで見てみると、WBCLIENT_0.13が見つからないとか、バージョン違いが原因のようだ。
/etc/samba/smb.conf をコピー退避してから、sambaを入れ直す。
yum remove samba
yum install samba
systemctl start smb
systemctl status smb
で起動確認。
configを書き戻してもそのまま起動した。
たまにライブラリ違いみたいなのが出てくるなぁ。

nginxでalias下のfastcgiへのパスの渡し方

nginx + php-fpm の環境。
最近はドメインのトップからWordpressのようなシステムを置くことが増えたので
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
で良かったのですが、
URI上の一部分を別のディレクトリに置いていたりするパターンでは、rootの定義し直しではなくてaliasを使ったほうがよさげらしい。
しかしaliasにしてしまうと不都合もあるようで

server {
  server_name example.com;
  listen 80;
  root /var/www/example.com/;
  location /somepath/ {
    alias /var/www/somepath/;
    index index.php index.html;
    location ~ \.php$ {
      fastcgi_pass unix:/run/php-fpm/www.sock;
      fastcgi_index index.php;
      # fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      fastcgi_param SCRIPT_FILENAME $request_filename;
      fastcgi_param PATH_INFO $fastcgi_path_info;
      include fastcgi_params;
    }
  }
}

example.com/somepath/hoge.php をリクエストすると
$document_root$fastcgi_script_nameの場合 /var/www/somepath//hoge.php が渡されちゃう。スラッシュが2重になってしまうのでalias下では使えないことに。
$request_filenameの場合 /var/www/somepath/hoge.phpが渡る。こちらは望み通りの結果。

じゃあalias下じゃなくても$request_filename使えば良いのでは?と思って試した結果、
example.com/fuga.php のリクエストに対してどちらも /var/www/example.com/fuga.php となった。

大本がどこからのコピペだったか忘れたが、$request_filenameで良さそうだ。ただしrootとかaliasとかindexがしっかり定義されている文脈に限る。
rootのときは最後の/を調整してくれるけどaliasではしてくれないあたりからの違いってことか

参考
落とし穴とよくある間違い | NGINX 日本語訳
nginx $document_root$fastcgi_script_name と $request_filename の違い – Qiita

#TETRIS99 でチケット999枚を達成!その次はどうなる

2019年12月末から始めたTETRIS99のチケットためるチャレンジ、昨日無事に999枚を達成しました!
で、その後はどうなるの、999枚でカウンターストップなのか、4桁に繰り上がってしまうのか。

そんなわけでまだしばらくゆるゆる続けたいと思います。

幻の国際線エリア!?羽田空港第2ターミナル

2020年3月29日から、羽田空港(HND)では第2ターミナルにも国際線エリアがオープンしましたが、COVID-19の影響で国内線も国際線も欠航、激減。4月11日から国際線エリアはクローズしてしまいました。再オープンは未定だそうです。

3月~5月に仕事の移動で羽田空港を利用した際に撮った写真と映像があるのでまとめてみました。いまのところ幻のエリアです…再オープン待ってます。