サイトアイコン 回れ右の内輪差

Twitterに動画を載せて,そのURLを取得するスクリプト

これは何?

こういうツイートを送信して,そのメディアの短縮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にデフォルトで入ってる機能だと思う…

GET について

GETperl-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点だけ変更してる.

  1. wget の引数を https の URL に変更した.なぜかブログでは http の URL を指定してる
  2. make installsudo で実行してる.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
モバイルバージョンを終了