Skip to content

Instantly share code, notes, and snippets.

@Getaji
Last active January 8, 2019 08:33
Show Gist options
  • Select an option

  • Save Getaji/770a32894bdf978bd0892fb779237ed8 to your computer and use it in GitHub Desktop.

Select an option

Save Getaji/770a32894bdf978bd0892fb779237ed8 to your computer and use it in GitHub Desktop.
YouTube動画ページでURLパラメータのt=nのフォーマットで指定時間に飛ぶスクリプト(突貫)

使い方

推奨はPC版ChromeかFirefoxです。モバイルページでの動作確認はしていません。古いIEとかでも動作しません。
先頭にjavascript:をつけてアドレスバーにコピペして実行するか、それをブックマークに追加して実行するか、デベロッパーツールを開いてコンソールにコピペして実行してください。
他の動画サイトでも動作する可能性がありますが保証はできません。Mirrativアーカイブでは動作を確認しました。

t=nのフォーマットって何?

YouTubeの動画ページhttps://www.youtube.com/watch?v=XXXXXはパラメータtを付与することでページ読み込み時に動画の指定した時間にジャンプできます。例えば50秒ならt=50t=50sです。ssecondsの頭文字で、分ならm、時ならhです。1時間53分24秒ならURLはhttps://www.youtube.com/watch?v=XXXXX&t=1h53m24sとなります。
このスクリプトはこの書式でページを再読込せずに指定した時間にジャンプできるスクリプトです。

更新履歴

2019/01/08 v1.1

  • 前回の更新で秒数だけならsを付与しなくてもいいように変更したが、その影響で他のパターンの処理が正常に動作していなかったバグを修正
(function() {
const v = document.querySelector('video');
const s = prompt('設定時間(-h-m-s)', v.currentTime);
if (s && s.length > 1) {
const fm = s.match(/^[\d\.]+$/)
const f = Number.parseFloat(s);
if (fm && !Number.isNaN(f)) {
v.currentTime = f;
return;
}
const m = s.match(/[\d\.]+[hms]/g);
if (m) {
let total = 0;
for (const t of m) {
const n = Number.parseFloat(t.substr(0, t.length-1));
switch (t.substr(t.length-1)) {
case 'h': total += n * 3600; break;
case 'm': total += n * 60; break;
case 's': total += n; break;
}
}
if (Number.isNaN(total)) {
alert('数値の指定が正しくありません。');
} else {
v.currentTime = total;
}
} else {
alert('書式が正しくありません。');
}
}
})()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment