pytchat is a python library for fetching youtube live chat.
pytchat is a python library for fetching youtube live chat without using Selenium or BeautifulSoup.
Other features:
- Customizable chat data processors 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.
wiki (Japanese)
pip install pytchat
-
One-liner command.
-
Save chat data to html with embedded custom emojis.
-
Show chat stream (--echo option).
$ pytchat -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
Fetch chat data (see wiki)
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 string (feature of DefaultProcessor)
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().items:
print(c.json())
'''
-
Fetch chat with a buffer (LiveChat)
-
Use with asyncio (LiveChatAsync)
-
YT API compatible chat processor (CompatibleProcessor)
-
Extract archived chat data (Extractor)
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 |
Great thanks:
Most of source code of CLI refer to:
PetterKraabol / Twitch-Chat-Downloader
Progress bar in CLI is based on: