キー操作で「全画面 ⇄ 通常表示」を操作可能に
「Gyao! Comfy」の主な仕事は、動画閲覧の操作を快適にする事です。 動画再生のスタートボタン「▶」を押すと、スタートと同時に全画面表示にする便利機能ですが、せっかく JavaScriptを起動させるので、これだけではもったいない。
「GYAO!」の動画プレーヤーは YouTubeと異なり、ショートカットキーは限られています。 調べた所では、「Space」で「停止・再生」の切換え、「Esc」で「全画面表示」➔「通常表示」に戻せるだけの様です。
そこで、「全画面表示 ⇄ 通常表示」をキー操作で切り替える機能を追加しました。 使えるキーを色々と試すと、キー受付がシステムで封じられているのか、通常のキーは取得できません。 調子よく反応するキーは限られ、結局「Ctrl+Enter」をショートカットに使う事になりました。
「Gyao! Comfy」の再生操作の纏め
以下は、「Gyao! Comfy」ver. 0.2 で可能な操作です。
❶ 動画再生開始は通常の通り「▶」ボタンを「Click」します。
▪この操作で、動画は自動的に「全画面表示」になります。
❷ 再生中は「Ctrl+Enter」ごとに「通常表示」⇄「全画面表示」が切換ります。
❸「Space」キーを押すと「再生」⇄「停止」が切換ります。 但し、動画プレーヤーにフォーカスがある場合に限り、そうでないとページスクロールになります。
❹「Esc」キーは「全画面表示」➔「通常表示」に使えます。
➎ 動画再生の開始時に「▶」ボタンを「Ctrl+Click」すると、「通常表示」で再生が開始されます。 この違いを明瞭にするため、「Ctrl」キーを押すとボタンが「紺色」になります。
「GYAO!」のサイトデザインをアップデート
サイトの各所でHTML構成が更新されていたので、アレンジ用CSSコードを全面的に見直しました。 これは「GYAO動画のフル画面表示」ver. 202203.08.04 として、アップロードしましたが、更新したコードを改めて「Gyao! Comfy」に移植しました。
「Gyao! Comfy」は、再生操作の便利機能と同時に「GYAO動画のフル画面表示」と同等のサイトアレンジを提供します。 眼の疲れにくい配色のアレンジが、このツールを導入するだけで得られます。
〔注意〕
「GYAO動画のフル画面表示」は、動画を通常サイズのウインドウ内全体に表示できますが、そのコードは「Gyao! Comfy」にはありません。 これは「Gyao! Comfy」と「GYAO動画のフル画面表示」を併用すれば可能になります。(併用は問題ありません)
〔参考〕「GYAO動画のフル画面表示」は、以下のページで公開しています。
「Gyao! Comfy」を利用するには
このツールは Chrome / Edge / Firefox版の拡張機能「Tampermonkey」上で動作します。 以下に、このツールの導入手順を簡単に説明します。
❶「Tampermonkey」を導入します
◎ 使用しているブラウザに拡張機能「Tampermonkey」を導入する事が必要です。
既に「Tampermonkey」を導入している場合は、この手順 ❶ は不要です。
拡張機能の導入については、以下のページに簡単な説明があるので参照ください。
❷「Tampermonkey」にスクリプトを登録します
◎「Tampermonkey」の「+」マークの「新規スクリプト」タブを開きます。
◎「新規スクリプト」には、最初からテンプレートが記入されています。 これは全て削除して、完全に空白の編集枠に 下のコードをコピー&ペーストします。
〔コピー方法〕 軽量シンプルなツール「PreBox Button 」を使うと
コード枠内を「Ctrl+左Click」➔「Copy code 」を「左Click」
の操作で、掲載コードのコピーが可能になります。
◎ 最後に「ファイル」メニューの「保存」を押すと、ツールが使用可能になります。
〔 Gyao! Comfy 〕 ver. 0.2
// ==UserScript== // @name Gyao! Comfy // @namespace http://tampermonkey.net/ // @version 0.2 // @description Gyao! 動画の「▶」のクリックで全画面表示 // @author You // @match https://gyao.yahoo.co.jp/* // @grant none // ==/UserScript== let css1= '<style id="GC1" type="text/css">'+ '/* GYAO動画のフル画面表示 ver. 202203.08.01 */'+ ':root { --back: #91b4bf; --hove: #b9cfd6; }'+ 'html, body { background: var(--back); }'+ '.button-favorite { opacity: .6; }'+ '.button-favorite:hover { opacity: .8; }'+ '.button-favorite .button-favorite-text { color: #000; }'+ '.navigation-header-searchbar_searchSuggestResult__tU9rX, '+ '.search-suggest-result { background-color: #d2dee3 !important; }'+ '.arrow-button_arrowButton__aMtur:focus, '+ '.arrow-button_arrowButton__aMtur { box-shadow: inset 0 0 0 4px #fff; }'+ '.button-arrow:hover { box-shadow: 0 0 0 3px #fff; }'+ '.schedule-list-item { padding: 0 6px; }'+ '.schedule-list-item:hover { background: var(--hove); }'+ '.schedule-list-item-sub-text { color: #000 !important; }'+ '.schedule-list-container h3 { border-top: 1px solid #f0f0f0; }'+ '.schedule-list .schedule-list-row-item:not(:last-child) { padding-right: 0; }'+ '.schedule-list .schedule-list-row-item { border: none !important; }'+ '.schedule-list .schedule-list-row-item h3, .schedule-list .schedule-list-row-item ul { '+ 'border-left: 1px solid #f0f0f0; border-right: 1px solid #f0f0f0; }'+ '.program-list .program-list-more-link { margin-top: 30px; }'+ '.more-link .more-link-text { color: #000; outline: 1px solid #eee; }'+ '.more-link .more-link-text:active, .more-link .more-link-text:hover { '+ 'color: #fff; background-color: rgb(60 125 150 / 50%); }'+ '.breadcrumb .breadcrumb-list-item-link, '+ '.breadcrumb .breadcrumb-list-item:last-child .breadcrumb-list-item-link { color: #000; }'+ '.breadcrumb_item__KOyoB * { color: #000 !important; }'+ '.ad.ad-yads { display: none !important; }'+ '.overlay-ad_ad__grVga { display: none !important; }'+ '.timeline-ad_timelineAd__zM3OV { display: none !important; }'+ '.image-lazy { background-color: #90aeb7; }'+ 'html::-webkit-scrollbar { width: 16px; }'+ 'html::-webkit-scrollbar-thumb { '+ 'background: #000; border: 1px solid var(--back); border-right: none; }'+ 'html::-webkit-scrollbar-track { background: transparent; }'+ 'html { scrollbar-color: #000 transparent; }'+ 'html { overflow: overlay; overflow-x: hidden; }</style>'; if(!document.querySelector('#GC1')){ document.documentElement.insertAdjacentHTML('beforeend', css1); } let path=document.location.pathname; if(path.match(/^\/ranking|^\/arrivals|^\/titles|^\/search|^\/schedule/)){ let css2= '<style id="GC2" type="text/css">'+ '/* 共通設定 */'+ '.tab .tab-title > span { color: #000; }'+ '.tab .tab-title.is-active { background: none; }'+ '.tab .tab-title:active > span, .tab .tab-title:focus > span, '+ '.tab .tab-title:hover > span { color: #000; }'+ '.option-selector .option-selector-item > label { color: #000; }'+ '.option-selector .option-selector-item > input:hover + label { color: #000; }'+ '.program-list .program-list-item-title { color: #000; }'+ '.program-list .content-label { color: #000; }'+ '.program-list .program-list-item-sub-text { color: #000; }'+ '.item-list .item-list-more-link { margin-top: 30px; }'+ 'html::-webkit-scrollbar-thumb { background: rgba(0, 0, 0, .2); }'+ 'html { scrollbar-color: rgba(0, 0, 0, .2) transparent; }</style>'; if(!document.querySelector('#GC2')){ document.documentElement.insertAdjacentHTML('beforeend', css2); }} if(path.match(/^\/p\/|^\/player\/|^\/episode\/|^\/title\//)){ let css3= '<style id="GC3" type="text/css">'+ '/* 個別の動画ページ 基本表示 */'+ '.video-player.is-pip .video-player-titles { background-color: #223e4c; }'+ '.video-player.is-pip .video-player-titles p { color: #ccc; }'+ '.video-player.is-pip .video-player-titles:after { content: "▲"; '+ 'position: fixed; right: 20px; bottom: 15px; font: normal 32px/44px Meiryo; '+ 'text-indent: 6px; color: #fff; display: block; height: 50px; width: 50px; '+ 'border: 3px solid #fff; border-radius: 50%; }'+ '.video-information .datetime { color: #000; }'+ '.video-descriptions .video-description-main, '+ '.program-descriptions .program-description-main { color: #000; }'+ '.video-descriptions .content-text, .program-descriptions .content-text { color: #000; }'+ '.container-clipper .container-clipper-content::after { '+ 'background: linear-gradient(to bottom, rgba(255, 255, 255, 0), #b9cfd6); height: 50px; }'+ '.video-list-more { background: var(--hove); }'+ '.item-tile .item-tile-item-details { background: none; }'+ '.item-tile-item-link:hover { background: var(--hove); }'+ '.button.type-primary-white { background: var(--hove); }'+ '.button.type-primary-white:hover { background: #c2edfb; }'+ '.button.type-secondary { background: var(--hove); }'+ '.button.type-secondary:hover { background: #c2edfb; }'+ '.review-list-item-header-post-info .datetime { color: #000; }'+ '.review-list .review-list-item-content-text { color: #000; }'+ '.review-list-item-content-interstitial { color: #000 !important; background: var(--hove); }'+ '.review-list-more { background: var(--hove); }'+ '.video-list .video-list-item { padding: 0 4px; }'+ '.video-list .video-list-item:hover { background-color: var(--hove); }'+ '.video-list .video-list-item.is-current { background-color: var(--hove); }'+ '.video-list .video-list-item-titles time { color: #000; }'+ '.video-list .video-list-item-sub-text { color: #000; }'+ '.section-upsell-item { padding: 0 4px; }'+ '.ad-banner.ad.section { display: none; }'+ '.to-app-banner.to-app-banner-footer, .footer-aside.footer-container { display: none; }'+ '.vjs-gyao .vjs-head-bar .vjs-head-title { font-size: 1em; }'+ '.vjs-gyao .vjs-control-bar .vjs-play-progress { background-color: #29b6f6; }'+ 'html::-webkit-scrollbar { width: 0px; }'+ 'html { scrollbar-width: none; }</style>'; if(!document.querySelector('#GC3')){ document.documentElement.insertAdjacentHTML('beforeend', css3); }} if(path.match(/^\/specials\/|^\/special\//)){ let css6= '<style id="GC6" type="text/css">'+ '/* 特設ページ */'+ 'body { font-family: "メイリオ", Meiryo, sans-serif !important; }'+ '#cnt p, #cnt h3 { color: #fff !important; }</style>'; if(!document.querySelector('#GC6')){ document.documentElement.insertAdjacentHTML('beforeend', css6); }} let target_g=document.querySelector('.gyao-player'); // 監視 target if(target_g){ // 通常動画のコンテンツ表示時に動作 let monitor_g=new MutationObserver(wider); monitor_g.observe(target_g, {childList: true, subtree: true}); // 監視開始 function wider(){ let play_button=document.querySelector('.vjs-big-play-button'); let full_cont=document.querySelector('.vjs-gyao .vjs-fullscreen-control'); if(play_button && full_cont){ play_button.onclick=function(event){ if(!event.ctrlKey){ full_cont.click(); }} document.onkeydown=function(event){ if(event.ctrlKey){ play_button.style.filter='hue-rotate(-135deg)'; }} document.onkeyup=function(event){ play_button.style.filter=''; if(event.ctrlKey && event.keyCode==13){ full_cont.click(); }}} }} // 通常動画のコンテンツ表示時