Safari上で表示中のYouTubeのムービーの再生状態を取得、再生/停止のトグル動作を行うなどのAppleScriptです。
追記(2021/7/31):pausedの属性を取得できていないですね。YouTube側に変更があったのか…?
追記(2022/1/21):YouTube側の仕様がかわって、ムービープレイヤーに対する操作が通りません。x倍速再生が便利だったのですが…
macOS標準搭載のスクリプトメニューに入れて呼び出しています。
AppleScript名:Safariの最前面のウィンドウで再生中のYouTubeムービーの状態を取得する |
–Get YouTube Movie status tell application "Safari" tell front document set aRes to (do JavaScript "document.querySelector(’#movie_player video’).paused;") end tell end tell |
AppleScript名:Safariの最前面のウィンドウで再生中のYouTubeムービーを再生_停止をトグル切り替え |
–Toggle Youtube play/pause tell application "Safari" tell front document set aRes to (do JavaScript "document.querySelector(’#movie_player .ytp-play-button’).click();") end tell end tell |
AppleScript名:Safariの最前面のウィンドウでオープン中のYouTubeムービーを再生 |
tell application "Safari" tell front document set aURL to URL –最前面のウィンドウがYouTubeの場合のみ処理 if aURL begins with "https://www.youtube.com/" then set aRes to (do JavaScript "document.querySelector(’#movie_player video’).paused;") if aRes = true then –停止中(一時停止中)の場合のみ再生操作 (do JavaScript "document.querySelector(’#movie_player .ytp-play-button’).click();") end if end if end tell end tell |
AppleScript名:Safariの最前面のウィンドウでオープン中のYouTubeムービーの再生フレームの冒頭からの時間を取得 |
tell application "Safari" tell front document set aURL to URL –最前面のウィンドウがYouTubeの場合のみ処理 if aURL begins with "https://www.youtube.com/" then set tRes to (do JavaScript "document.querySelector(’#movie_player video’).getCurrentTime();") end if end tell end tell |
AppleScript名:Safariの最前面のウィンドウでオープン中のYouTubeムービーの再生ポジションを変更 |
tell application "Safari" tell front document set aURL to URL –最前面のウィンドウがYouTubeの場合のみ処理 if aURL begins with "https://www.youtube.com/" then set tRes to (do JavaScript "document.querySelector(’#movie_player video’).currentTime =300;") end if end tell end tell |
AppleScript名:Safariの最前面のウィンドウでオープン中のYouTubeムービーのdurationを取得 |
tell application "Safari" tell front document set aURL to URL –最前面のウィンドウがYouTubeの場合のみ処理 if aURL begins with "https://www.youtube.com/" then set tRes to (do JavaScript "document.querySelector(’#movie_player video’).duration;") end if end tell end tell |
More from my site
(Visited 380 times, 1 visits today)
匿名 says:
お世話になっております。
こちらで紹介していらっしゃるコードをもとに、他の動画投稿サイトで使えるスクリプトを書いているのですが、
’#movie_player video’の部分はどのようにして見つけられたのでしょうか?
openrecというサイトで使うことを目指しているのですが、ソースコードを読み、’#movie_player openrec-video’のようにしても値が取れません。
よろしくお願い致します。
Takaaki Naganoya says:
beardedspiceという、メニューから各種ムービーサイトの操作を行うツールの内容を解析して、スクリプトメニューからAppleScriptを呼び出す形式にしたら、YouTubeについては正味これだけだった、というのがこのScriptの正体です(beardedspiceの作者がAppleScript+スクリプトメニューの存在を知っていたら、beardedspiceを作る必要がなかっただろう、という結論に)。
https://github.com/beardedspice/beardedspice
なので、YouTubeを直接調査したわけでもありません(動作確認はしましたけれど)。
匿名 says:
無事他のサイトでも使えるスクリプトを書くことができました!
最終的にはソースコードから調べる結果となりましたが、beardedspiceについて教えていただけたおかげで、様々なサイト専用のソースコードから傾向を予測することができました。
本当にありがとうございました!