YouTubeサムネ自動生成器 ver 2.0

これは何?
YouTube動画のURLを与えると,その動画のサムネイルを自動で作るシェルスクリプト.例えばこの動画のサムネイルはこのスクリプトで作りました.

コード
#!/bin/bash
# this shellscript requires a YouTube video URL as an argument
# prefix and suffix of thumbnail URL
prefix="http://img.youtube.com/vi/"
suffix="/maxresdefault.jpg"
vidprefix="https://www.youtube.com/watch?v="
# make thumbnail URL for argument YouTube video
#id=$(cut -d'=' -f 2 <<<$1)
id=`echo ${1} | rev | cut -c 1-11 | rev`
url=$prefix$id$suffix
# download thumnail image
curl -o ~/Downloads/image.jpg $url
# get video number
vidurl=$vidprefix$id
title=`curl $vidurl 2>&1 | grep -oP "(?<=<title>)(.+)(?=</title>)"`
number=`echo $title | grep -oP "(?<=Part )(.+)(?= -)"`
# edit SVG image
sed -i -e "s:>No. \?[0-9][0-9]\?[0-9]\?:>No. ${number}:g" ~/.np/svg.svg
inkscape -e ~/.np/png.png ~/.np/svg.svg
convert ~/Downloads/image.jpg ~/.np/png.png -composite ~/Downloads/${number}.jpg
rm ~/Downloads/image.jpg ~/.np/png.png
#mv *.jpg ~/Downloads/
exit 0
例によって &
が &
に,>
が >
に化けちゃってるので読み替えてください…
依存
事前にインストールしておいてくださいな
使い方
詳しくは ver 1.0 について書いた記事を参照してください~.ここでは簡単に.
- YouTubeの動画タイトル末尾を
Part **
に (**の部分は数字) - スクリプトと同階層に所定様式のSVG画像
svg.svg
を配置 $ sh np.sh [URL]
で実行 (スクリプトをnp.sh
という名前にしてます)
このスクリプトは,あらかじめ設定されている動画のサムネイルを取得して,それに文字を重ねる処理をするもの.処理のイメージは下の画像が分かりやすいと思う.スクリプトを実行する前に,上に重ねるべき文字部分のSVGを作成しておいてくださいね.

変更点
ver 1.0 からの変更点は,短縮URLにも対応したこと.YouTubeの標準のURL形式 https://www.youtube.com/watch?v=*****
だけでなく,短縮形式 https://youtu.be/*****
を引数にとっても問題なく動作するように修正した.どっちを引数に渡してもOK!
そのために,id
を取得する処理 (11行目 id=`echo ${1} | rev | cut -c 1-11 | rev`
) が新しくなった.とは言えすごく単純で,引数の後ろから11文字を切り出すだけ.YouTube動画のIDは11桁なのでこの実装でひとまず問題ないはず…IDが12桁に変更されることは,まずないだろうし.
この値の形式がどうなっているのか…色々調べてみたところ、数字
[0-9]
、アルファベットの大文字[A-Z]
、小文字[a-z]
、アンダースコア_
、ハイフン-
の、計 64 種類の文字 11 バイトで形成されていることがわかった。…単純に考えれば… 11 バイトで 73,786,976,294,838,206,464 個の動画に一意な文字列を割り当てることが出来る。…もし1日に1億個の動画がアップされるとしたら… 20,202,208 世紀の世紀末頃にこの文字列は枯渇してしまう模様。
YouTube の v の値が桁上がりする恐れについて – にぽたん研究所
これに合わせて19行目の title
を取得する処理も微変更したけど,それほど大きな変更じゃない.抽出した id
に基づいて,短縮じゃない標準のURLを構成してるだけだから.
1件のコメント