最近TikTokなるものを始めてみたのですが、再生回数が表示されません。実はパソコンからだと通常の方法では動画の再生回数を確認することができないのです。どうしてこんなPCユーザーいじめのような仕様になっているのでしょうか?スマホでないと利用できないサービスが最近増えてきたように思います。

PCからでもTikTokの再生回数を確認できる

とはいえPCからでもTikTokの再生回数を確認する方法はあります。それはHTMLソースには書かれているのでそれを直接見ればよいのです。動画の投稿ページに移動して Ctrlキーを押しながら U キー を押下するとソースを見ることができます。

https://www.tiktok.com/@hatodemowakaru/video/7193925347593702657

Ctrl + F キーを押すとソース内の文字列を検索することができます。「playCount」を検索します。すると再生回数は777回だということがわかります。YouTubeだとたった2日でこんなに再生回数が増えることはないのでTikTokのほうが再生されやすいことがわかります。

HttpClientではTikTokのHTMLを取得できない?

あとはC#でHTMLを解析して再生回数を取得すれば目的は達成できそうです。

そこでこんなコードを書いてみました。

ところがこれだと文字列を取得することができません。他のサイトだとHTMLを取得することができるのですが、TikTokの場合はうまくいきません。

PuppeteerSharpをインストールする

そこで別の方法をとります。NuGetでPuppeteerSharpをインストールします。

再生数が書かれている部分はjsonデータでscriptタグで囲われています。そこでこの部分を抜き出します。

json形式の文字列を抜き出すのであれば取得したHTML全体を <script id=”SIGI_STATE” type=”application/json”> で分割し、後ろ側の要素を </script> で分割して最初の要素を取得すればよいです。

また抜き出したJsonデータから再生回数を抜き出したいのであれば、文字列を「”playCount”:」で分割しその後ろ側の要素を「}」または「,」で分割して最初の要素を取得すればできそうです。

これらを使って再生数、いいね、シェア数を取得し、TextBoxに出力させるコードを示します。

アップしている動画の再生数をすべて取得する

HTMLを調べてみるとアップしている動画の再生数をすべて取得することができることがわかりました。

https://www.tiktok.com/@hatodemowakaru/

HTMLの文字列のなかに「playCount」が複数存在します。また動画のタイトルも書かれているので、そのアカウントのすべての動画の再生数、いいね、シェア数を取得することができそうです。

先述のGetJsonメソッドで取得したjsonデータを開いてみると以下のようになります。

ItemModuleというキーのなかに動画のIDのキーがあり、そのなかにstatsというキーがあります。そのなかに再生数やいいねの数が記録されていることがわかります。この部分を抜き出せば必要な情報を得られそうです。

ここではNewtonsoft.Json.Linq.JObjectクラスを使います。