<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>web | wholenotism::blog</title>
	<atom:link href="https://www.wholenotism.com/blog/tag/web/feed" rel="self" type="application/rss+xml" />
	<link>https://www.wholenotism.com/blog</link>
	<description>日々の雑感とかバイクとか英語とか...なんかそんなん諸々</description>
	<lastBuildDate>Fri, 19 Jun 2026 17:29:56 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.5</generator>

<image>
	<url>https://www.wholenotism.com/blog/wp-content/uploads/cropped-favicon-32x32.png</url>
	<title>web | wholenotism::blog</title>
	<link>https://www.wholenotism.com/blog</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>yt-dlpでbilibiliがエラー412を返す時の対処法｜HTTPError 412:Precondition Failed</title>
		<link>https://www.wholenotism.com/blog/2026/04/ytdlp-bilibili-error412.html</link>
					<comments>https://www.wholenotism.com/blog/2026/04/ytdlp-bilibili-error412.html#comments</comments>
		
		<dc:creator><![CDATA[watary]]></dc:creator>
		<pubDate>Sun, 26 Apr 2026 12:00:28 +0000</pubDate>
				<category><![CDATA[コンピュータ関連]]></category>
		<category><![CDATA[bilibili]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[yt-dlp]]></category>
		<category><![CDATA[プログラム・スクリプト]]></category>
		<guid isPermaLink="false">https://www.wholenotism.com/blog/?p=16952</guid>

					<description><![CDATA[数日前から yt-dlp を bilibili で使おうとすると412エラーを返すようになった。 しばらく待てば extractor のファイルも更新されるかな・・・と思ってたけどなかなか更新されない。 まぁいい機会だか [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>数日前から <strong>yt-dlp</strong> を <strong>bilibili</strong> で使おうとすると<strong>412エラー</strong>を返すようになった。</p>
<p>しばらく待てば extractor のファイルも更新されるかな・・・と思ってたけどなかなか更新されない。</p>
<p>まぁいい機会だから対処法でも探そうかと。</p>
<p>一応解決したので備忘録も兼ねてシェア。</p>
<p><span id="more-16952"></span></p>

  <div id="toc" class="toc tnt-number tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2"><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">bilibiliでyt-dlpを使おうとすると412エラー</a></li><li><a href="#toc2" tabindex="0">対処法：Origin ヘッダーを付与</a></li><li><a href="#toc3" tabindex="0">まとめ</a><ol><li><a href="#toc4" tabindex="0">追記（20260616）：extractor/bilibili.pyを書き換える方法</a></li></ol></li></ol>
    </div>
  </div>

<h2><span id="toc1">bilibiliでyt-dlpを使おうとすると412エラー</span></h2>
<div class="information-box">追記：数日経ってbilibili側が仕様変更したようです。何もせずとも通るようになってます<br />追記1：DLできるけど480pまでになっています。ログインしてクッキーを渡すしか&#8230;<br />追記2：修正案が示されました。問題なくDLできます。正式な配布を待ちましょう<br />追記3：再び412エラーが発生。今回はOrigin,Referer両方つけると通ります<br />追記4：<a href="#toc4">エクストラクタ書き換え方法↓</a></div>
<p>普通に使おうとすると412エラーが発生。</p>
<pre class="nohighlight">% yt-dlp -F https://www.bilibili.com/video/ほにゃらら/
[BiliBili] Extracting URL: https://www.bilibili.com/video/ほにゃらら/
[BiliBili] にゃらら: Downloading webpage
[BiliBili] ほにゃらら: Extracting videos in anthology
[BiliBili] ほにゃらら: Downloading wbi sign
[BiliBili] ほにゃらら: Downloading video formats for cid xxxxxxxxxxx
ERROR: [BiliBili] にゃらら: Unable to download JSON metadata: HTTP Error 412: Precondition Failed (caused by &lt;HTTPError 412: Precondition Failed&gt;)
</pre>
<p>かつて「クッキーを渡せばいける」という<a rel="noopener" href="https://github.com/yt-dlp/yt-dlp/issues/14830#issuecomment-3477755274" target="_blank">話<span class="fa fa-external-link external-icon anchor-icon"></span></a>もあったようなのでやってみたけど結果は同じ。</p>
<p>困ったねぇ</p>
<h2><span id="toc2">対処法：Origin ヘッダーを付与</span></h2>
<p>色々試してみた結果、解決法としては<br />
オプション <strong><code>--add-header "Origin:https://www.bilibili.com"</code></strong> を付与したら通りました。</p>
<pre class="nohighlight">
% yt-dlp -F --add-header "Origin:https://www.bilibili.com" https://www.bilibili.com/video/ほにゃらら/
[BiliBili] Extracting URL: https://www.bilibili.com/video/ほにゃらら/
[BiliBili] にゃらら: Downloading webpage
[BiliBili] ほにゃらら: Extracting videos in anthology
[BiliBili] ほにゃらら: Downloading wbi sign
[BiliBili] ほにゃらら: Downloading video formats for cid xxxxxxxxxxx
[BiliBili] xxxxxxxxxxx: Extracting chapters
[info] Available formats for ほにゃらら:
ID    EXT RESOLUTION FPS │   FILESIZE   TBR PROTO │ VCODEC        VBR ACODEC      ABR
─────────────────────────────────────────────────────────────────────────────────────
30216 m4a audio only     │ ≈687.63KiB   66k https │ audio only        mp4a.40.2   66k
30232 m4a audio only     │ ≈  1.27MiB  124k https │ audio only        mp4a.40.2  124k
30280 m4a audio only     │ ≈  1.27MiB  124k https │ audio only        mp4a.40.2  124k
30016 mp4 640x360     30 │ ≈  2.87MiB  282k https │ avc1.640033  282k video only
30032 mp4 852x480     30 │ ≈  4.13MiB  405k https │ avc1.640033  405k video only
30064 mp4 1280x720    30 │ ≈  7.76MiB  761k https │ avc1.640033  761k video only
30080 mp4 1920x1080   30 │ ≈ 16.44MiB 1613k https │ avc1.640033 1613k video only
</pre>
<p>最初はクッキー、ユーザーエージェント、Refererヘッダー、Originヘッダーを付けてみましたが、削っていったら Origin だけでも通りました。</p>
<p><strong>Origin:「リクエストがどのドメインから発行されたか」を見ている</strong>、ということですね。</p>
<p>「外部からの不正な直リンク（スクレイピング）」として 412 で弾かれていた、という理屈でしょうか。<br />
デフォルトでOriginも送信はしているようです。が、オプションから付与したおかげで何か漏れていた部分で通ったのかもしれません。</p>
<p>たしかにブラウザでも、ユーザーの「動画リスト」ページにブックマークから直接飛ぶと空っぽと表示され、別ページに一旦移ってから再度移動すると表示されるという現象が起きています。</p>
<h2><span id="toc3">まとめ</span></h2>
<p>今回は <strong>412エラー（前提条件失敗）</strong> が発生し、Originヘッダーを付与したら通ったという結果になりました。</p>
<p>今後さらに厳格化されてリファラーやクッキーを見ることがあるかもしれません。</p>
<p>そうなったら</p>
<ul class="bold">
<li>クッキー：<code>--cookies-from-browser ブラウザ</code></li>
<li>ユーザーエージェント：<code>--user-agent</code><br />（Firefoxなら ヘルプ &gt; トラブルシューティング情報 &gt; ユーザーエージェント（の文字列））</li>
<li>リファラー：<code>--add-header "Referer:https://www.bilibili.com"</code></li>
<li>オリジン：<code>--add-header "Origin:https://www.bilibili.com"</code></li>
</ul>
<p>あたりを付与していくと何とかなるかも。ならんかも。</p>
<p>他のツールで何か対応してるものないかと探してみたんですけど今は yt-dlp 一強みたいな感じなんですかね。<br />
streamlinkも「プラグインないよ！」って拒否られたし、lux（旧Annie）みたいなものももはや更新されてなさそうだし。</p>
<p>そのうち優秀なエンジニアさんが Extractor の <strong>bilibili.py</strong> を更新してくれるはず。<br />
それまでは Originヘッダーを付与 で凌ぎましょう。</p>
<p>では。</p>
<h3><span id="toc4">追記（20260616）：extractor/bilibili.pyを書き換える方法</span></h3>
<p>yt-dlp 2026.6.9にアップグレードしたけれど「<strong>bilibili.py</strong>」はアップデートされず、そのままでした。残念。<br />
412エラーは前述のように <strong>OriginヘッダーとRefererヘッダーを付ければ通ります</strong>が、480pまでしかリストが取得できないのでbilibili.pyを直接いじります。</p>
<p>bilibili.py 179行目</p>
<pre class="nohighlight"><code>'https://api.bilibili.com/x/player/wbi/playurl', bvid,</code></pre>
<p>を</p>
<pre class="nohighlight"><code>'https://api.bilibili.com/x/player/playurl', bvid,</code></pre>
<p>に変更すれば、<br />
<strong>Originヘッダー、Refererヘッダーをつける必要もなく、またリストフォーマットで1080pなども（あれば）表示されるようになります。</strong><br />
（当たるサーバーによってなのか何なのか、412が出る時もありますが2回ほどトライすると通ります。）<br />
<cite>（参考：github「<a rel="noopener" href="https://github.com/yt-dlp/yt-dlp/issues/16962#issuecomment-4708780504" target="_blank">bilibili video download fail #16962<span class="fa fa-external-link external-icon anchor-icon"></span></a>」）</cite></p>
<div class="information-box">extractorフォルダのパスはwin、macなど環境によって違うのでご自身で探して書き換えてください。プラグインフォルダに入れてもエラーになるのでバックアップをとって書き換えた方が無難です。自己責任でお願いします。</div>
		<div class="wpulike wpulike-heart " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="16952"
					data-ulike-nonce="40ac0c27ec"
					data-ulike-type="post"
					data-ulike-template="wpulike-heart"
					data-ulike-display-likers="0"
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_16952"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="+5"></span>			</div></div>
	]]></content:encoded>
					
					<wfw:commentRss>https://www.wholenotism.com/blog/2026/04/ytdlp-bilibili-error412.html/feed</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
			</item>
		<item>
		<title>絶望から一転、Xの永久凍結が解除されアカウントが復活した一部始終</title>
		<link>https://www.wholenotism.com/blog/2026/04/x-account-recovery.html</link>
					<comments>https://www.wholenotism.com/blog/2026/04/x-account-recovery.html#respond</comments>
		
		<dc:creator><![CDATA[watary]]></dc:creator>
		<pubDate>Wed, 22 Apr 2026 06:55:40 +0000</pubDate>
				<category><![CDATA[コンピュータ関連]]></category>
		<category><![CDATA[web]]></category>
		<guid isPermaLink="false">https://www.wholenotism.com/blog/?p=16936</guid>

					<description><![CDATA[特に役にたつ情報は無いと思いますが、凍結から復帰まで、思い出せることを書いてみようと思います。 目次 あれ？Xのアカウントが凍結されてる？異議申し立てを行うも秒で却下！ん？1週間ほど経って気が付く結局なんだったのか あれ [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>特に役にたつ情報は無いと思いますが、凍結から復帰まで、思い出せることを書いてみようと思います。</p>
<p><span id="more-16936"></span></p>

  <div id="toc" class="toc tnt-number tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4"><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">あれ？Xのアカウントが凍結されてる？</a></li><li><a href="#toc2" tabindex="0">異議申し立てを行うも秒で却下！</a></li><li><a href="#toc3" tabindex="0">ん？1週間ほど経って気が付く</a></li><li><a href="#toc4" tabindex="0">結局なんだったのか</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">あれ？Xのアカウントが凍結されてる？</span></h2>
<p>ある日突然何も操作できなくなっていました。</p>
<p><span class="bold" style="font-size:150%;"><strong>なんかおかしい。</strong></span><br />
そう思った時にはもう時すでに遅し。</p>
<p>ほんと何にもできません。<br />
いいねも投稿も削除も何もできない状態。検索もできなかったかな？<br />
「<strong>閲覧のみが許された状態</strong>」みたいなことを言われた気がします・・・。（記憶が曖昧）</p>
<p>遡ること数週間前。</p>
<p>とあるアプリ中の出来事に対して一言のお礼と、相手の名前の一部を伏せた画像をポストしていました。<br />
画像の中身は違えど同じ文言と同じようなサイズの画像。そして繰り返しの投稿。</p>
<p>これが自動化ツールを疑われたのかいわゆる「<strong>シャドウバン</strong>」になりました。</p>
<p>通知欄にて「仮フラグ」がつけられたとかなんとか言われ、他アカウントから検索しても出てこない。<br />
とはいえ、普通にテキストのみのポスト（ツイート）もしてたんですけどね。。。</p>
<p>ポストの頻度は1日1回〜数日に1回。投稿数も数個程度、決して大量とは言えない量です。</p>
<p>直接の原因かはわからないまま、疑われるようなポストは一応全部削除。そして放置。</p>
<p>しばらく（数日）して検索をかけたら表示されてました。ポストも検索結果に出てくる。</p>
<p>大丈夫になったのかな？と思いつつも、しばらくは控えようと再び放置。</p>
<p>1週間ほど経ってアクセスしたら<strong>アカウントが凍結してました。</strong><br />
凍結されたのは2日前だったようです。</p>
<h2><span id="toc2">異議申し立てを行うも秒で却下！</span></h2>
<p>どうすれば良いのかわからないながら、とりあえず異議申し立てを行うのは重要だろうと、やってみることに。</p>
<p>リンクが示されていたのか、検索して行き着いたのか定かではありませんが、<br />
「<strong>アカウントのロックまたは凍結に関する異議申し立て</strong>」フォームから異議申し立てを行いました。</p>
<ul class="bold">
<li>Xのルールに反していないこと</li>
<li>そもそも何のルールに抵触しているのかも不明であり</li>
<li>何かの間違いであろうこと</li>
<li>可及的速やかに復活させてほしいこと</li>
</ul>
<p>などを書いた気がします。念の為同じ内容の英文も添えました。<br />
わりとダイレクトな言い方だったと思います。（ムカついてたし）</p>
<p>そして送信することわずか<strong>数秒</strong>、メールが届きました。</p>
<pre class="nohighlight">Twitterからのお知らせです。
 
ご利用のアカウントは、Xルール（https://x.com/rules）に繰り返し違反したため凍結されました。
 
このアカウントは復活できません。
 
現在、本件への対応は終了しているため、ご返信をいただいても確認されませんのでご了承ください。
 
よろしくお願いします。
X 
</pre>
<p><strong>数秒ですよ！異議申し立ての送信から！</strong></p>
<p>AIによる自動返信なんでしょうね。</p>
<p>もうどうしようもないので泣き寝入り確定。放置。</p>
<h2><span id="toc3">ん？1週間ほど経って気が付く</span></h2>
<p>その後、新規アカウント作成などはしませんでした。するにしても1ヶ月くらい空けようかと。</p>
<p>検索したい時は別の用途に使っていたアカウントを使っていました。<br />
（だから作らなくてよかったんだけれども）</p>
<p>そして、そう言えばアカウント削除もしてないなと、しようかなと。あ、できないんだっけ？じゃぁせめてログアウトしてアイコンの表示を消そうかなと。<br />
そう思い立ち、念の為別アカウントから凍結されたアカウントのプロフィールを覗いてみました。</p>
<p>ん？<span class="bold" style="font-size:150%;"><strong>なんか表示されてるけど！？</strong></span></p>
<p>以前は「<strong>このアカウントは凍結されました</strong>」という文章だけが出ていたはずです。</p>
<p>さらに昔投稿した文言で検索してもちゃんとポスト（ツイート）が出てくる。</p>
<p>その時点でログアウトはしていませんでした。<br />
二つのアカウントを必要に応じて使い分けていて、もう一つの方にログインしている状態です。</p>
<p>アカウントを切り替えるのは正直怖いけど、やってみないと本当のところがわからない。</p>
<p>逡巡したのちに思い切って切り替えてみると・・・</p>
<p>画面が真っ黒！！！<br />
<a href="https://www.wholenotism.com/blog/wp-content/uploads/20260422-001.jpg"><img fetchpriority="high" decoding="async" src="https://www.wholenotism.com/blog/wp-content/uploads/20260422-001.jpg" alt="黒画面" width="800" height="452" class="alignnone size-full wp-image-16937" srcset="https://www.wholenotism.com/blog/wp-content/uploads/20260422-001.jpg 800w, https://www.wholenotism.com/blog/wp-content/uploads/20260422-001-300x170.jpg 300w, https://www.wholenotism.com/blog/wp-content/uploads/20260422-001-768x434.jpg 768w, https://www.wholenotism.com/blog/wp-content/uploads/20260422-001-120x68.jpg 120w, https://www.wholenotism.com/blog/wp-content/uploads/20260422-001-160x90.jpg 160w, https://www.wholenotism.com/blog/wp-content/uploads/20260422-001-320x180.jpg 320w" sizes="(max-width: 800px) 100vw, 800px" /></a></p>
<p>その後これが現れました。<br />
<a href="https://www.wholenotism.com/blog/wp-content/uploads/20260422-002.jpg"><img decoding="async" src="https://www.wholenotism.com/blog/wp-content/uploads/20260422-002.jpg" alt="プレミアム（サブスクライブ）" width="800" height="452" class="alignnone size-full wp-image-16939" srcset="https://www.wholenotism.com/blog/wp-content/uploads/20260422-002.jpg 800w, https://www.wholenotism.com/blog/wp-content/uploads/20260422-002-300x170.jpg 300w, https://www.wholenotism.com/blog/wp-content/uploads/20260422-002-768x434.jpg 768w, https://www.wholenotism.com/blog/wp-content/uploads/20260422-002-120x68.jpg 120w, https://www.wholenotism.com/blog/wp-content/uploads/20260422-002-160x90.jpg 160w, https://www.wholenotism.com/blog/wp-content/uploads/20260422-002-320x180.jpg 320w" sizes="(max-width: 800px) 100vw, 800px" /></a></p>
<p>プレミアム（サブスクライブ）への勧誘画面</p>
<p><span class="bold" style="font-size:150%;">宣伝やないか〜い！</span></p>
<p>・・・ビビらせんなって。いやまじで！ほんとに！勘弁して。</p>
<p>プロフィールを開くと全てが元通りになっていました。<br />
フォローもフォロワーも0じゃない。<br />
検索したら検索結果にも表示される。</p>
<p>復活していたらしいです。いつのまにか。</p>
<p>試しにAIに状況説明して考えを聞いてみると「サブスクライブへの勧誘が出ている時点でステータスは制限・規制されているものから一般のユーザーに戻されているのではないか。規制対象なら勧誘されないはず」と言われ、なるほどと思ってしまった（笑　まぁ本当のところは分かりませんが。</p>
<p>いずれにせよ解除されたからといってすぐに活動せず、また1、2週間ほど間を空けようと考えています。</p>
<h2><span id="toc4">結局なんだったのか</span></h2>
<p>理由はわかりません。<br />
ただ一つ気になるのは、「ご利用のXアカウントは凍結されました」というメール内の文言。</p>
<pre class="nohighlight">ご利用のアカウント（xxxxxxxx）は、Xルールに違反していることが報告されたため凍結されました。
 
具体的な内容は次のとおりです。
 
偽装行為を禁止するルールに違反しています
</pre>
<p>「Xルールに違反していることが<strong>報告されたため</strong>」？報告された？誰に？<br />
悪質なコミュニティノートを貼りまくっているアカウントを批判したことがありました。もしかして？</p>
<p><strong>「偽装行為を禁止するルールに違反しています」</strong><br />
偽装行為、<strong>嘘の告発</strong>をするのに<strong>使いやすかった</strong>のでしょうか。<br />
なりすましのような投稿内容でないことは明らかでした。おそらくその辺も考慮されて凍結解除されたのではないかとも思いますが。</p>
<p>そしてあくまでも推察ですが、<br />
悪質なユーザーによる虚偽告発により、AIが自動判断、凍結からの異議申し立ても秒で却下。<br />
ただその裏で別の判断（AI？人間の目によるもの？）があり、解除に至ったのではないかと。</p>
<p>全くもって勝手な想像の域を出ませんが、<br />
ただ一つ言えることは<br />
<strong>Xルールに抵触した行動をとっていない場合</strong>、であれば、永久凍結から復活する可能性もゼロではないこと。</p>
<p>異議申し立てをする際にははっきりと（具体的に）内容を書くこと。</p>
<p>が有効なのではないかと思います。</p>
<p>あくまでも、一個人の一体験に過ぎず、x側の論理で動く話なので何も断定はできません。<br />
繰り返しの異議申し立てが良いとも悪いとも言えません。<br />
何の有益な情報もお伝えできないのは心苦しいところがありますが、<br />
ただ<strong>復活の希望はある</strong>とだけ申し添えておきます。<br />
では。</p>
		<div class="wpulike wpulike-heart " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="16936"
					data-ulike-nonce="864d544ff3"
					data-ulike-type="post"
					data-ulike-template="wpulike-heart"
					data-ulike-display-likers="0"
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_16936"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="+2"></span>			</div></div>
	]]></content:encoded>
					
					<wfw:commentRss>https://www.wholenotism.com/blog/2026/04/x-account-recovery.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>GeminiのBANが怖いので、ログアウト運用＋前提プロンプト挿入を自動化してみた</title>
		<link>https://www.wholenotism.com/blog/2026/04/gemini-one-click-prompt.html</link>
					<comments>https://www.wholenotism.com/blog/2026/04/gemini-one-click-prompt.html#respond</comments>
		
		<dc:creator><![CDATA[watary]]></dc:creator>
		<pubDate>Sun, 05 Apr 2026 05:41:16 +0000</pubDate>
				<category><![CDATA[コンピュータ関連]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[tampermonkey]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[プログラム・スクリプト]]></category>
		<guid isPermaLink="false">https://www.wholenotism.com/blog/?p=16732</guid>

					<description><![CDATA[目次 AIは基本的に一時チャットで使いたい派Tampermonkeyを使ってプロンプト挿入ボタンを置く注意点ログアウト状態での長いやりとりはブラックリスト入り！？まとめ AIは基本的に一時チャットで使いたい派 普段から  [&#8230;]]]></description>
										<content:encoded><![CDATA[
  <div id="toc" class="toc tnt-number tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-6"><label class="toc-title" for="toc-checkbox-6">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">AIは基本的に一時チャットで使いたい派</a></li><li><a href="#toc2" tabindex="0">Tampermonkeyを使ってプロンプト挿入ボタンを置く</a><ol><li><a href="#toc3" tabindex="0">注意点</a></li><li><a href="#toc4" tabindex="0">ログアウト状態での長いやりとりはブラックリスト入り！？</a></li></ol></li><li><a href="#toc5" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">AIは基本的に一時チャットで使いたい派</span></h2>
<p>普段から Google Gemini を利用させてもらっていますが、<strong>ログアウトした状態</strong>で使っています。</p>
<p>AIは基本的に一時チャットで使いたい派。<br />
会話履歴とか引きずって欲しくないんです。</p>
<p>ChatGPTもClaudeも一時チャット（シークレット/インコグニートモード）。全部無料版ですが。<br />
Geminiはログアウトした状態でも使えるのでログインせずに使っています。</p>
<p>最近小耳に挟んだ話で「<strong>GeiminiでアカウントがBANされると、そのGoogleアカウントに紐づいた全てのサービスが使えなくなる</strong>」なんてことを聞きました。GmailからGoogle driveから全てだとか。恐ろしいにも程がある。<br />
それならなるべくログアウトした状態で使いたい。</p>
<p>ただちょっとだけ困るのが、<strong>プロンプト（カスタム指示）が設定できないこと。</strong></p>
<p>当の本人に聞いてみたら<br />
「会話の初めに書くと良いよ！」<br />
とのことなので、必要な時にワンクリックで前提プロンプトを挿入できるようにしてみました。</p>
<p><span id="more-16732"></span></p>
<h2><span id="toc2">Tampermonkeyを使ってプロンプト挿入ボタンを置く</span></h2>
<p>「Tampermonkey」はFirefoxやChromeなどでユーザースクリプト（JavaScript）を管理・実行できる無料のブラウザ拡張機能です。<br />
その機能を使って「プロンプト挿入ボタン」を作成します。</p>
<p>ダッシュボードの「＋」ボタンから新規スクリプトを追加。<br />
下記コードをコピペします。保存したら有効化しているかも確認。</p>
<pre><code>
// ==UserScript==
// @name         Gemini 定型文挿入（1回使い切りボタン）
// @namespace    http://tampermonkey.net/
// @version      1.2
// @description  定型文挿入後、すぐ入力できるように末尾にカーソルを移動し、ボタンを消去
// @match        https://gemini.google.com/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    const myPrompt = "【前提条件：①事実と推測を分離 ②ハルシネーション回避。根拠が不十分な場合は「不明」と明記し断定をしない ③ユーザーの意図や期待に迎合して、事実認識や論理的な結論を歪めないこと（忖度禁止）。】\n\n";
    // ボタンの作成
    const btn = document.createElement('button');
    btn.id = 'gemini-prompt-btn'; // IDを付与
    btn.textContent = "&#x1f6e1;&#xfe0f; 厳格モード"
    btn.setAttribute('style', 'position:fixed; bottom:120px; right:20px; z-index:9999; padding:12px 20px; background:#1a73e8; color:white; border:none; border-radius:30px; cursor:pointer; font-weight:bold; box-shadow: 0 4px 12px rgba(0,0,0,0.2); transition: opacity 0.3s;');

    btn.onclick = function() {
        const container = document.querySelector('div[contenteditable="true"]');

        if (container) {
            // 1. テキストをセット
            container.innerText = myPrompt;

            // 2. 入力イベントを発火
            container.dispatchEvent(new Event('input', { bubbles: true }));

            // 3. カーソルを末尾に移動
            const range = document.createRange();
            const sel = window.getSelection();
            range.selectNodeContents(container);
            range.collapse(false);
            sel.removeAllRanges();
            sel.addRange(range);

            container.focus();

            // 4. ボタンを消去（フェードアウトさせてから削除）
            btn.style.opacity = '0';
            setTimeout(() => {
                btn.remove();
            }, 300);

        } else {
            alert('入力欄が見つかりませんでした。ページを更新してみてください。');
        }
    };

    // ページ読み込み時にボタンを追加
    document.body.appendChild(btn);
})();
</code></pre>
<p>やってることはシンプル。</p>
<ol class="bold">
<li>入力欄を取得</li>
<li>テキストをセット</li>
<li>カーソルを末尾に移動</li>
<li>ボタンをフェードアウトして削除</li>
</ol>
<p>あらかじめ <code>myPrompt</code> に前提となるプロンプトを記述しておき、<br />
厳格なプロンプトを適用したい時にボタン押下で入力欄に挿入します。</p>
<p><a href="https://www.wholenotism.com/blog/wp-content/uploads/20260405-001.jpg"><img decoding="async" src="https://www.wholenotism.com/blog/wp-content/uploads/20260405-001-800x501.jpg" alt="プロンプト挿入ボタン" width="800" height="501" class="alignnone size-large wp-image-16736" srcset="https://www.wholenotism.com/blog/wp-content/uploads/20260405-001-800x501.jpg 800w, https://www.wholenotism.com/blog/wp-content/uploads/20260405-001-300x188.jpg 300w, https://www.wholenotism.com/blog/wp-content/uploads/20260405-001-768x481.jpg 768w, https://www.wholenotism.com/blog/wp-content/uploads/20260405-001.jpg 874w" sizes="(max-width: 800px) 100vw, 800px" /></a></p>
<div class="ad-area no-icon ad-shortcode ad-fluid ad-label-invisible cf" itemscope itemtype="https://schema.org/WPAdBlock">
  <div class="ad-label" itemprop="name" data-nosnippet>スポンサーリンク</div>
  <div class="ad-wrap">
    <div class="ad-responsive ad-usual"><!-- レスポンシブコード -->
<ins class="adsbygoogle"
  style="display:block"
  data-ad-client="ca-pub-4405475467092514"
  data-ad-slot="2803567186"     data-ad-layout="in-article"
  data-ad-format="fluid"
  data-full-width-responsive="true"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
          </div>

</div>

<p>もう少し細かく説明すると、</p>
<p>ボタンがクリックされたら、<br />
<code>contenteditable="true"</code> が付いた div を探します。これが入力欄。</p>
<pre><code>const container = document.querySelector('div[contenteditable="true"]');</code></pre>
<p>見つかったらプロンプトをセット</p>
<pre><code>container.innerText = myPrompt;</code></pre>
<p>inputイベントを発火<br />
テキストが挿入されて「変更があった」ことを認識させ</p>
<pre><code>container.dispatchEvent(new Event('input', { bubbles: true }));</code></pre>
<p>カーソルを末尾に移動</p>
<pre><code>const range = document.createRange(); //空の選択範囲を作成
const sel = window.getSelection(); //現在の選択状態を取得
range.selectNodeContents(container); //containerの中身全体を選択
range.collapse(false); //末尾に折りたたむ -> 最後にカーソルを移動
sel.removeAllRanges(); //今の選択を全部クリア
sel.addRange(range); //「現在の選択」として設定
</code></pre>
<p>入力欄をアクティブにして、続けてユーザーが入力できるようにします。</p>
<p>最後にもう必要ないのでボタンを消去。</p>
<p>ちなみに会話の途中からプロンプトを挿入することは想定していません。<br />
ログアウト状態なので、毎回サイトを開くたびにフレッシュスタート、初めましての状態です。<br />
その<strong>最初に入力することを想定</strong>しています。</p>
<h3><span id="toc3">注意点</span></h3>
<p>これは現在（2026年4月）の時点で有効なものです。ページの構成や仕様が変わったら動かなくなる可能性があります。<br />
特に</p>
<pre><code>const container = document.querySelector('div[contenteditable="true"]');</code></pre>
<p>この部分は変更されたら入力欄が取得できないので、動かなくなったらソースを見て適宜変更してください。</p>
<h3><span id="toc4">ログアウト状態での長いやりとりはブラックリスト入り！？</span></h3>
<div class="alert-box"><strong>長いやり取りをログアウト状態で続けると一時的にブラックリストに入る可能性があります。</strong></div>
<p>具体的にはそのチャット画面で送信ができなくなり、改めてアクセスしても「502エラー」の画面が出たりするようになります。<br />
502は基本的にサーバー側のエラーなのですが、ある時Firefoxでは繋がらなくなり、safariなら問題なくアクセスできるという状況になりました。FIrefoxのキャッシュやらなにやらクリアしても状況は変わらず。<br />
IPアドレスによる拒否ではないようで、そのままsafariでgeminiに起きている事象を聞いてみたら「一時的に接続拒否されているかも」、と。</p>
<p>時間を開ければ復活するようですが、あまり長いやり取りをするのは避けましょう。<br />
様子がおかしくなってきたら切り上げるか、<br />
「ここまでの内容を次のスレで使えるように要約して」と話をまとめてメモし、少し間をあけましょう。</p>
<h2><span id="toc5">まとめ</span></h2>
<p>ということでGeminiを開いたらボタンが現れ、必要な時はワンクリックでプロンプトを挿入できるようになりました。</p>
<p>他愛のない話をする分には必要ありませんが、調べ物なんかの時に嘘つかれるのが厄介というか、面倒なんですよね。</p>
<p>いちいち手入力するのもかったるいので作ってみました。</p>
<p>ただログアウト状態で使っていると画像が扱えないなどの機能制限がありますし、やり取りが長引いた時はそれとなくログインするよう勧めてきます。<br />
自分の場合は聞きたいことを必要な時に聞くだけなので特に支障はありませんが。</p>
<p>そして上記の方法は、Googleアカウントに紐づかないからと言ってリスクが無くなるわけではありません。<br />
<strong>「リスクをゼロにする」のではなく「被害範囲を限定する」アプローチ</strong>であることもお忘れなく。<br />
何をしてもいいわけではありませんから。</p>
<p>以上、備忘録として記事化してみました。<br />
なにかの参考になれば幸いです。</p>
		<div class="wpulike wpulike-heart " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="16732"
					data-ulike-nonce="6383743f88"
					data-ulike-type="post"
					data-ulike-template="wpulike-heart"
					data-ulike-display-likers="0"
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_16732"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>
	]]></content:encoded>
					
					<wfw:commentRss>https://www.wholenotism.com/blog/2026/04/gemini-one-click-prompt.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ブラウザで数式がちゃんと表示されない？なんかおかしい時の対処法</title>
		<link>https://www.wholenotism.com/blog/2026/03/old-mathjax-issue.html</link>
					<comments>https://www.wholenotism.com/blog/2026/03/old-mathjax-issue.html#respond</comments>
		
		<dc:creator><![CDATA[watary]]></dc:creator>
		<pubDate>Mon, 30 Mar 2026 08:23:16 +0000</pubDate>
				<category><![CDATA[コンピュータ関連]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[web]]></category>
		<guid isPermaLink="false">https://www.wholenotism.com/blog/?p=16700</guid>

					<description><![CDATA[とあるサイトを読んでいて、 数式がちゃんと表示されていない ことに気がついた。 分数の横線「括線（かっせん）」が表示されていないので、式がもんのすごく読みにくい。 なんとなく横線あるんだろうなぁ、と思いながら読んでいたけ [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>とあるサイトを読んでいて、</p>
<p><strong>数式がちゃんと表示されていない</strong> ことに気がついた。</p>
<p>分数の横線「<strong>括線（かっせん）</strong>」が表示されていないので、式がもんのすごく読みにくい。</p>
<p>なんとなく横線あるんだろうなぁ、と思いながら読んでいたけど読みづらいにも程がある。</p>
<p>普段から接するような内容じゃなかったので一瞬戸惑いましたが、対処法があったので短めですが記事としてシェア。</p>
<p><span id="more-16700"></span></p>

  <div id="toc" class="toc tnt-number tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-8"><label class="toc-title" for="toc-checkbox-8">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">数式がちゃんと表示されてない！？</a></li><li><a href="#toc2" tabindex="0">解決法：数式がちゃんと表示されない時はレンダラーを変更</a></li><li><a href="#toc3" tabindex="0">MathJaxのバージョンが古いと発現する？</a></li><li><a href="#toc4" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">数式がちゃんと表示されてない！？</span></h2>
<p>改めて勉強しようかと、とあるサイトを読み進めていた時、こんな表示にぶつかった。</p>
<p><a href="https://www.wholenotism.com/blog/wp-content/uploads/20260330-001.jpg"><img loading="lazy" decoding="async" src="https://www.wholenotism.com/blog/wp-content/uploads/20260330-001.jpg" alt="数式" width="287" height="138" class="alignnone size-full wp-image-16705" /></a></p>
<p>ん？どゆこと？<br />
まぁ内容的に横線（括線）が表示されてないだけだろうと。<br />
もしかして知らない間に表示倍率が変わって？表示がおかしくなってるのかもと確認したけど問題ない。</p>
<p>先に進むとさらに読みづらさは増してくる。</p>
<p><a href="https://www.wholenotism.com/blog/wp-content/uploads/20260330-002.jpg"><img loading="lazy" decoding="async" src="https://www.wholenotism.com/blog/wp-content/uploads/20260330-002.jpg" alt="数式" width="526" height="193" class="alignnone size-full wp-image-16706" srcset="https://www.wholenotism.com/blog/wp-content/uploads/20260330-002.jpg 526w, https://www.wholenotism.com/blog/wp-content/uploads/20260330-002-300x110.jpg 300w" sizes="(max-width: 526px) 100vw, 526px" /></a></p>
<p>さすがにイライラしてしまう。</p>
<h2><span id="toc2">解決法：数式がちゃんと表示されない時はレンダラーを変更</span></h2>
<div class="information-box">環境：Mac Sonoma,Firefox 149</div>
<p>数式を表示するのに <strong>MathJax</strong> というJavaScriptライブラリを使っている場合に起こるようだ。しかも古いバージョンの時に。</p>
<p>MathJaxを使っている場合は数式上で右クリックするとメニューが現れる。</p>
<p><a href="https://www.wholenotism.com/blog/wp-content/uploads/20260330-003.jpg"><img loading="lazy" decoding="async" src="https://www.wholenotism.com/blog/wp-content/uploads/20260330-003.jpg" alt="数式" width="783" height="335" class="alignnone size-full wp-image-16707" srcset="https://www.wholenotism.com/blog/wp-content/uploads/20260330-003.jpg 783w, https://www.wholenotism.com/blog/wp-content/uploads/20260330-003-300x128.jpg 300w, https://www.wholenotism.com/blog/wp-content/uploads/20260330-003-768x329.jpg 768w" sizes="(max-width: 783px) 100vw, 783px" /></a></p>
<p><strong>Math Settings &gt; Math Renderer &gt; Common HTML</strong></p>
<p>などに変更するとちゃんと表示された。<br />
デフォルトの <strong>HTML-CSS</strong> だと表示が崩れるらしい。</p>
<p>これでOK</p>
<p><a href="https://www.wholenotism.com/blog/wp-content/uploads/20260330-004.jpg"><img loading="lazy" decoding="async" src="https://www.wholenotism.com/blog/wp-content/uploads/20260330-004.jpg" alt="数式" width="512" height="190" class="alignnone size-full wp-image-16708" srcset="https://www.wholenotism.com/blog/wp-content/uploads/20260330-004.jpg 512w, https://www.wholenotism.com/blog/wp-content/uploads/20260330-004-300x111.jpg 300w" sizes="(max-width: 512px) 100vw, 512px" /></a></p>
<div class="ad-area no-icon ad-shortcode ad-fluid ad-label-invisible cf" itemscope itemtype="https://schema.org/WPAdBlock">
  <div class="ad-label" itemprop="name" data-nosnippet>スポンサーリンク</div>
  <div class="ad-wrap">
    <div class="ad-responsive ad-usual"><!-- レスポンシブコード -->
<ins class="adsbygoogle"
  style="display:block"
  data-ad-client="ca-pub-4405475467092514"
  data-ad-slot="2803567186"     data-ad-layout="in-article"
  data-ad-format="fluid"
  data-full-width-responsive="true"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
          </div>

</div>

<h2><span id="toc3">MathJaxのバージョンが古いと発現する？</span></h2>
<p>画像で数式を表示しているところも多く、そういった場所ではもちろん問題がないのだけれど、<br />
前述の通り、バージョンが古いMathJaxを使っている場合に問題が発生する。</p>
<p>問題があったサイトはMathJaxのバージョンが <strong>v2.7.7</strong></p>
<p><a href="https://www.wholenotism.com/blog/wp-content/uploads/20260330-005.jpg"><img loading="lazy" decoding="async" src="https://www.wholenotism.com/blog/wp-content/uploads/20260330-005.jpg" alt="v2.7.7" width="402" height="532" class="alignnone size-full wp-image-16704" srcset="https://www.wholenotism.com/blog/wp-content/uploads/20260330-005.jpg 402w, https://www.wholenotism.com/blog/wp-content/uploads/20260330-005-227x300.jpg 227w" sizes="(max-width: 402px) 100vw, 402px" /></a></p>
<p>バージョン <strong>v3.2.2</strong> を使っているサイトだと問題なく表示される。<br />
<a href="https://www.wholenotism.com/blog/wp-content/uploads/20260330-006.jpg"><img loading="lazy" decoding="async" src="https://www.wholenotism.com/blog/wp-content/uploads/20260330-006.jpg" alt="v3.2.2" width="537" height="253" class="alignnone size-full wp-image-16703" srcset="https://www.wholenotism.com/blog/wp-content/uploads/20260330-006.jpg 537w, https://www.wholenotism.com/blog/wp-content/uploads/20260330-006-300x141.jpg 300w" sizes="(max-width: 537px) 100vw, 537px" /></a></p>
<p>レンダラーは変えても変えなくても問題ない。どちらでもちゃんと表示されている。</p>
<p><a href="https://www.wholenotism.com/blog/wp-content/uploads/20260330-007.jpg"><img loading="lazy" decoding="async" src="https://www.wholenotism.com/blog/wp-content/uploads/20260330-007.jpg" alt="レンダラー" width="584" height="331" class="alignnone size-full wp-image-16702" srcset="https://www.wholenotism.com/blog/wp-content/uploads/20260330-007.jpg 584w, https://www.wholenotism.com/blog/wp-content/uploads/20260330-007-300x170.jpg 300w, https://www.wholenotism.com/blog/wp-content/uploads/20260330-007-120x68.jpg 120w, https://www.wholenotism.com/blog/wp-content/uploads/20260330-007-160x90.jpg 160w, https://www.wholenotism.com/blog/wp-content/uploads/20260330-007-320x180.jpg 320w" sizes="(max-width: 584px) 100vw, 584px" /></a></p>
<p>バージョンが <strong>3.x以降</strong> であれば問題なく表示されるようだ。</p>
<h2><span id="toc4">まとめ</span></h2>
<p>古いサイトで、古いバージョンのまま残っている場合に問題が生じるようです。</p>
<p>ちなみに <strong>safari（ver 26.3）</strong> で開いたら問題なく表示されていました。</p>
<p>FirefoxやChromeなんかで表示が崩れるらしい。</p>
<p>今回の問題は</p>
<ul class="bold">
<li>MathJax の古いバージョンを使っていること</li>
<li>FirefoxやChromeで開いていること</li>
</ul>
<p>というかなり限られた条件に合致した時にしか発現しないと思われる。が、一般的にないとも言えないので備忘録も兼ねて記事化。</p>
<p>何かの参考になれば幸いです。</p>
		<div class="wpulike wpulike-heart " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="16700"
					data-ulike-nonce="418406c8e2"
					data-ulike-type="post"
					data-ulike-template="wpulike-heart"
					data-ulike-display-likers="0"
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_16700"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>
	]]></content:encoded>
					
					<wfw:commentRss>https://www.wholenotism.com/blog/2026/03/old-mathjax-issue.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>PC版インスタで動画を早送り・巻き戻し！シークバーを表示させる方法【ブックマークレット】</title>
		<link>https://www.wholenotism.com/blog/2026/03/instagram-vid-seekbar.html</link>
					<comments>https://www.wholenotism.com/blog/2026/03/instagram-vid-seekbar.html#respond</comments>
		
		<dc:creator><![CDATA[watary]]></dc:creator>
		<pubDate>Sat, 07 Mar 2026 14:16:36 +0000</pubDate>
				<category><![CDATA[コンピュータ関連]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[プログラム・スクリプト]]></category>
		<guid isPermaLink="false">https://www.wholenotism.com/blog/?p=16665</guid>

					<description><![CDATA[PC版（web版）のインスタグラムのサイトって動画のシークバーが出ないんですよね。 なんとなく気になると言うか、あとどれくらいで終わるのかがわからないとかが・・・なんか嫌。 ちょんちょんと早送り・巻き戻ししたくてもできな [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>PC版（web版）のインスタグラムのサイトって動画のシークバーが出ないんですよね。</p>
<p>なんとなく気になると言うか、あとどれくらいで終わるのかがわからないとかが・・・なんか嫌。<br />
ちょんちょんと<strong>早送り・巻き戻し</strong>したくてもできないし。</p>
<p>んで、実は以前 uBlock origin で対策する方法を<a rel="noopener" href="https://www.wholenotism.com/blog/2021/08/instagram-mvctrlbar.html" target="_blank">記事</a>にしました。<br />
でもそれからもう5年？弱も経っているので当然そのままでは動作しないと思う。</p>
<p>やり方は有効なはずなので工夫次第でなんとでもなるのですが、<br />
せっかくなので現在使っているブックマークレットの方をシェアしようかと思います。<br />
ログを見ていたらそのページにアクセスしている人もいるようなので。<br />
備忘録も兼ねて記事化。</p>
<p><span id="more-16665"></span></p>

  <div id="toc" class="toc tnt-number tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-10"><label class="toc-title" for="toc-checkbox-10">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">PC版Instagramに動画コントロールがない？</a></li><li><a href="#toc2" tabindex="0">ビデオコントロールバーを表示するブックマークレット</a><ol><li><a href="#toc3" tabindex="0">注意点</a></li></ol></li><li><a href="#toc4" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">PC版Instagramに動画コントロールがない？</span></h2>
<p>残念ながら<strong>PC ブラウザ（Web 版）では再生コントロールが表示されません</strong>。早送り・巻き戻しができず、<strong>地味に不便</strong>です。<br />
かといって拡張機能を入れるほどでもない。</p>
<p>そもそもブラウザの機能でビデオコントローラーはあります。シークバーや音量調整なども表示できるのです。<br />
要はそれを表に出そう、ユーザーがアクセスできるようにしようというお話です。</p>
<h2><span id="toc2">ビデオコントロールバーを表示するブックマークレット</span></h2>
<p>ブックマークの <strong>URL欄</strong> にそのままコピー＆ペーストして使います。</p>
<ol class="bold">
<li>ブックマークバーを右クリック →「ページを追加…」（または「ブックマークを追加」）</li>
<li>名前を入力（例：インスタ動画バー）</li>
<li>URL欄に下記コードをコピペ</li>
</ol>
<pre><code>javascript: (() => {document.querySelectorAll("video").forEach(e=>{e.controls=!e.controls}),location.hostname.includes("instagram.com")&&document.querySelectorAll("[data-instancekey]").forEach(e=>{e.style.display=e.style.display==="none"?"":"none"});})();
</code></pre>
<p>あとはWeb版 Instagram で動画が表示されているページを開き、登録したブックマークレットをクリックするだけ。<br />
動画の下部にコントロールバーが現れます。<br />
もう一度押せば元に戻ります。</p>
<p>やっていることは単純で</p>
<ul class="bold">
<li>ページ内に読み込まれている videoタグ（動画）を探し</li>
<li>コントロールバーの表示オン・オフを切り替えます</li>
<li>さらに動画の上に重ねられている邪魔な要素（UIレイヤー）を非表示にする</li>
</ul>
<p>それだけです。</p>
<h3><span id="toc3">注意点</span></h3>
<p>現在の時点（2026年3月）では問題なく動作しますが、時間が経てばインスタ側の構造変更により動かなくなることも予想できます。<br />
その場合は <code>[data-instancekey]</code> の部分などを開発者ツールで確認し直す必要があります。</p>
<p>あと、公式にサポートされた使い方ではない、と言う点はご承知おきください。</p>
<h2><span id="toc4">まとめ</span></h2>
<p>Web版インスタグラムの動画にコントロールバーを追加するブックマークレットを紹介してみました。<br />
拡張機能不要・登録したらすぐ使えるので気になったら試してみてください。</p>
<p>何かのヒントにでもなれば幸いです。<br />
では。</p>
		<div class="wpulike wpulike-heart " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="16665"
					data-ulike-nonce="2eae573dfb"
					data-ulike-type="post"
					data-ulike-template="wpulike-heart"
					data-ulike-display-likers="0"
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_16665"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="+2"></span>			</div></div>
	]]></content:encoded>
					
					<wfw:commentRss>https://www.wholenotism.com/blog/2026/03/instagram-vid-seekbar.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Bilibiliで動画再生中に登録画面が出てすぐ止まるのを回避する方法</title>
		<link>https://www.wholenotism.com/blog/2026/03/bilibili-login-pause-fix.html</link>
					<comments>https://www.wholenotism.com/blog/2026/03/bilibili-login-pause-fix.html#respond</comments>
		
		<dc:creator><![CDATA[watary]]></dc:creator>
		<pubDate>Sun, 01 Mar 2026 11:07:01 +0000</pubDate>
				<category><![CDATA[コンピュータ関連]]></category>
		<category><![CDATA[bilibili]]></category>
		<category><![CDATA[tampermonkey]]></category>
		<category><![CDATA[uBlock Origin]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[プログラム・スクリプト]]></category>
		<guid isPermaLink="false">https://www.wholenotism.com/blog/?p=16604</guid>

					<description><![CDATA[Bilibiliで動画を見てると1分くらいで登録画面が出て再生が止まる・・・。 フルスクリーンも解除されてしまうし、なんか嫌。煩わしい。 もちろん登録すれば出ないんでしょうけどそこまでじゃない。 なんとかしたい できるな [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><strong>Bilibiliで動画を見てると1分くらいで登録画面が出て再生が止まる・・・。</strong><br />
フルスクリーンも解除されてしまうし、なんか嫌。煩わしい。</p>
<p>もちろん登録すれば出ないんでしょうけどそこまでじゃない。</p>
<p>なんとかしたい<br />
できるなら。</p>
<p><span id="more-16604"></span></p>

  <div id="toc" class="toc tnt-number tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-12"><label class="toc-title" for="toc-checkbox-12">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">解決法①：uBlock Originのカスタムフィルタで回避</a><ol><li><a href="#toc2" tabindex="0">設定方法</a></li><li><a href="#toc3" tabindex="0">uBlock Origin の aost で中断</a></li></ol></li><li><a href="#toc4" tabindex="0">解決法②：TamperMonkeyのスクリプトで回避</a></li><li><a href="#toc5" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">解決法①：uBlock Originのカスタムフィルタで回避</span></h2>
<div class="information-box">環境は MacOS Sonoma, Firefox 147</div>
<p>まずは解決方法から。<br />
一つ目、uBlock Originのカスタムフィルタを使う。</p>
<p><a rel="noopener" href="https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/" target="_blank">uBlock Origin<span class="fa fa-external-link external-icon anchor-icon"></span></a> はWebブラウザ上で動作する「コンテンツ・広告ブロック拡張機能」です。<br />
その機能に <strong>JavaScriptインジェクション機能（scriptlet）</strong> と呼ばれるものがあります。</p>
<p>これを使うことで、<br />
<strong>自動停止と登録画面のポップアップの無効化</strong><br />
を試みます。</p>
<h3><span id="toc2">設定方法</span></h3>
<p>uBlock Originの「マイフィルター」に、次のルールを追加します。</p>
<pre class="plaintext"><code>bilibili.com##+js(aost, player.pause, /video\/video\.[0-9a-f]+\.js[\s\S]+?core\.[0-9a-f]+\.js[\s\S]+?emit/)</code></pre>
<p>保存したら、ページを再読み込みしてみてください。</p>
<p>再生後1分くらいで出てくる登録画面はもう出なくなっているはず。</p>
<p>フルスクリーンも解除されず、いい感じかなと。</p>
<p>注意点としては、</p>
<ul class="bold">
<li>Bilibili側の仕様変更で効かなくなる可能性がある</li>
<li>環境によっては動かないかも？（mac,Firefoxで確認したのみ）</li>
</ul>
<p>ということ。</p>
<p>あくまでも自分用に書いているので、うまく動かない場合は環境に合わせて工夫してみてください。</p>
<h3><span id="toc3">uBlock Origin の aost で中断</span></h3>
<p>ブラウザの開発ツールで自動停止時のスタックトレースを確認すると、<br />
<strong>video.xxxxx（ハッシュ）.js</strong> が入っているのがわかりました。これは手動で一時停止した際にはなかったものです。</p>
<p>uBlock Originには特定のスタックトレース条件に一致した場合のみ処理を中断する<strong>「abort-on-stack-trace（aost）」</strong>というscriptletがあります。</p>
<p>これを使ってスタック内に </p>
<ul class="bold">
<li>video/video.xxxxxx.js</li>
<li>core.xxxxx.js</li>
<li>emitを含む</li>
</ul>
<p>という条件に一致したときのみ <strong>player.pause</strong> を中断させます。</p>
<p>実は <strong>loginVersionEveryPlayInternval</strong> という文字列も出てくるので、</p>
<pre class="plaintext"><code>bilibili.com##+js(aost, player.pause, /loginVersionEveryPlayInternval/)</code></pre>
<p>でも効くのですが、この名前が変更されたら一発で動かなくなるので構造的に判断するようにしてみました。</p>
<p>一応これで通常の一時停止はそのままに、自動停止だけを無効化することができました。</p>
<p>現在の時点（2026.03.01）では特に不具合もなく動作しています。</p>
<div class="ad-area no-icon ad-shortcode ad-fluid ad-label-invisible cf" itemscope itemtype="https://schema.org/WPAdBlock">
  <div class="ad-label" itemprop="name" data-nosnippet>スポンサーリンク</div>
  <div class="ad-wrap">
    <div class="ad-responsive ad-usual"><!-- レスポンシブコード -->
<ins class="adsbygoogle"
  style="display:block"
  data-ad-client="ca-pub-4405475467092514"
  data-ad-slot="2803567186"     data-ad-layout="in-article"
  data-ad-format="fluid"
  data-full-width-responsive="true"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
          </div>

</div>

<h2><span id="toc4">解決法②：TamperMonkeyのスクリプトで回避</span></h2>
<p><a rel="noopener" href="https://addons.mozilla.org/ja/firefox/addon/tampermonkey/" target="_blank">Tampermonkey<span class="fa fa-external-link external-icon anchor-icon"></span></a> は、ユーザースクリプトを管理・実行できるブラウザの拡張機能です。</p>
<p>こちらはもっとシンプルと言いますか、<br />
手動でやることを自動化した感じ。</p>
<p><strong>登録画面が出たらそれを閉じて、一時停止している動画の再生ボタンを押す。自動的に。</strong><br />
シンプル。</p>
<p>新規スクリプトを追加、から以下をコピペ。</p>
<pre><code>
// ==UserScript==
// @name         Bilibili ポップアップ停止＆自動再生継続
// @namespace    http://tampermonkey.net/
// @version      1.2
// @description  動画再生中の登録勧誘ポップアップを削除し、停止した動画を再開させます。
// @author       me
// @match        *://www.bilibili.com/video/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    const observer = new MutationObserver(() => {
        //console.log("------------------------------------observe");
        const element = document.querySelector('.bili-mini-mask');
        if (element) {
            // ポップアップを削除
            element.remove();

            // 動画が停止している場合は再生を再開
            const video = document.querySelector('video');
            if (video && video.paused) {
                video.play().catch(e => console.log("再生再開に失敗しました:", e));
            }
        };

    });

    // ページの要素変化を監視開始
    observer.observe(document.body, {
        childList: true,
        subtree: false
    });
})();
</code></pre>
<p>こちらも注意点としては、Bilibili側の仕様変更で効かなくなる可能性があるということ。<br />
やってることはシンプルなのでクラス名の変更などで動かなくなったら適宜修正してください。</p>
<p>ただ<strong>こちらはフルスクリーン解除を回避していません。</strong></p>
<p>あと再生が止まることはありませんが、ちょっと引っかかるような感じはあるかもしれない。<br />
あまり気にならないけど。</p>
<h2><span id="toc5">まとめ</span></h2>
<p>Bilibiliの登録画面（ログイン誘導）表示による自動停止をこんな感じで回避してみました。</p>
<p>あくまでも個人用に書いたものを備忘録として記事化しています。<br />
自己責任にてご活用ください。</p>
<p>同じように困っている方の参考になれば幸いです。</p>
<p>では。</p>
		<div class="wpulike wpulike-heart " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="16604"
					data-ulike-nonce="4a4b7c82d9"
					data-ulike-type="post"
					data-ulike-template="wpulike-heart"
					data-ulike-display-likers="0"
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_16604"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="+2"></span>			</div></div>
	]]></content:encoded>
					
					<wfw:commentRss>https://www.wholenotism.com/blog/2026/03/bilibili-login-pause-fix.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Firefox147にアップデートしたらChatGPTが壊れた話</title>
		<link>https://www.wholenotism.com/blog/2026/01/firefox147breakchatgpt.html</link>
					<comments>https://www.wholenotism.com/blog/2026/01/firefox147breakchatgpt.html#respond</comments>
		
		<dc:creator><![CDATA[watary]]></dc:creator>
		<pubDate>Fri, 16 Jan 2026 20:20:42 +0000</pubDate>
				<category><![CDATA[コンピュータ関連]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[設定]]></category>
		<guid isPermaLink="false">https://www.wholenotism.com/blog/?p=16446</guid>

					<description><![CDATA[Mozillaから 147.0.1 がリリースされました。問題は修正されています。 FirefoxをアップデートしたらChatGPTの挙動がおかしくなった話。 アップデートの通知が来ていたので最新版にアップデートしたとこ [&#8230;]]]></description>
										<content:encoded><![CDATA[<div class="information-box">Mozillaから 147.0.1 がリリースされました。問題は修正されています。</div>
<p>FirefoxをアップデートしたらChatGPTの挙動がおかしくなった話。</p>
<p>アップデートの通知が来ていたので最新版にアップデートしたところ、直前まで普通に使えていたChatGPTの挙動がおかしくなりました。<br />
ページ自体は表示されるものの、入力やレスポンス周りが不安定で、実用にならない状態です。<br />
具体的には<strong>入力欄から送信ができない</strong>、<strong>返信が表示されない</strong>、<strong>ログインボタンが押下できない</strong>、などなど。</p>
<p>困るよね、こういうの&#8230;</p>
<p><span id="more-16446"></span></p>

  <div id="toc" class="toc tnt-number tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-14"><label class="toc-title" for="toc-checkbox-14">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">まずは定番の切り分けから</a></li><li><a href="#toc2" tabindex="0">Firefoxのバージョンを戻したら復旧</a></li><li><a href="#toc3" tabindex="0">about:configで回避できるという情報も</a><ol><li><a href="#toc4" tabindex="0">network.http.dictionaries.enable とは</a></li><li><a href="#toc5" tabindex="0">false にすると直る可能性がある理由（推察）</a></li></ol></li><li><a href="#toc6" tabindex="0">自分の対応とおすすめ</a></li><li><a href="#toc7" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">まずは定番の切り分けから</span></h2>
<p>ブラウザ絡みの不具合ということで、最初に疑ったのはアドオンや設定の影響です。</p>
<ol class="bold">
<li>トラブルシューティングモード（旧セーフモード）で起動</li>
<li>アドオンやテーマをすべて無効化</li>
</ol>
<p>しかし、結果は変わらず。<br />
この時点で<strong>「少なくともアドオン由来ではなさそうだ」</strong>と判断しました。</p>
<p>キャッシュやクッキーも削除してみましたが、状況は変わらず。<br />
それどころかログインすらできない状態に。</p>
<h2><span id="toc2">Firefoxのバージョンを戻したら復旧</span></h2>
<p>次に試したのがFirefox本体のバージョン変更です。</p>
<p><span class="bold" style="font-size:150%;">本来ダウングレードは推奨されません！</span>が、</p>
<p>たまたま数日前にMacOSのアップデートを実施。<br />
その際にアップデート前のプロファイルを保存していたので、新たに一つ前のver146をダウンロード＆インストール、プロファイルの中身全コピペで復旧しました。</p>
<p>結果として問題はあっさり解消。</p>
<p>このことから、今回の不具合はFirefox本体で発生している可能性が高そうです。</p>
<h2><span id="toc3">about:configで回避できるという情報も</span></h2>
<p>調べていく中で、一つ興味深い情報を見つけました。</p>
<p><strong>about:config</strong> を開き、以下の設定を変更すると問題を回避できる場合がある、というものです。</p>
<ol class="bold">
<li>network.http.dictionaries.enable</li>
<li>値を false に変更</li>
</ol>
<p><cite>参考サイト：<a rel="noopener" href="https://connect.mozilla.org/t5/discussions/chatgpt-not-working-anymore-in-firefox-147-0-64-bit-updated/m-p/116062#M45311" target="_blank">Mozilla Connect（公式）「ChatGPT not working anymore in Firefox 147.0 (64 bit) updated today」<span class="fa fa-external-link external-icon anchor-icon"></span></a></cite></p>
<p>どうやら最近のFirefoxで導入・変更されたHTTP周りの挙動が、ChatGPT側と相性問題を起こしている可能性がありそうです。</p>
<h3><span id="toc4">network.http.dictionaries.enable とは</span></h3>
<p>ちなみに、<br />
<strong>network.http.dictionaries.enable</strong> とは Mozilla Firefox の内部設定の一つで、HTTP圧縮における「圧縮辞書（compression dictionaries）」の利用を制御するためのフラグ、らしいです。</p>
<p>この設定を <strong>false</strong> にすると、Firefox は圧縮辞書機能を無効化し、特定の辞書ベース圧縮のやり取りをしなくなります。</p>
<h3><span id="toc5">false にすると直る可能性がある理由（推察）</span></h3>
<p>以下は 観測ベースの推察としてまとめたものです。</p>
<ol class="bold">
<li>設定を false にすると、Firefox は圧縮辞書を一切使わなくなる。</li>
<li>その結果、ChatGPT 側とやり取りされる通信は標準的な圧縮（gzip など）にフォールバックされる。</li>
<li>これにより、圧縮辞書による不整合が回避され、Web UI等 が正常に読み込まれるようになる。</li>
</ol>
<p>簡潔に言えば</p>
<p>圧縮辞書機能が原因で出ている不整合／エラーを無効化するため、従来どおりの圧縮処理になる→結果としてトラブルが回避される可能性がある<br />
という考え方です。（※あくまで現時点での推測です）</p>
<p>ただし多くの改善報告がある一方、<br />
Geminiの方で不具合が出るなどの報告もあるようです（<a rel="noopener" href="https://connect.mozilla.org/t5/discussions/proposed-fix-for-chatgbt-breaks-google-gemini/td-p/116042" target="_blank">※<span class="fa fa-external-link external-icon anchor-icon"></span></a>）</p>
<h2><span id="toc6">自分の対応とおすすめ</span></h2>
<p>自分の場合は、特に急ぎではなかったため、</p>
<p><strong>Firefox 146に戻し、<br />
次のマイナーアップデートで修正されるのを待つ</strong></p>
<p>という対応を選びました。</p>
<p>ただし、</p>
<ol class="bold">
<li>Firefoxをどうしても最新版のまま使いたい</li>
<li>ダウングレードは避けたい、できない</li>
</ol>
<p>という人は、一時的に <strong>network.http.dictionaries.enable</strong> を <strong>false</strong> にする方法を試してみる価値はあると思います。</p>
<p>Mozilla 側でも修正を含んだ 147.0.1 リリースが進行中という話なので、<br />
そう時間を空けずに公開されるでしょう。</p>
<p>数日待ったら解決するような気もします、たぶんね。</p>
<div class="information-box">数時間後に ver147.0.1 がリリースされました。前述の設定の値をデフォルトで変更した模様（<a rel="noopener" href="https://www.firefox.com/en-US/firefox/147.0.1/releasenotes/" target="_blank">リリースノート<span class="fa fa-external-link external-icon anchor-icon"></span></a>）。再度アップデートした後は問題ありません</div>
<h2><span id="toc7">まとめ</span></h2>
<p>今回の件を整理すると、</p>
<ol class="bold">
<li>Firefoxアップデート後にChatGPTの挙動が不安定になる場合がある</li>
<li>トラブルシューティングモードでも改善しない場合、アドオン以外が原因の可能性が高い</li>
<li>Firefox 146に戻すと正常動作した</li>
<li>about:config の設定変更で回避できるケースもあるらしい</li>
</ol>
<p>という状況です。</p>
<p>ブラウザとWebサービスの組み合わせによる不具合は、ユーザー側ではなかなか厄介ですが、同じ現象に遭遇した人の参考になれば幸いです。<br />
ただし、あくまでも今回の不具合に際して、という点にご留意ください。</p>
<p>では。</p>
		<div class="wpulike wpulike-heart " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="16446"
					data-ulike-nonce="f496fa7172"
					data-ulike-type="post"
					data-ulike-template="wpulike-heart"
					data-ulike-display-likers="0"
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_16446"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>
	]]></content:encoded>
					
					<wfw:commentRss>https://www.wholenotism.com/blog/2026/01/firefox147breakchatgpt.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>YouTubeで特定のチャンネルをブロック/非表示/排除する方法（ログインなし）</title>
		<link>https://www.wholenotism.com/blog/2025/07/block-channels-on-youtube.html</link>
					<comments>https://www.wholenotism.com/blog/2025/07/block-channels-on-youtube.html#respond</comments>
		
		<dc:creator><![CDATA[watary]]></dc:creator>
		<pubDate>Wed, 23 Jul 2025 21:00:17 +0000</pubDate>
				<category><![CDATA[コンピュータ関連]]></category>
		<category><![CDATA[tampermonkey]]></category>
		<category><![CDATA[uBlock Origin]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[プログラム・スクリプト]]></category>
		<guid isPermaLink="false">https://www.wholenotism.com/blog/?p=16209</guid>

					<description><![CDATA[目次 YouTubeのフィードから特定のチャンネルをブロックして排除したいYouTube上で特定のチャンネルをブロックする機能はあるの？方法1：uBlock Originを使うマイフィルター（カスタムフィルター）の使い方 [&#8230;]]]></description>
										<content:encoded><![CDATA[
  <div id="toc" class="toc tnt-number tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-16"><label class="toc-title" for="toc-checkbox-16">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">YouTubeのフィードから特定のチャンネルをブロックして排除したい</a></li><li><a href="#toc2" tabindex="0">YouTube上で特定のチャンネルをブロックする機能はあるの？</a></li><li><a href="#toc3" tabindex="0">方法1：uBlock Originを使う</a><ol><li><a href="#toc4" tabindex="0">マイフィルター（カスタムフィルター）の使い方と記述例</a></li><li><a href="#toc5" tabindex="0">注意点と限界</a></li></ol></li><li><a href="#toc6" tabindex="0">方法2：Tampermonkeyを使う（チャンネル名で排除）</a><ol><li><a href="#toc7" tabindex="0">注意点</a></li></ol></li><li><a href="#toc8" tabindex="0">方法3：チャンネルIDで排除（Tampermonkey）</a><ol><li><a href="#toc9" tabindex="0">注意点</a></li></ol></li><li><a href="#toc10" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">YouTubeのフィードから特定のチャンネルをブロックして排除したい</span></h2>
<p>YouTubeを使っていて、<br />
「<strong>このチャンネルは見たくないのになぜかおすすめに出てくる&#8230;</strong>」<br />
って事ありません？</p>
<p>「出てきにくくなる」じゃなくてもう<br />
<strong><span class="bold" style="font-size:150%;">出したくないし、サムネすら見たくない。</span></strong><br />
特に昨今のAIで嘘八百をただ読み上げてるだけの動画とかイライラしてしまう。</p>
<p>そんな動画を排除する方法についてまとめます。備忘録です。</p>
<p><span id="more-16209"></span></p>
<h2><span id="toc2">YouTube上で特定のチャンネルをブロックする機能はあるの？</span></h2>
<p>結論から言うと、現時点（2025年7月）では<br />
<strong>視聴者が特定のチャンネルを完全に非表示にする機能はなさそうです。</strong></p>
<p>以前は「<strong>ユーザーをブロック</strong>」することで、そのチャンネルを非表示にする方法が提供されていたようです。が、現在そういったものは見当たりません。<br />
また、「興味なし」とすることで一時的にフィードに出にくくすることは可能ですが、完全な除外ではなく、一定期間が経つと再度表示される可能性があります。<br />
子供の保護者向け管理機能はあるそうですが、これもまた使い方として限定的かなと。</p>
<p>というかそもそもログインして使ってないので設定もなにもないんですけどね自分には。</p>
<p>というわけで、ログインなしで非表示にする場合は、<br />
本記事のような <strong>ブラウザ拡張機能を利用した回避策</strong> が現実的なアプローチになります。</p>
<div class="ad-area no-icon ad-shortcode ad-fluid ad-label-invisible cf" itemscope itemtype="https://schema.org/WPAdBlock">
  <div class="ad-label" itemprop="name" data-nosnippet>スポンサーリンク</div>
  <div class="ad-wrap">
    <div class="ad-responsive ad-usual"><!-- レスポンシブコード -->
<ins class="adsbygoogle"
  style="display:block"
  data-ad-client="ca-pub-4405475467092514"
  data-ad-slot="2803567186"     data-ad-layout="in-article"
  data-ad-format="fluid"
  data-full-width-responsive="true"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
          </div>

</div>

<h2><span id="toc3">方法1：uBlock Originを使う</span></h2>
<p>ブラウザはFirefoxを使っています。<br />
最近では随分とシェアも減ったようですが、なんとなく使い続けています。</p>
<ul class="bold">
<li>オープンソースであり、ユーザーのプライバシーに重点を置いている</li>
<li>uBlock OriginがManifest V2ベースで動作する最後の主要ブラウザ</li>
</ul>
<p>そして uBlock Origin は、軽量で高性能な広告ブロッカー／コンテンツフィルター拡張機能です。<br />
JavaScriptやDOM構造を解析し、不要なコンテンツの非表示・削除を行うことができます。広告だけでなく、ユーザー定義のフィルターによりWebページの任意の要素を非表示にすることが可能です。</p>
<p>[<a rel="noopener" href="https://addons.mozilla.org/ja/firefox/addon/ublock-origin/" target="_blank">公式アドオンページ<span class="fa fa-external-link external-icon anchor-icon"></span></a>]からインストールできます。</p>
<h3><span id="toc4">マイフィルター（カスタムフィルター）の使い方と記述例</span></h3>
<p>uBlock Originでは、「<strong>マイフィルター</strong>」機能を使って任意の要素を非表示にできます。</p>
<ol class="bold">
<li>uBlock Originの「設定」画面やアイコンからダッシュボードを開き、「マイフィルター」タブを選択</li>
<li>以下のようなフィルターを追加</li>
<li>「変更を適用」をクリック</li>
</ol>
<p>フィルター記述例：</p>
<pre class="wp-block-code"><code>
www.youtube.com##ytd-rich-item-renderer:has(ytd-channel-name:has-text(/感動大国日本|世界が称賛JAPAN|世界が○○るニッポン/i))</code>
</pre>
<p>簡単な解説：</p>
<ul class="bold">
<li><code>##</code> は、特定の要素を非表示にするセレクター構文</li>
<li><code>ytd-rich-item-renderer</code> はYouTubeのおすすめ・ホーム画面などで使われる要素</li>
<li><code>:has-text()</code> は、特定のテキストを含む要素を指定（チャンネル名に含まれる文字列、iは大文字小文字を区別しない）</li>
<li><code>ytd-channel-name</code> にあるテキストに特定の文字がある時、そのカードの領域ytd-rich-item-rendererを非表示にする</li>
</ul>
<p>ちなみに、問題ない動画の説明文などに反応されると困るので、チャンネル名で判断しています。部分一致（〜を含む）で指定します。<br />
指定する文字列はあまり汎用なものだと消す必要のないチャンネルまで消してしまう可能性があります。気をつけて。</p>
<h3><span id="toc5">注意点と限界</span></h3>
<ul class="bold">
<li>uBlock Originは「要素の非表示」であり、YouTubeのレコメンドアルゴリズム自体を変更するわけではありません。</li>
<li>YouTubeのUIやDOM構造が変更されると、フィルターが無効化される可能性があります。</li>
<li>フィルターはユーザー個別に調整する必要があります。排除リストが長くなると動作が重くなるかも。</li>
</ul>
<p>その他にも、<br />
動画ページの関連動画リストや、その他の場所においては機能しません。<br />
それらも記述しようとすると、場所毎に排除リストを重複して書く必要が出てきます。<br />
冗長だよね&#8230;</p>
<div class="ad-area no-icon ad-shortcode ad-fluid ad-label-invisible cf" itemscope itemtype="https://schema.org/WPAdBlock">
  <div class="ad-label" itemprop="name" data-nosnippet>スポンサーリンク</div>
  <div class="ad-wrap">
    <div class="ad-responsive ad-usual"><!-- レスポンシブコード -->
<ins class="adsbygoogle"
  style="display:block"
  data-ad-client="ca-pub-4405475467092514"
  data-ad-slot="2803567186"     data-ad-layout="in-article"
  data-ad-format="fluid"
  data-full-width-responsive="true"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
          </div>

</div>

<h2><span id="toc6">方法2：Tampermonkeyを使う（チャンネル名で排除）</span></h2>
<p>Tampermonkeyとはブラウザの拡張機能の一つで、ユーザーがJavaScriptコードを記述して、ウェブページの動作をカスタマイズできるツールです。<br />
これにより、ウェブサイトの表示を自分好みに変更したり、機能を追加したり、既存の機能を変更したりできます。</p>
<p>[<a rel="noopener" href="https://addons.mozilla.org/ja/firefox/addon/tampermonkey/" target="_blank">公式アドオンページ<span class="fa fa-external-link external-icon anchor-icon"></span></a>]からインストールできます。</p>
<p>さて、こちらはもう少し複雑なことが出来ます。</p>
<p>アドオンをインストールしたら「<span class="bold">新規スクリプトを追加</span>」から追加。</p>
<pre class="wp-block-code"><code>
// ==UserScript==
// @name         YouTube 特定チャンネル非表示（安定動作版）
// @namespace    http://tampermonkey.net/
// @version      1.2
// @description  特定の文字列を含むチャンネルの動画を非表示
// @author       Me
// @match        *://www.youtube.com/*
// @grant        none
// @run-at       document-idle
// ==/UserScript==

(function () {
    'use strict';

    // &#x2705; ブロック対象のチャンネル名（部分一致）
    const blockedChannelNames = [
        "感動大国日本","世界が称賛JAPAN","世界が○○るニッポン"
    ];

    const blockedRegex = new RegExp(blockedChannelNames.join("|"), "i");

    // &#x2705; 対象となる動画カードの要素リスト
    const videoSelectors = [
        'ytd-rich-item-renderer', //ホーム/おすすめのカードに登場
        'ytd-video-renderer', //メインの動画リスト（検索結果）に使用
        'ytd-grid-video-renderer', //サブスクリプションやチャンネルページのグリッド表示
        'ytd-compact-video-renderer', //サイドバーや関連動画リスト
        'ytd-reel-item-renderer', //Shorts（リール）用カード
        'yt-lockup-view-model' //サイド関連動画
    ];

    // &#x2705; 対象カードからチャンネル名を取得
    function getChannelNameFromCard(card) {
        // チャンネル名の要素（複数形式あり）
        const selectors = [
            'ytd-channel-name a',      // 通常
            '#channel-name a',         // shorts 等
            '.ytd-channel-name',       // 一部検索結果
            '.yt-simple-endpoint',      // fallback
            'yt-content-metadata-view-model' //サイド関連
        ];
        for (const sel of selectors) {
            const el = card.querySelector(sel);
            if (el && el.textContent) {
                return el.textContent.trim();
            }
        }
        return null;
    }

    // &#x2705; ブロック処理
    function hideBlockedVideos() {
        videoSelectors.forEach(selector => {
            document.querySelectorAll(selector).forEach(card => {
                if (card.dataset.ytChecked) return;
                card.dataset.ytChecked = "true";

                const channelName = getChannelNameFromCard(card);
                if (channelName && blockedRegex.test(channelName)) {
                    card.style.display = 'none';
                    console.log("&#x1f6ab; 非表示: ", channelName);
                }
            });
        });
    }

    // &#x2705; 初回 + SPA 対応
    const observer = new MutationObserver(() => {
        setTimeout(hideBlockedVideos, 200);
    });

    observer.observe(document.body, {
        childList: true,
        subtree: true
    });

    // &#x2705; 初回読み込み後にも実行
    setTimeout(hideBlockedVideos, 1000);
})();
</code></pre>
<p>コピペしたら保存して、<br />
「ブロック対象のチャンネル名」の部分に、ブロック（非表示）したいチャンネル名を追加していけばokです。<br />
スクリプトを有効化するのも忘れずに。</p>
<p>これでyoutubeを開いたときに、いらんフィードを非表示にしてくれます。</p>
<p>コンソールを開けば<br />
<span class="bold">非表示: チャンネル名</span><br />
と出るので機能してることがわかります。<br />
<a href="https://www.wholenotism.com/blog/wp-content/uploads/20250724_002.jpg"><img loading="lazy" decoding="async" src="https://www.wholenotism.com/blog/wp-content/uploads/20250724_002-800x552.jpg" alt="コンソール" width="800" height="552" class="alignnone size-large wp-image-16250" srcset="https://www.wholenotism.com/blog/wp-content/uploads/20250724_002-800x552.jpg 800w, https://www.wholenotism.com/blog/wp-content/uploads/20250724_002-300x207.jpg 300w, https://www.wholenotism.com/blog/wp-content/uploads/20250724_002-768x530.jpg 768w, https://www.wholenotism.com/blog/wp-content/uploads/20250724_002.jpg 1474w" sizes="(max-width: 800px) 100vw, 800px" /></a></p>
<p>スッキリ。</p>
<h3><span id="toc7">注意点</span></h3>
<ul class="bold">
<li>こちらも「要素の非表示」であり、YouTubeのレコメンドアルゴリズム自体を変更するわけではありません。</li>
<li>YouTubeのUIやDOM構造が変更されると、フィルターが無効化される可能性があります。</li>
<li>タグ要素は環境によって変わることもあるようです。対象とする要素はユーザー個別に調整する必要があるかもしれません。</li>
</ul>
<div class="ad-area no-icon ad-shortcode ad-fluid ad-label-invisible cf" itemscope itemtype="https://schema.org/WPAdBlock">
  <div class="ad-label" itemprop="name" data-nosnippet>スポンサーリンク</div>
  <div class="ad-wrap">
    <div class="ad-responsive ad-usual"><!-- レスポンシブコード -->
<ins class="adsbygoogle"
  style="display:block"
  data-ad-client="ca-pub-4405475467092514"
  data-ad-slot="2803567186"     data-ad-layout="in-article"
  data-ad-format="fluid"
  data-full-width-responsive="true"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
          </div>

</div>

<h2><span id="toc8">方法3：チャンネルIDで排除（Tampermonkey）</span></h2>
<p>一つ上の方法2と同じですが、こちらはチャンネルIDを使います。<br />
「チャンネル名」では汎用的な語句を使われた場合に誤判定が増えそうなので。</p>
<p>アドオンをインストールしたら「<span class="bold">新規スクリプトを追加</span>」から追加。</p>
<pre class="wp-block-code"><code>
// ==UserScript==
// @name         YouTube: Hide cards by handle (lightweight)
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Hide YouTube cards whose channel href (/@handle or /channel/UC...) matches blocked list (SPA-aware)
// @match        *://www.youtube.com/*
// @grant        none
// @run-at       document-idle
// ==/UserScript==

(function () {
    'use strict';

    const blockedChannelIds = [
        "@emojapa","@NurikaJapa","@%E4%B8%96%E7%95%8C%E3%81%8C%E3%",
    ];

    // blockedSetの生成（デコード・正規化を両辺で統一）
    const blockedSet = new Set(
        blockedChannelIds.map(x => normalizePath(x))
    );

    function normalizePath(str) {
        const decoded = tryDecode(str);
        const noTrail = decoded.split(/[?#]/)[0].replace(/\/+$/, '');
        return noTrail.startsWith('/') ? noTrail : '/' + noTrail;
    }

    function tryDecode(str) {
        try { return decodeURIComponent(String(str).trim()); }
        catch { return String(str).trim(); }
    }

    // チェック対象カード（コンテナ・Shortsは除外）
    const CARD_SELECTORS = [
        'ytd-rich-item-renderer',
        'ytd-video-renderer',
        'ytd-grid-video-renderer',
        'ytd-compact-video-renderer',
        'yt-lockup-view-model',
    ].join(',');

    // チャンネルリンク候補（優先順）
    const CHANNEL_LINK_SELECTORS = [
        'ytd-channel-name a',
        '#channel-name a',
        'yt-content-metadata-view-model a[href^="/@"]',
        'a.yt-simple-endpoint[href^="/channel/"]',
        'a[href^="/c/"]',
        'a[href^="/user/"]',
        'a[href^="/@"]',
    ];

    function getChannelPath(card) {
        for (const sel of CHANNEL_LINK_SELECTORS) {
            const el = card.querySelector(sel);
            if (!el) continue;
            const raw = el.getAttribute('href') || el.href || '';
            if (!raw) continue;
            try {
                const pathname = raw.startsWith('http')
                    ? new URL(raw).pathname
                    : raw;
                return normalizePath(pathname);
            } catch { continue; }
        }
        return null;
    }

    function processCard(card) {
        // pathが取れていれば確定済み（再チェック不要）
        if (card.dataset.ytBlocked === 'true') return;
        if (card.dataset.ytSafe === 'true') return; // ←取れた＆セーフ確定

        const path = getChannelPath(card);

        if (!path) return; // まだDOMが揃っていない→フラグを立てず再試行可能に

        if (blockedSet.has(path)) {
            card.style.setProperty('display', 'none', 'important');
            card.dataset.ytBlocked = 'true';
            console.debug('&#x1f6ab;', path);
        } else {
            card.dataset.ytSafe = 'true'; // セーフ確定→以後スキップ
        }
    }

    function run() {
        document.querySelectorAll(CARD_SELECTORS).forEach(processCard);
    }

    // throttle付きMutationObserver
    let timer = null;
    new MutationObserver(() => {
        if (timer) return; // leading throttle（前の処理が終わるまで追加しない）
        timer = setTimeout(() => { run(); timer = null; }, 200);
    }).observe(document.body, { childList: true, subtree: true });

    // 初回（DOMが遅延する場合に備えて2段階）
    setTimeout(run, 800);
    setTimeout(run, 2500);

})();
</code></pre>
<p><strong>blockedChannelIds</strong> の部分に、ブロック（非表示）したいチャンネルIDを追加していけばok。<br />
チャンネルIDは消したいカード（サムネ）の下に表示されている<strong>チャンネル名</strong>を右クリックして<strong>リンクをコピー</strong>、その＠マーク以下を入力します。<br />
日本語で設定されている場合にはURLエンコードされた文字列（例：@%E6%97%A5%E6%9C%AC%E3%81&#8230;みたいな）を入力します。</p>
<p>自分は現在この方法を使っています。</p>
<h3><span id="toc9">注意点</span></h3>
<ul class="bold">
<li>チャンネルIDは任意に変更できるものらしいのでその点は注意。</li>
<li>こちらも「要素の非表示」であり、YouTubeのレコメンドアルゴリズム自体を変更するわけではありません。</li>
<li>YouTubeのUIやDOM構造が変更されると、フィルターが無効化される可能性があります。</li>
</ul>
<div class="ad-area no-icon ad-shortcode ad-fluid ad-label-invisible cf" itemscope itemtype="https://schema.org/WPAdBlock">
  <div class="ad-label" itemprop="name" data-nosnippet>スポンサーリンク</div>
  <div class="ad-wrap">
    <div class="ad-responsive ad-usual"><!-- レスポンシブコード -->
<ins class="adsbygoogle"
  style="display:block"
  data-ad-client="ca-pub-4405475467092514"
  data-ad-slot="2803567186"     data-ad-layout="in-article"
  data-ad-format="fluid"
  data-full-width-responsive="true"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
          </div>

</div>

<h2><span id="toc10">まとめ</span></h2>
<p>これで無事に、<strong>見たくないチャンネルの動画フィード、不快なサムネを非表示</strong>にできました。</p>
<p>最初はuBlock Originで設定したのですが、痒いところに手が届かないと言いますか、あともうちょいが届かない。<br />
例としては3つほど<span class="bold">”架空のチャンネル名”</span>をあげていますが実際はもっと多いです。というか多すぎです。似たような動画ばっかりどうなってんだ。</p>
<p>そんな長ったらしいチャンネル名群を、複数行に書くのは精神衛生上よろしくありません。</p>
<p>そこで実は今回初めて <strong>Tampermonkey</strong> を使ってみました。<br />
コードも実はChatGPTに手伝ってもらっています。AI動画を排除するためにAIを使うっていうね。ま、そういうもんだよね。うん。</p>
<p>とりあえずスッキリしたので良しとします。<br />
以上。</p>
		<div class="wpulike wpulike-heart " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="16209"
					data-ulike-nonce="ded1b123ac"
					data-ulike-type="post"
					data-ulike-template="wpulike-heart"
					data-ulike-display-likers="0"
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_16209"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>
	]]></content:encoded>
					
					<wfw:commentRss>https://www.wholenotism.com/blog/2025/07/block-channels-on-youtube.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【yt-dlp】TVerでエラーが出た時の一時的な対処法 Unable to download JSON metadata HTTP Error 404</title>
		<link>https://www.wholenotism.com/blog/2025/03/fix-ytdlp-tver-error.html</link>
					<comments>https://www.wholenotism.com/blog/2025/03/fix-ytdlp-tver-error.html#respond</comments>
		
		<dc:creator><![CDATA[watary]]></dc:creator>
		<pubDate>Sun, 23 Mar 2025 09:53:41 +0000</pubDate>
				<category><![CDATA[コンピュータ関連]]></category>
		<category><![CDATA[tver]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[yt-dlp]]></category>
		<category><![CDATA[プログラム・スクリプト]]></category>
		<guid isPermaLink="false">https://www.wholenotism.com/blog/?p=16121</guid>

					<description><![CDATA[2025.07.31にまたエラー発生を確認。基本的には同じような作業で対処可能です。tver.pyをDLし、元のファイルと置き換えるか、パスを書き換えてプラグインフォルダへ。あるいはyt-dlp nightly buil [&#8230;]]]></description>
										<content:encoded><![CDATA[<div class="information-box">2025.07.31にまたエラー発生を確認。基本的には同じような作業で対処可能です。<a rel="noopener" href="https://github.com/yt-dlp/yt-dlp/blob/master/yt_dlp/extractor/tver.py" target="_blank">tver.py<span class="fa fa-external-link external-icon anchor-icon"></span></a>をDLし、元のファイルと置き換えるか、パスを書き換えてプラグインフォルダへ。あるいは<a rel="noopener" href="https://github.com/yt-dlp/yt-dlp-nightly-builds" target="_blank">yt-dlp nightly build<span class="fa fa-external-link external-icon anchor-icon"></span></a>をインストール</div>
<p>yt-dlpでTVerをダウンロードしようとしてエラーが出る、そんな時の対処法。<br />
ただ一時的な対処法です。いずれ対応したものが出されるでしょうから。</p>
<p>あと個人的な備忘録です。一応。</p>
<p><span id="more-16121"></span></p>

  <div id="toc" class="toc tnt-number tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-18"><label class="toc-title" for="toc-checkbox-18">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">yt-dlpでTVerをダウンロードしようとするとエラーになる</a></li><li><a href="#toc2" tabindex="0">修正された tver.py を使う</a><ol><li><a href="#toc3" tabindex="0">修正された tver.py を入手</a></li><li><a href="#toc4" tabindex="0">上書きか、プラグインフォルダに入れるか</a></li></ol></li><li><a href="#toc5" tabindex="0">修正されたtver.pyは従来のものと取得できるフォーマットリストが違う</a></li><li><a href="#toc6" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">yt-dlpでTVerをダウンロードしようとするとエラーになる</span></h2>
<p>数日前からこの状態になりました。</p>
<pre class="text"><code>
ERROR: [brightcove:new] Unable to download JSON metadata: HTTP Error 404: Not Found (caused by &lt;HTTPError 404: Not Found&gt;)
</code>
</pre>
<p>JSON metadata のダウンロードでエラー発生。見つからないよと。</p>
<p>TVer側で仕様の変更があったようです。</p>
<p>どうやら新しく配信されるものからどんどん切り替えられている模様。</p>
<p>yt-dlpが更新されればと思っていたのですが、数日待って更新された「yt-dlp 2025.03.21」の extractor の中に TVer の修正版は含まれませんでした。</p>
<p>てことで、<br />
fixされた tver.py を入手して対応します。</p>
<div class="ad-area no-icon ad-shortcode ad-fluid ad-label-invisible cf" itemscope itemtype="https://schema.org/WPAdBlock">
  <div class="ad-label" itemprop="name" data-nosnippet>スポンサーリンク</div>
  <div class="ad-wrap">
    <div class="ad-responsive ad-usual"><!-- レスポンシブコード -->
<ins class="adsbygoogle"
  style="display:block"
  data-ad-client="ca-pub-4405475467092514"
  data-ad-slot="2803567186"     data-ad-layout="in-article"
  data-ad-format="fluid"
  data-full-width-responsive="true"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
          </div>

</div>

<h2><span id="toc2">修正された tver.py を使う</span></h2>
<p>手順を簡単に説明。</p>
<p>基本的な情報はこちら↓</p>
<p><a rel="noopener" href="https://github.com/yt-dlp/yt-dlp/issues/12643" target="_blank">[TVer] ERROR: [brightcove:new] Unable to download JSON metadata: HTTP Error 404: Not Found #12643<span class="fa fa-external-link external-icon anchor-icon"></span></a></p>
<h3><span id="toc3">修正された tver.py を入手</span></h3>
<p><del datetime="2025-03-24T04:49:57+00:00">上記ページのこの<a rel="noopener" href="https://github.com/yt-dlp/yt-dlp/issues/12643#issuecomment-2741298566" target="_blank">コメント<span class="fa fa-external-link external-icon anchor-icon"></span></a>から</del></p>
<p>こちらに移動したようです↓<br />
<a rel="noopener" href="https://gist.github.com/arabcoders/21162f44a99ba9ad96db28bc43fc83a0" target="_blank">https://gist.github.com/arabcoders/21162f44a99ba9ad96db28bc43fc83a0<span class="fa fa-external-link external-icon anchor-icon"></span></a></p>
<h3><span id="toc4">上書きか、プラグインフォルダに入れるか</span></h3>
<p>該当ファイルを上書きしてもよし。その場合は extractor フォルダを探して置き換えましょう。</p>
<p>今回はプラグインフォルダを作って放り込みました。<br />
macなので場所はここ。</p>
<p><span class="bold">~/.config/yt-dlp/plugins/tver/yt_dlp_plugins/extractor</span></p>
<p>ちなみにwindowsは↓</p>
<p><span class="bold">C:\users\your_name\.config\yt-dlp\plugins\tver\yt_dlp_plugins\extractor</span></p>
<p>一つ一つフォルダを作っていくのは面倒なので、<br />
階層ごといっぺんにフォルダを作成する。</p>
<pre>
<code>mkdir -p ~/.config/yt-dlp/plugins/tver/yt_dlp_plugins/extractor</code>
</pre>
<p>今回初めて知ったこのやり方（pオプション）。便利。</p>
<div class="ad-area no-icon ad-shortcode ad-fluid ad-label-invisible cf" itemscope itemtype="https://schema.org/WPAdBlock">
  <div class="ad-label" itemprop="name" data-nosnippet>スポンサーリンク</div>
  <div class="ad-wrap">
    <div class="ad-responsive ad-usual"><!-- レスポンシブコード -->
<ins class="adsbygoogle"
  style="display:block"
  data-ad-client="ca-pub-4405475467092514"
  data-ad-slot="2803567186"     data-ad-layout="in-article"
  data-ad-format="fluid"
  data-full-width-responsive="true"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
          </div>

</div>

<p>あとは入手した tver.py を放り込むだけです　<del datetime="2025-03-24T05:10:23+00:00">が、内部の記述が相対パスになっているのでこのままではエラーが出てしまう。</del><br />
<del datetime="2025-03-24T05:02:49+00:00">一部書き換える。</del><br />
<strong>新しい修正版では書き換える必要がなくなりました。そのままファイル置き換えかプラグインフォルダに放り込むだけで動作します</strong></p>
<div class="alert-box">※修正により以下の作業は必要なくなりました</div>
<pre>
<code>
from .common import InfoExtractor
from ..networking.exceptions import HTTPError
from ..utils import (
.
.
.
from ..utils.traversal import require, traverse_obj
</code>
</pre>
<p>　↓</p>
<pre>
<code>
from yt_dlp.extractor.common import InfoExtractor
from yt_dlp.networking.exceptions import HTTPError
from yt_dlp.utils import (
.
.
.
from yt_dlp.utils.traversal import require, traverse_obj
</code>
</pre>
<p>リージョンロックがかかっているようなので<br />
日本国内のIPアドレスからアクセスする必要があるらしいけど、まぁそこは問題ないので割愛。</p>
<div class="ad-area no-icon ad-shortcode ad-fluid ad-label-invisible cf" itemscope itemtype="https://schema.org/WPAdBlock">
  <div class="ad-label" itemprop="name" data-nosnippet>スポンサーリンク</div>
  <div class="ad-wrap">
    <div class="ad-responsive ad-usual"><!-- レスポンシブコード -->
<ins class="adsbygoogle"
  style="display:block"
  data-ad-client="ca-pub-4405475467092514"
  data-ad-slot="2803567186"     data-ad-layout="in-article"
  data-ad-format="fluid"
  data-full-width-responsive="true"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
          </div>

</div>

<h2><span id="toc5">修正されたtver.pyは従来のものと取得できるフォーマットリストが違う</span></h2>
<p>「yt-dlp 2025.03.25」がリリースされました。<br />
修正版のtver.pyも含まれています。（よかったよかった</p>
<p>でもちょっとファイルサイズが大きいような気がして・・・比較してみたらすこし違うみたい。</p>
<p><a href="https://www.wholenotism.com/blog/wp-content/uploads/20250325_001.jpg"><img loading="lazy" decoding="async" src="https://www.wholenotism.com/blog/wp-content/uploads/20250325_001-800x359.jpg" alt="list of format" width="800" height="359" class="alignnone size-large wp-image-16145" srcset="https://www.wholenotism.com/blog/wp-content/uploads/20250325_001-800x359.jpg 800w, https://www.wholenotism.com/blog/wp-content/uploads/20250325_001-300x135.jpg 300w, https://www.wholenotism.com/blog/wp-content/uploads/20250325_001-768x345.jpg 768w, https://www.wholenotism.com/blog/wp-content/uploads/20250325_001.jpg 1476w" sizes="(max-width: 800px) 100vw, 800px" /></a></p>
<p>同じ720pでもビットレートが違うしファイルサイズも違う。</p>
<p>自分はちゃちゃっと観て消しちゃうのでそんな大きいサイズはいらない。</p>
<p>結局、<strong>ひとつ前のバージョンの tver.py をプラグインフォルダに入れて使用、<br />
エラーが出るなら新しい方を使う</strong>形にしました。</p>
<p>古いドラマなんかはまだ取得できるんだよね、以前ので。時間の問題だろうけど。</p>
<h2><span id="toc6">まとめ</span></h2>
<p>参照先の修正者さんに感謝。</p>
<p>おそらく数日から数週間で対応されるでしょうから、それまでの一時的な処置ですかね。</p>
<p>音声ファイルの詳細が取得できないようですが、そこはほぼ問題ないかと。</p>
<p>あとは普通に使えます。</p>
<p>ただ既に上がっていた、従来の方法で取得できる番組に関しては<strong>修正版tver.pyと従来のものとで取得できるリストが違います。</strong></p>
<p>yt-dlp -F でまずはクオリティリストの取得を試みて、エラーが出たら新しいものを使う方が良いかもしれません。<br />
これも短期的な話になると思いますが。</p>
		<div class="wpulike wpulike-heart " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="16121"
					data-ulike-nonce="3dd024c5ba"
					data-ulike-type="post"
					data-ulike-template="wpulike-heart"
					data-ulike-display-likers="0"
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_16121"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>
	]]></content:encoded>
					
					<wfw:commentRss>https://www.wholenotism.com/blog/2025/03/fix-ytdlp-tver-error.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>一定時間たったら処理を終了させるコマンドが便利【timeout/gtimeout】</title>
		<link>https://www.wholenotism.com/blog/2024/06/gtimeout-mac.html</link>
					<comments>https://www.wholenotism.com/blog/2024/06/gtimeout-mac.html#respond</comments>
		
		<dc:creator><![CDATA[watary]]></dc:creator>
		<pubDate>Fri, 21 Jun 2024 20:50:20 +0000</pubDate>
				<category><![CDATA[コンピュータ関連]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[Monterey]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[yt-dlp]]></category>
		<category><![CDATA[シェルスクリプト]]></category>
		<guid isPermaLink="false">https://www.wholenotism.com/blog/?p=15232</guid>

					<description><![CDATA[以前ネット配信の番組を自動的に録画する仕組みをつくりました。 基本的にはそれで問題ないのですが、 放送（内容）は終了してもストリーミング（配信自体）はその後もしばらく続くような場合、 当然ながら配信が完全に終了するまで録 [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>以前ネット配信の番組を自動的に録画する仕組みをつくりました。</p>
<p>基本的にはそれで問題ないのですが、<br />
放送（内容）は終了してもストリーミング（配信自体）はその後もしばらく続くような場合、<br />
当然ながら配信が完全に終了するまで録画し続けてしまいます。</p>
<p>つまりオフラインになるまで余計に１、２時間録画し続けてしまうのです。</p>
<p>これを止めるため<br />
<span class="bold" style="font-size:150%;"><strong>「一定時間経過したら録画を止めるコマンド」</strong></span><br />
が必要となりました。</p>
<p><strong>timeout</strong> というコマンドがLinuxで使えるようですが、<br />
MacOSにはなかったので <strong>Homebrew</strong> から <strong>Coreutils</strong> を入れて使えるようにしました。</p>
<p>そんな備忘録。</p>
<p><span id="more-15232"></span></p>

  <div id="toc" class="toc tnt-number tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-20"><label class="toc-title" for="toc-checkbox-20">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">時間になったら処理（録画）を開始し、一定時間で終了する</a><ol><li><a href="#toc2" tabindex="0">Homebrewからcoreutilsをインストール</a></li></ol></li><li><a href="#toc3" tabindex="0">gtimeout（timeout）の使い方</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">時間になったら処理（録画）を開始し、一定時間で終了する</span></h2>
<p>コマンドの利用については、別に録画に限った話ではないので、<br />
関係なければ要らないところは読み飛ばしていただいて構いません。</p>
<p>スケジュール録画についてはちょっと試行錯誤したのでいくつかの記事に分かれてます。<br />
この辺を見たら多分わかります。</p>

<a href="https://www.wholenotism.com/blog/2020/09/crontab.html" title="ストリーム配信を録画する為に定期的にジョブを実行するcrontabを使う" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://www.wholenotism.com/blog/wp-content/uploads/20200910_eci-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://www.wholenotism.com/blog/wp-content/uploads/20200910_eci-160x90.jpg 160w, https://www.wholenotism.com/blog/wp-content/uploads/20200910_eci-300x169.jpg 300w, https://www.wholenotism.com/blog/wp-content/uploads/20200910_eci-768x432.jpg 768w, https://www.wholenotism.com/blog/wp-content/uploads/20200910_eci-120x68.jpg 120w, https://www.wholenotism.com/blog/wp-content/uploads/20200910_eci-320x180.jpg 320w, https://www.wholenotism.com/blog/wp-content/uploads/20200910_eci.jpg 800w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">ストリーム配信を録画する為に定期的にジョブを実行するcrontabを使う</div><div class="blogcard-snippet internal-blogcard-snippet">以前カレンダーを使ってネット配信番組の動画を予約録画する記事を書きました。それにちょっとした問題が発生したので、今はcrontabを使って起動するようにしています。要するにカレンダーで起動していた録画実行スクリプトを、crontabでの起動...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://www.wholenotism.com/blog" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">www.wholenotism.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2020.09.10</div></div></div></div></a>
<p>さて、とにかく処理を開始した後、一定時間経過したら終了するようにしたいわけです。</p>
<h3><span id="toc2">Homebrewからcoreutilsをインストール</span></h3>
<p>そのためのコマンド群をインストールしました。<br />
<a rel="noopener" href="https://brew.sh/ja/" target="_blank">Homebrew<span class="fa fa-external-link external-icon anchor-icon"></span></a>を使いました。</p>
<pre class="bash">
% brew install coreutils
...
==> Pouring coreutils--9.5.monterey.bottle.tar.gz
==> Caveats
Commands also provided by macOS and the commands dir, dircolors, vdir have been installed with the prefix "g".
If you need to use these commands with their normal names, you can add a "gnubin" directory to your PATH with:
  PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"
==> Summary
&#x1f37a;  /usr/local/Cellar/coreutils/9.5: 481 files, 14.2MB
</pre>
<p>無事インストールが完了し、「<strong>gtimeout</strong>」が使えるようになりました。（エイリアスが作成され「<strong>timeout</strong>」でも通ります）</p>
<pre class="text">
% timeout --help
Usage: timeout [OPTION] DURATION COMMAND [ARG]...
  or:  timeout [OPTION]
Start COMMAND, and kill it if still running after DURATION.

Mandatory arguments to long options are mandatory for short options too.
      --preserve-status
                 exit with the same status as COMMAND, even when the
                   command times out
      --foreground
                 when not running timeout directly from a shell prompt,
                   allow COMMAND to read from the TTY and get TTY signals;
                   in this mode, children of COMMAND will not be timed out
  -k, --kill-after=DURATION
                 also send a KILL signal if COMMAND is still running
                   this long after the initial signal was sent
  -s, --signal=SIGNAL
                 specify the signal to be sent on timeout;
                   SIGNAL may be a name like 'HUP' or a number;
                   see 'kill -l' for a list of signals
  -v, --verbose  diagnose to stderr any signal sent upon timeout
      --help        display this help and exit
      --version     output version information and exit

DURATION is a floating point number with an optional suffix:
's' for seconds (the default), 'm' for minutes, 'h' for hours or 'd' for days.
A duration of 0 disables the associated timeout.

Upon timeout, send the TERM signal to COMMAND, if no other SIGNAL specified.
The TERM signal kills any process that does not block or catch that signal.
It may be necessary to use the KILL signal, since this signal can't be caught.

Exit status:
  124  if COMMAND times out, and --preserve-status is not specified
  125  if the timeout command itself fails
  126  if COMMAND is found but cannot be invoked
  127  if COMMAND cannot be found
  137  if COMMAND (or timeout itself) is sent the KILL (9) signal (128+9)
  -    the exit status of COMMAND otherwise

GNU coreutils online help: https://www.gnu.org/software/coreutils/
Report any translation bugs to https://translationproject.org/team/
Full documentation https://www.gnu.org/software/coreutils/timeout
or available locally via: info '(coreutils) timeout invocation'
</pre>
<h2><span id="toc3">gtimeout（timeout）の使い方</span></h2>
<p>使い方は単純、終了させたい時間を指定すればOK<br />
秒：10s<br />
分：20m<br />
時：1h　など</p>
<pre class="bash">
#サンプル １時間後に録画終了
% timeout 1h yt-dlp 'https://www.配信サーバー/URI' -o ~/Desktop/output.mp4 
</pre>
<p>これで１時間後に録画を終了します。</p>
<p>実際には途中でスリープに入らないよう <strong>caffeinate</strong> も使っています。<br />
こちらはMacで元々使えるもので、スリープを抑制するコマンドです。<br />
録画途中でスリープに入られると厄介なので。</p>
<p>ま、その辺は適宜対応してください。では。</p>
		<div class="wpulike wpulike-heart " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="15232"
					data-ulike-nonce="0a0581ec29"
					data-ulike-type="post"
					data-ulike-template="wpulike-heart"
					data-ulike-display-likers="0"
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_15232"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>
	]]></content:encoded>
					
					<wfw:commentRss>https://www.wholenotism.com/blog/2024/06/gtimeout-mac.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
