Twitterに動画を載せて,そのURLを取得するスクリプト
これは何?
こういうツイートを送信して,そのメディアの短縮URLを習得するシェルスクリプトです.GitHub にコードを置きました.
上のツイートの動画へのURLは,これ↓.
https://t.co/ngmigsBV5u
Code language: JavaScript (javascript)
スクリプト
#!/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
Code language: Bash (bash)
使い方
こんな感じ.np1m という名前でパスの通った場所に置いている想定です.
$ np1m /PATH/TO/VIDEO/FILE.mp4 TWEET_STATUS
Code language: Bash (bash)
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]
Code language: Bash (bash)
ただ,これでインストールしても不十分 (かもしれない).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.
Code language: JavaScript (javascript)
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
Code language: Bash (bash)
上掲のコマンドは,ブログで紹介されていたものから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
Code language: PHP (php)