YouTubeサムネを自動生成するシェルスクリプトを作った

URLから簡単にYouTube用のサムネイルを作るスクリプト.
45

シェルスクリプトの本体

まず書いたスクリプトを載せます.

#!/bin/bash
# this shellscript requires a YouTube video URL as an argument
# prefix and suffix of the thumbnail URL

prefix=”http://img.youtube.com/vi/”
suffix=”/maxresdefault.jpg”
# make thumbnail URL from YouTube video URL
id=`echo ${1} | grep -oP “(?<=\=)(.+)"`
url=$prefix$id$suffix
# download the thumnail image
curl -o image.jpg $url
# get the part number of the video
title=`curl ${1} 2>&1 | grep -oP “(?<=)(.+)(?=)”`
number=`echo $title | grep -oP “(?<=Part )(.+)(?= -)"`
# edit SVG image
sed -i -e “s:>#[0-9][0-9]\?:>#${number}:g” svg.svg
inkscape -e png.png svg.svg
# make a thumbnail image and remove intermidiate files
convert image.jpg png.png -composite ${number}.jpg
rm image.jpg png.png
mv *.jpg ~/ダウンロード/
exit 0
仕様と用途

もちろんこれだけじゃ動かないです.前提になるのは…

  1. 引数のURLで渡すYouTube動画のタイトルの末尾が「Part **」のようになっていること (**の部分は数字)
  2. スクリプトを実行するマシンにInkscapeとImageMagickがインストールされてること
  3. 同じ階層に特定の様式のSVG画像が保存されていること

たぶん2の前提は簡単に解消できるね.インストールすればいいだけだから.

想定していること

このスクリプトは,もちろん僕の個人的な目的のために書かれてるから汎用性はない.でも僕の目的には十分なので,これで十分だけど,もし参考にする場合にはこれを改造して使ってくださいな.
僕の使いみちは,こんな感じ.

  1. 僕のYouTube動画のURLを引数で渡す
  2. 手元のSVG画像を編集してサムネイルを作る

サムネイルを作りたい動画は,僕が使ってるNintendo Playthroughチャンネルの動画.この動画に,簡単にサムネイルを設定したいのです.


こんな感じで,タイトルが「Super Mario Odyssey Playthrough [No Commentary] Part 45」になってるから,この末尾の数字を取ってくる処理がある.上の動画の場合は45だね.
で,SVG画像を編集する.SVGの都合の良いところは全部XMLだということ.だからとても簡単にスクリプトから画像を生成できる!これは嬉しい.僕の場合は動画の通し番号だけ動画から取った数字を書いて,周りにはいつも同じ画像を配置してる.左上に「Super Mario Odyssey」ロゴを置いて,下側に「Playthrough」を書いてる.SVGの中にこんなtext要素があるので,それを編集してる.

(前略)
<text
  xml:space=”preserve”
  style=”font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:56.99990463px;line-height:66.79676056px;font-family:’Super Mario’;-inkscape-font-specification:’Super Mario Bold’;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:end;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:end;white-space:normal;shape-padding:0;opacity:1;vector-effect:none;fill-opacity:1″
    x=”152.92862″
    y=”-190.62903″
    id=”text2150″><tspan
      sodipodi:role=”line”
      x=”152.92862″
      y=”-190.62903″
      id=”tspan2168″>#59</tspan></text>
(後略)

YouTubeはアップロードした動画から自動的に良い感じのフレームを抜き出して動画のサムネイルに設定してくれる.だから自動で設定されたサムネイルに,いま編集したSVGを重ねればOK.YouTube動画のサムネイルを取得するのはとても簡単で,このサイトによれば,例えば最大サイズのサムネイル画像はこのURLで取得できる.

”http://img.youtube.com/vi/” + 動画のID + ”/maxresdefault.jpg”

rect881
自動設定されたサムネイルをダウンロードして,編集したSVGを合成してサムネイルに動画の通し番号を書いて,それをファイルに出力する.そんなスクリプトです.本当はYouTubeにアップロードして…みたいなところまで自動でできると嬉しいけど,今回はここまで.僕はプログラミングは得意じゃないので,認証とかやろうとすると迷宮入りしてしまいます…笑
https://apis.google.com/js/platform.js

僕は自分のゲームプレイ動画を載せるYouTubeチャンネルを持ってる.これは僕のゲームプレイを記録しておくためのもので,別にめちゃめちゃ沢山の人に見てもらいたいわけじゃない.まぁでも「一切見ないで欲しい」と思ってるわけでもなくて,あわよくば魅力を感じてもらって見てもらいたいとも思ってる.なので「できるだけ手間を掛けずに,でもそれなりに魅力的に見えるサムネイルを簡単に作成したい」というニーズがありました.今回のスクリプトはそのニーズに応えるもの.

コメントを残す

Powered by WordPress.com. テーマ: Baskerville 2 by Anders Noren

ページ先頭へ ↑

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