项目作者: dqn

项目描述 :
YouTube Live archive chats fetcher
高级语言: Go
项目地址: git://github.com/dqn/chatlog.git
创建时间: 2020-04-07T03:17:16Z
项目社区:https://github.com/dqn/chatlog

开源协议:MIT License

下载


chatlog

build status

Due to changes in YouTube’s private API, this package is no longer available.

YouTube Live archive chats fetcher. Premiered videos are also supported.

Installation

  1. $ go get github.com/dqn/chatlog

Usage

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/dqn/chatlog"
  5. )
  6. func main() {
  7. c := chatlog.New("VIDEO_ID")
  8. err := c.HandleChat(func(renderer ChatRenderer) error {
  9. switch r := renderer.(type) {
  10. // System message
  11. case *LiveChatViewerEngagementMessageRenderer:
  12. // Print formatted message.
  13. // e.g. "[Live chat replay is on. Messages that appeared when the stream was live will show up here.]"
  14. fmt.Println(renderer.ChatMessage())
  15. return nil
  16. // Chat message
  17. case *LiveChatTextMessageRenderer:
  18. fmt.Println(r.AuthorName.SimpleText) // Author name
  19. fmt.Println(r.AuthorExternalChannelID) // Channel ID
  20. fmt.Println(r.AuthorPhoto.Thumbnails[0].URL) // Icon URL
  21. // Print formatted message.
  22. // e.g. "Alice: hello!"
  23. fmt.Println(renderer.ChatMessage())
  24. return nil
  25. // Membership joining
  26. case *LiveChatMembershipItemRenderer:
  27. fmt.Println(r.AuthorName.SimpleText) // Author name
  28. fmt.Println(r.AuthorExternalChannelID) // Channel ID
  29. fmt.Println(r.AuthorPhoto.Thumbnails[0].URL) // Icon URL
  30. // Print formatted message.
  31. // e.g. "[Welcome to Membership!] Bob"
  32. fmt.Println(renderer.ChatMessage())
  33. return nil
  34. // Super Chat
  35. case *LiveChatPaidMessageRenderer:
  36. fmt.Println(r.AuthorName.SimpleText) // Author name
  37. fmt.Println(r.AuthorExternalChannelID) // Channel ID
  38. fmt.Println(r.AuthorPhoto.Thumbnails[0].URL) // Icon URL
  39. fmt.Println(r.PurchaseAmountText.SimpleText) // Super Chat Amount
  40. // Print formatted message.
  41. // e.g. "[$10.00] Carol: bye!"
  42. fmt.Println(renderer.ChatMessage())
  43. return nil
  44. }
  45. })
  46. if err != nil {
  47. // Handle error.
  48. }
  49. }

Also can custom message.

  1. // Example for LiveChatTextMessageRenderer.
  2. r, _ := renderer.(*LiveChatTextMessageRenderer)
  3. var buf bytes.Buffer
  4. buf.WriteString(r.AuthorName.SimpleText + "> ")
  5. for _, run := range r.Message.Runs {
  6. if run.Text != "" {
  7. buf.WriteString(run.Text)
  8. } else {
  9. buf.WriteString(run.Emoji.Image.Accessibility.AccessibilityData.Label)
  10. }
  11. }
  12. fmt.Println(buf.String())

Other

ChatRenderer is actual YouTube private API response structure. See payloads for more details.

License

MIT