MCPcopy Index your code
hub / github.com/LinaTsukusu/youtube-chat

github.com/LinaTsukusu/youtube-chat @v2.2.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v2.2.0 ↗ · + Follow
33 symbols 56 edges 10 files 4 documented · 12% updated 3y agov2.2.0 · 2022-11-30★ 24714 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

youtube-chat

npm version npm NPM CI

Fetch YouTube live chat without API

You will need to take full responsibility for your action

Getting started

  1. Install
    • npm i youtube-chat
    • yarn add youtube-chat
  2. Import
    • Javascript javascript const { LiveChat } = require("youtube-chat")
    • Typescript typescript import { LiveChat } from "youtube-chat"
  3. Create instance with ChannelID or LiveID ```javascript // If channelId is specified, liveId in the current stream is automatically acquired. // Recommended const liveChat = new LiveChat({channelId: "CHANNEL_ID_HERE"})

    // Or specify LiveID in Stream manually. const liveChat = new LiveChat({liveId: "LIVE_ID_HERE"}) 4. Add eventstypescript // Emit at start of observation chat. // liveId: string liveChat.on("start", (liveId) => { / Your code here! / })

    // Emit at end of observation chat. // reason: string? liveChat.on("end", (reason) => { / Your code here! / })

    // Emit at receive chat. // chat: ChatItem liveChat.on("chat", (chatItem) => { / Your code here! / })

    // Emit when an error occurs // err: Error or any liveChat.on("error", (err) => { / Your code here! / }) 5. Starttypescript // Start fetch loop const ok = await liveChat.start() if (!ok) { console.log("Failed to start, check emitted error") } 6. Stop looptypescript liveChat.stop() ```

Types

ChatItem

interface ChatItem {
   author: {
      name: string
      thumbnail?: ImageItem
      channelId: string
      badge?: {
         thumbnail: ImageItem
         label: string
      }
   }
   message: MessageItem[]
   superchat?: {
      amount: string
      color: string
      sticker?: ImageItem
   }
   isMembership: boolean
   isVerified: boolean
   isOwner: boolean
   isModerator: boolean
   timestamp: Date
}

MessageItem

type MessageItem = { text: string } | EmojiItem

ImageItem

interface ImageItem {
  url: string
  alt: string
}

EmojiItem

interface EmojiItem extends ImageItem {
  emojiText: string
  isCustomEmoji: boolean
}

References

  • https://drroot.page/wp/?p=227
  • https://github.com/taizan-hokuto/pytchat

Thank you!👍

Extension points exported contracts — how you extend this code

ChatItem (Interface)
(no doc)
src/types/data.ts
ImageItem (Interface)
(no doc)
src/types/data.ts
EmojiItem (Interface)
(no doc)
src/types/data.ts
GetLiveChatResponse (Interface)
(no doc)
src/types/yt-response.ts
Continuation (Interface)
(no doc)
src/types/yt-response.ts

Core symbols most depended-on inside this repo

parseChatData
called by 13
src/parser.ts
start
called by 8
src/live-chat.ts
fetchLivePage
called by 5
src/requests.ts
getOptionsFromLivePage
called by 4
src/parser.ts
parseThumbnailToImageItem
called by 3
src/parser.ts
stop
called by 3
src/live-chat.ts
convertColorToHex6
called by 2
src/parser.ts
fetchChat
called by 2
src/requests.ts

Shape

Interface 17
Function 10
Method 4
Class 2

Languages

TypeScript100%

Modules by API surface

src/types/yt-response.ts14 symbols
src/parser.ts7 symbols
src/live-chat.ts6 symbols
src/types/data.ts3 symbols
src/requests.ts3 symbols

For agents

$ claude mcp add youtube-chat \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact