Tech Blog

他人のYouTubeのチャンネルIDを調べる

他人のYouTubeのチャンネルIDを調べる

概要

自分自身のチャンネルIDはYouTube Studio>カスタマイズ>基本情報 で確認することができますが、他人のチャンネルでカスタム URLを使用されているチャンネルはチャンネルIDがわかりません。

ソースから確認

ソースで確認する場合、RSSタグか、itempropタグで確認することができます。

<link rel="alternate" type="application/rss+xml" title="RSS" href="https://www.youtube.com/feeds/videos.xml?channel_id=チャンネルID">
<meta itemprop="channelId" content="チャンネルID">

確認できるフォームを作りました

確認が面倒くさいのでチャンネルURLを入力して確認できるフォームを作りました。

ブックマークレットを作りました

@日本語のチャンネルURLで取得できないのと、
Googleもセキュリティ強化されているので、
フォームで対応することが不可能になってきました。
ブックマークレットにしてみました。
一度こちらをお試しください。

1、ブックマークレット登録

名前はなんでも良いです。
URLは下記のスクリプトをコピペ

javascript:(async()=>{try{const R=/UC[\w-]{22}/,pick=x=>String(x||'').match(R)?.[0],copy=id=>navigator.clipboard&&navigator.clipboard.writeText?navigator.clipboard.writeText(id).then(()=>alert('コピーしました: '+id)).catch(()=>prompt('チャンネルID:',id)):prompt('チャンネルID:',id),fromUrl=u=>String(u||'').match(/\/channel\/(UC[\w-]{22})/)?.[1],base=location.pathname.replace(/\/(videos|shorts|streams|playlists|community|channels|about|featured|live)\/?$/,'').replace(/\/$/,''),fetchText=async u=>{const c=new AbortController,t=setTimeout(()=>c.abort(),8000);try{return await fetch(u,{credentials:'include',cache:'no-store',signal:c.signal}).then(r=>r.text())}finally{clearTimeout(t)}},initialData=h=>{const k='ytInitialData',i=String(h).indexOf(k);if(i<0)return null;let s=String(h),a=s.indexOf('{',i),q=0,esc=0,d=0;for(let j=a;j<s.length;j++){const ch=s[j];if(q){if(esc)esc=0;else if(ch==='\\')esc=1;else if(ch===q)q=0}else if(ch==='"')q=ch;else if(ch==='{')d++;else if(ch==='}'&&!--d)return JSON.parse(s.slice(a,j+1))}return null},idFromHtml=h=>{const doc=new DOMParser().parseFromString(String(h||''),'text/html'),q=s=>doc.querySelector(s);let id=fromUrl(q('link[rel="canonical"]')?.href)||fromUrl(q('meta[property="og:url"]')?.content)||pick(q('meta[itemprop="channelId"]')?.content);if(id)return id;const data=initialData(h);id=pick(data?.metadata?.channelMetadataRenderer?.externalId)||pick(data?.header?.c4TabbedHeaderRenderer?.channelId);return id||''};let id=fromUrl(location.href)||fromUrl(document.querySelector('link[rel="canonical"]')?.href);if(!id&&location.pathname.startsWith('/watch')){try{id=pick(ytInitialPlayerResponse?.videoDetails?.channelId)}catch(e){}}if(!id&&/^\/(@|c\/|user\/)/.test(base)){id=idFromHtml(await fetchText(location.origin+base+'/about'))||idFromHtml(await fetchText(location.origin+base))}if(!id)return alert('表示中チャンネルのIDが見つかりませんでした');copy(id)}catch(e){alert('エラー: '+(e&&e.message?e.message:e))}})();

2、YouTubeページを開く

チャンネルIDを調べたいページをブラウザで開きます。

3、ブックマークレットを実行

Related

関連記事

3 entries