なんか検索しても見つからなかったので.備忘録です.
皆さんおなじみTwiDropperにも以下のように書かれています:
著作権者の許可なくアップロードされた動画をダウンロードすることは法律で禁じられています。違法ダウンロードを行ってはいけません。
違法なダウンロードをしてはいけません.
モチベーション
親しい人から送ってもらった動画やボイスメッセージ,(もちろん相手の許可を受けた上で)残しておきたいですよね?
しかしTwiDropperでダウンロードできるのはDM内の画像と動画だけで,ボイスメッセージは未対応なご様子.検索かけても画面録画を使えなどというエンジニアにとってはナンセンスな方法しか表示されなかったので,じゃあ作るかと.
余談:TwiterのDMのボイスメッセージ?
iPhoneやAndoroidのTwitterアプリから利用できる機能で,DM画面(下図)における,黄色い矢印が指すアイコンをタップすると送れます.
送ったボイスメッセージは▶ 0:05
と示されているもので,タップすると聞けます.
手法
手続きは以下です:
- PCのchromeでTwitterの当該DMを開く
- chromeのデベロッパツールを開き,Networkタブを準備する
- 動画 or ボイスメッセージを再生し,
m3u8
を見つける - ffmpegで
m3u8
を.mp4に変換する
各ステップの詳細は以下です.また以降では,ボイスメッセージをダウンロードする条件で話を進めますが,動画でも全く同じ手続きでダウンロードすることが可能です.
PCのchromeでTwitterの当該DMを開く
さあ開いてください.2022/09/23現在,以下のような画面です.以下の画面はボイスメッセージを受け取ったアカウントの画面です.
chromeのデベロッパツールを開き,Networkタブを準備する
おなじく開いてください.WinであれはCtrl + Shift + I
ですね.皆さんおなじみです.
ボイスメッセージを再生し,m3u8
を見つける
以下の図,黄色矢印の①,②,③に従ってください.詳細な工程は図の以下のテキストで解説します.
まず①で,ボイスメッセージを再生します.どうやらボイスメッセージはストリーミング再生されるようですので,とかく再生して,音声のファイルを受け取っておきます.
赤矢印が示す場所をうまく使うと,ダウンロードされたファイルがわかりやすくなったりならなかったりします.
次に②で,表示するファイルがm3u8
だけになるようにフィルタリングしておきます.
m3u8
はストリーミングされたメディアのプレイリストのテキストファイルのようです.詳細興味ある方は適宜検索してください.
最後に③で,m3u8
ファイルを選び,そのURLをコピーします.ファイルを右クリックし,Copy -> Copy link address
で,当該m3u8
のURLをクリップボードに残しておいてください.
m3u8
ファイルはいくつか表示される可能性があります.どれかが当たりでどれかが外れです.どちらを選んでも音声はダウンロードできるみたいですが,最終的に.mp4
にした時の仕上がり?が良いものと悪いものがあるっぽいです.まあ片っ端からダウンロードして様子を見ましょう.
ffmpegでm3u8
を.mp4に変換する
以下のスクリプトでffmpeg経由でボイスメッセージをダウンロードし,.mp4
として保存することが可能です.以下はPowershellを使用していますが,お好きなシェルでいい感じにしてください.
$m3u8 = "<さきほどコピーしたURL>"
& ffmepg -i $m3u8 -movflags faststart -c copy -bsf:a aac_adtstoasc output.mp4
余談ですが,どうやら,ボイスメッセージは映像としてストリーミングされているようです.なので映像がファイルとして残ります.
ダウンロードするスクリプトは以下のエントリを参考にしました.というかそのままです.
おわりに
仕組みがわかれば意外と簡単です.
繰り返しですが,くれぐれも違法なダウンロードはしないでください.あとこれTwitterの利用規約に反してないですよね?規約違反をしたいわけではないので,その場合は誰か教えてください.
追記@2023/04/30
DMで送られた動画に対しても同じ手続きでダウンロードができることを確認できたため,タイトルや一部文章を変更しました.