pytchat ======= pytchat is a python library for fetching youtube live chat. ## Description pytchat is a python library for fetching youtube live chat without using Selenium or BeautifulSoup. Other features: + Customizable [chat data processors](https://github.com/taizan-hokuto/pytchat/wiki/ChatProcessor) including youtube api compatible one. + Available on asyncio context. + Quick fetching of initial chat data by generating continuation params instead of web scraping. For more detailed information, see [wiki](https://github.com/taizan-hokuto/pytchat/wiki).
[wiki (Japanese)](https://github.com/taizan-hokuto/pytchat/wiki/Home_jp) ## Install ```python pip install pytchat ``` ## Examples ### CLI One-liner command. Save chat data to html with embedded custom emojis. Show chat stream (--echo option). ```bash $ pytchat -v https://www.youtube.com/watch?v=uIx8l2xlYVY -o "c:/temp/" # options: # -v : Video ID or URL that includes ID # -o : output directory (default path: './') # --echo : Show chats. # saved filename is [video_id].html ``` ### On-demand mode with simple non-buffered object. ```python import pytchat chat = pytchat.create(video_id="uIx8l2xlYVY") while chat.is_alive(): for c in chat.get().sync_items(): print(f"{c.datetime} [{c.author.name}]- {c.message}") ``` ### Output JSON format (feature of [DefaultProcessor](DefaultProcessor)) ```python import pytchat import time chat = pytchat.create(video_id="uIx8l2xlYVY") while chat.is_alive(): print(chat.get().json()) time.sleep(5) ''' # Each chat item can also be output in JSON format. for c in chat.get().sync_items(): print(c.json()) ''' ``` ### other #### Fetch chat with buffer. [LiveChat](https://github.com/taizan-hokuto/pytchat/wiki/LiveChat) #### Asyncio Context [LiveChatAsync](https://github.com/taizan-hokuto/pytchat/wiki/LiveChatAsync) #### [YT API compatible chat processor]https://github.com/taizan-hokuto/pytchat/wiki/CompatibleProcessor) ### [Extract archived chat data](https://github.com/taizan-hokuto/pytchat/wiki/Extractor) ```python from pytchat import HTMLArchiver, Extractor video_id = "*******" ex = Extractor( video_id, div=10, processor=HTMLArchiver("c:/test.html") ) ex.extract() print("finished.") ``` ## Structure of Default Processor Each item can be got with `sync_items()` function.
name type remarks
type str "superChat","textMessage","superSticker","newSponsor"
id str
message str emojis are represented by ":(shortcut text):"
messageEx str list of message texts and emoji dicts(id, txt, url).
timestamp int unixtime milliseconds
datetime str e.g. "2019-10-10 12:34:56"
elapsedTime str elapsed time. (e.g. "1:02:27") *Replay Only.
amountValue float e.g. 1,234.0
amountString str e.g. "$ 1,234"
currency str ISO 4217 currency codes (e.g. "USD")
bgColor int RGB Int
author object see below
Structure of author object.
name type remarks
name str
channelId str *chatter's channel ID.
channelUrl str
imageUrl str
badgeUrl str
isVerified bool
isChatOwner bool
isChatSponsor bool
isChatModerator bool
## Licence [![MIT License](http://img.shields.io/badge/license-MIT-blue.svg?style=flat)](LICENSE) ## Contributes Great thanks: Most of source code of CLI refer to: [PetterKraabol / Twitch-Chat-Downloader](https://github.com/PetterKraabol/Twitch-Chat-Downloader) Progress bar in CLI is based on: [vladignatyev/progress.py](https://gist.github.com/vladignatyev/06860ec2040cb497f0f3) ## Author [taizan-hokuto](https://github.com/taizan-hokuto) [twitter:@taizan205](https://twitter.com/taizan205)