YouTubeのカスタムURLからチャンネルIDを取得する

youtube

youtubeのチャンネルに関する情報をAPIとかで取得しようとすると「チャンネルID」が必要になるんですが、これは通常youtubeのチャンネルURLから簡単に取得する事ができます。

ですが、youtubeにはチャンネルURLを自由に設定できる「カスタムURL」という機能がありまして、これを設定されるとyoutubeのチャンネルURLからチャンネルIDが取得できなくなっちゃうんですよね。

例えばポケモンの公式チャンネルを開くと「https://www.youtube.com/user/PokemonCoJp」とカスタムURLが表示されますが、デフォルトのチャンネルURLは「https://www.youtube.com/channel/UC_SI1j1d8vJo_rYMV5o_dRg」となっています。

そしてチャンネルIDの「UC_SI1j1d8vJo_rYMV5o_dRg」を取得したいんですが、カスタムURLだとこの文字列は含まなくなっちゃってます。

なので今回はカスタムチャンネルURLからデフォルトのチャンネルURLへ簡単に変換するコンバータを作ってみようと思います。

カスタムチャンネルURLコンバータの仕様

  • PHPで書く(このブログにツールとして埋め込みたい)
  • カスタムURLをコピペしてボタン押すだけ

データの取得先

最初はyoutubeAPIかスクレイピングでデフォルトURLを探そうと考えていたんですが、youtubeのデータソースを調べているうちに各チャンネルのRSSにデフォルトURLが含まれる事を発見しまして、制約やデメリットなしで構築する目途が立ちました。

例えば、ポケモン公式チャンネルのカスタムURL「https://www.youtube.com/user/PokemonCoJp」のRSSは「https://www.youtube.com/feeds/videos.xml?user=PokemonCoJp」で中身を見てみると、

ありましたね、あとはxmlを取得してチャンネルIDの部分だけ抜き出せはokです。

サンプルコード

RSSを取得して要素を抜き出すだけならめちゃくちゃ簡単で3行で終わります。

<?php
$target_url ="https://www.youtube.com/feeds/videos.xml?user=PokemonCoJp";
$youtube_cannel_res = simplexml_load_file($target_url);
print($youtube_cannel_res->link[1]->attributes()->href);

ポケモン公式チャンネルのRSSをsimplexml_load_fileで読み込んで、デフォルトURLが入っている場所にアクセスするだけです。

エラー処理とかも含めればもうちっと長くなりますが、自分で使う分にはこれで十分じゃないでしょうかね。

完成したツールはこちら

今回完成したコンバータはこちらの「youtubeカスタムURLコンバーター」ページで無料ツールとして公開していますんで、必要な方は使ってみて下さい。

まとめ

RSSの中に欲しいデータが入ってる事に気付けたのが最大のポイントでしたね。youtubeAPIとかスクレイピングとか考えだすとそれぞれメリットやデメリットがあって、コントロールしなきゃいけない要素が一気に増えるんで、簡単に済んでラッキーでした。

分からない事や依頼があれば受け付けてますんでお問い合わせからご連絡下さいm(_ _)m

個人開発プログラマーを応援するメンバーシップを始めました('ω')ノ

質問・要望・共同作業など、みんなのやりたい事をスマイルがお手伝いします。立ち上げたばかりでよく分かってないので、とりあえず何でもありやってみます。

コメント