これは何?
こういうツイートを送信して,そのメディアの短縮URLを習得するシェルスクリプトです.GitHub にコードを置きました.
上のツイートの動画へのURLは,これ↓.
https://t.co/ngmigsBV5u
スクリプト
#!/bin/bash # Nintendo Playthrough のダイジェストを Twitter に載せるスクリプト # [FILE PATH] と [FILE NAME] を引数に取る # 動画をアップロード.成功するまで繰り返す until log=`sh PATH_TO_KOTORIOTOKO/tweet.sh -f $1 $2`;do sleep 1;done # "=" で区切って4番目を取り出す # log にはこんなのが入ってる想定: # mid=1192595741362905093 at=2019/11/08 11:17:28 id=1192596963826339840 id=`echo $log | cut -d = -f4` # make twimgurl.txt if not exit touch ~/Downloads/np1m.txt # make GET param twName="YOUR TWITTER SCREEN NAME" prefix="https://publish.twitter.com/oembed?url=https://twitter.com/"$twName"/status/" param=$prefix$id # 埋め込みコードのHTML部だけを取得 # jq で要素 "html" を取得 # recode でHTMLエンティティを変換 # sed で \ を削除 xml=`GET $param | jq ".html" | recode html | sed 's:\\\\::g'` # 動画のURLを取得してファイルに書き込む # parsrx でXMLを解析 echo $xml | parsrx | grep -m1 href | cut -d " " -f 2 >>~/Downloads/np1m.txt exit 0
使い方
こんな感じ.np1m という名前でパスの通った場所に置いている想定です.
$ np1m /PATH/TO/VIDEO/FILE.mp4 TWEET_STATUS
1つめの引数が動画ファイルへのファイルパスで,2つ目の引数がツイート本文.これを実行すると ~/Downloads ディレクトリに np1m というテキストファイルが生成されて,その中に動画のURLが書き込まれます!
依存
たぶんこれら.他はUbuntuにデフォルトで入ってる機能だと思う…
GETjq($ sudo apt install jq)recode($ sudo apt install recode)parsrxkotoriotoko
GET について
GET は perl-libwww-perl というパッケージに含まれてる.Ubuntu だと GET はプリインストールのコマンドだったと思うんだけど,Fedora には入ってなかった.端末で GET と入力すると「入ってないからインストールする?」と聞いてくれるので,そうやってインストールした.
$ GET bash: GET: command not found... Install package 'perl-libwww-perl' to provide command 'GET'? [N/y]
ただ,これでインストールしても不十分 (かもしれない).GET に https の URL を指定すると「https を使うには別のツール (LWP::Protocol::https モジュール) が要るよ」と言われる.
$ GET [URL starts from https]
LWP will support https URLs if the LWP::Protocol::https module is installed.
LWP::Protocol::https のインストール方法はこのブログを参考にした.要は単にソースを落としてきて手動でインストールするだけ.GitHub にも LWP::Protocol::https のコードがあるけど,このブログは CPAN (Conprehensive Perl Archive Netork) から落としてるね.
$ wget https://search.cpan.org/CPAN/authors/id/M/MS/MSCHILLI/LWP-Protocol-https-6.06.tar.gz $ tar xvfz LWP-Protocol-https-6.06.tar.gz $ cd LWP-Protocol-https-6.06 $ perl Makefile.PL $ make $ sudo make install
上掲のコマンドは,ブログで紹介されていたものから2点だけ変更してる.
wgetの引数を https の URL に変更した.なぜかブログでは http の URL を指定してるmake installをsudoで実行してる.sudoじゃないと下記のように怒られたので
$ make install
Manifying 1 pod document
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ERROR: Can't create '/usr/local/share/man/man3'
Do not have write permissions on '/usr/local/share/man/man3'
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
at -e line 1.
make: *** [Makefile:726: pure_site_install] エラー 13

