9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【python】【pytchat】でyoutubeLiveのコメントを取得してみる!

Last updated at Posted at 2020-11-14

ライブのコメントを全部みてみる

橘ひなのさん(vtuber)の全ての動画のライブコメントを取得しました。
./Thinano/data/0IFEp1Bt3qw.jsonをみてください。
データは、https://github.com/1k-ct/Thinano 全部ここにあります。

nameがコメントした人の名前、messageがコメントです。  
:_naa::_noo: ← これは、メンバーの人だけが使えるスタンプです。  

  • 他の動画のコメントを見る
  • ここをクリックする。
  • commentをクリックする。
  • 見たいファイルを選ぶ
    https://www.youtube.com/watch?v=oQmgxXbT8OE  は, oQmgxXbT8OE.jsonこんな感じにしてます  
  • View raw を押してファイルをみてみてください。

スーパーチャットの金額

ここはスパチャの各動画の金額です。
スパチャが一番多い動画は、【祝】収益化きちゃ~~!!6000人もありがとう♡【IBG/橘ひなの】この動画で、約40万円でしょうか?  

最高合計金額
{
        "oQmgxXbT8OE": {
            "¥": 371203.0,
            "PHP ": 500.0,
            "₩": 2000.0,
            "CA$": 55.0,
            "A$": 10.0
        }
}

ここからは、調査方法の紹介
今からは、下の2つのURLの一部を紹介です。
https://github.com/taizan-hokuto/pytchat
https://github.com/taizan-hokuto/pytchat/wiki/Home_jp

環境

Python 3.8.5
pytchat 0.4.2

インストール
$ pip install pytchat

ライブコメントを取得

公式見てください。
https://github.com/taizan-hokuto/pytchat/wiki/PytchatCore_

main.py

import pytchat
import time
# PytchatCoreオブジェクトの取得
livechat = pytchat.create(video_id = "Zvp1pJpie4I")# video_idはhttps://....watch?v=より後ろの

while livechat.is_alive():
    # チャットデータの取得
    chatdata = livechat.get()
    for c in chatdata.items:
        print(f"{c.datetime} {c.author.name} {c.message} {c.amountString}")
        '''
        JSON文字列で取得:
        print(c.json())
        '''
    time.sleep(5)

スーパーチャット

これも、公式見てください。
https://github.com/taizan-hokuto/pytchat/wiki/SuperchatCalculator_

  • 進捗バーをインストール  
進捗が分かって結構いい
$ pip install tqdm
main.py
from tqdm import tqdm
from pytchat import Extractor, VideoInfo, SuperchatCalculator
import signal

'''
進捗状況を表すプログレスバー
'''
class ProgressBar:
    def __init__(self,total):
        self.total = total*1000
        self.pbar = tqdm(total = self.total, ncols = 80, unit_scale = 1,
            bar_format='{desc}{percentage:3.1f}%|{bar}|'
                       '[{n_fmt:>7}/{total_fmt}]{elapsed}<{remaining}')
        
    def callback(self, actions, fetched):
        if self.total - fetched < 0:
            fetched = self.total
        self.total -= fetched
        self.pbar.update(fetched)
    
    def close(self):
        self.pbar.update(self.total)
        self.pbar.close()
    
    def cancel(self):
        self.pbar.close()

if __name__ == '__main__':
    video_id = "GY-LSsYVpJ4"
    info  = VideoInfo(video_id)
    print('Calculate Superchat: [title] ', info.get_title())    

    # プログレスバーを用意する。
    pbar = ProgressBar(info.get_duration())
 
    # Extractorの生成
    ex = Extractor(
        video_id,
        callback = pbar.callback,
        div = 10,
        processor = SuperchatCalculator()
    )

    #Ctrl+Cでキャンセルする
    signal.signal(signal.SIGINT,  
        (lambda a, b: ex.cancel()))

    #抽出の実行
    result = ex.extract()

    #集計結果の表示
    pbar.close()
    print(result)

引用

おわりに

説明などは、全て上のURLにあります。  
紹介だけで記事にして良いか迷いました。
あと、スーパーチャットのjsonが見づらいです。直そうと思います。  
なにかあれば連絡お願いします。ありがとうございます。

9
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?