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

例によって &&amp; に,>&gt; に化けちゃってるので読み替えてください…

依存

事前にインストールしておいてくださいな

使い方

詳しくは ver 1.0 について書いた記事を参照してください~.ここでは簡単に.

  1. YouTubeの動画タイトル末尾を Part ** に (**の部分は数字)
  2. スクリプトと同階層に所定様式のSVG画像 svg.svg を配置
  3. $ sh np.sh [URL] で実行 (スクリプトを np.sh という名前にしてます)

このスクリプトは,あらかじめ設定されている動画のサムネイルを取得して,それに文字を重ねる処理をするもの.処理のイメージは下の画像が分かりやすいと思う.スクリプトを実行する前に,上に重ねるべき文字部分のSVGを作成しておいてくださいね.

画像に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件のコメント

  1. ピンバック: 回れ右の内輪差

コメントを残す

%d人のブロガーが「いいね」をつけました。