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

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

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

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

# スーパーチャットの金額  
[ここ](https://github.com/1k-ct/Thinano/blob/main/super_chat/super_chat.json)はスパチャの各動画の金額です。
スパチャが一番多い動画は、[【祝】収益化きちゃ～～！！６０００人もありがとう♡【IBG/橘ひなの】](https://www.youtube.com/watch?v=oQmgxXbT8OE)この動画で、約40万円でしょうか？　　


```json:最高合計金額
{
        "oQmgxXbT8OE": {
            "￥": 371203.0,
            "PHP ": 500.0,
            "₩": 2000.0,
            "CA$": 55.0,
            "A$": 10.0
        }
}
```
----
 ここからは、調査方法の紹介  
今からは、下の２つのURLの一部を紹介です。
https://github.com/taizan-hokuto/pytchat
https://github.com/taizan-hokuto/pytchat/wiki/Home_jp

# 環境

Python 3.8.5  
pytchat 0.4.2  

```terminal:インストール
$ pip install pytchat
```

# ライブコメントを取得

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

```python: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_  

- 進捗バーをインストール　　

```terminal:進捗が分かって結構いい
$ pip install tqdm
```

```python: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)
```


# 引用
- https://github.com/taizan-hokuto/pytchat
- https://github.com/taizan-hokuto/pytchat/wiki/Home_jp  

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