|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- import pygame
- from pygame.locals import *
- import sys
- import pytchat
- import time
- import random
- from talk import Talk
- import subprocess
- from aques import Aques
- from playsound import playsound
-
-
- YOUTUBE_ID: str = 'aq3QwuYz-KU'
-
-
- class Main:
- @classmethod
- def main (cls) -> None:
- pygame.init ()
- screen: pygame.Surface = pygame.display.set_mode ((1024, 768))
- balloon = pygame.transform.scale (pygame.image.load ('talking.png'),
- (1024, 384))
- pygame.mixer.init (frequency = 44100)
- noon = pygame.mixer.Sound ('noon.wav')
-
- live_chat = pytchat.create (video_id = YOUTUBE_ID)
-
- user_font = pygame.font.SysFont ('notosanscjkjp', 32,
- italic = True)
- nizika_font = pygame.font.SysFont ('07nikumarufont', 50)
-
- while (True):
- screen.fill ((0, 255, 0))
-
- if live_chat.is_alive ():
- messages: list[str] = [c.message
- for c in live_chat.get ().items]
-
- if messages:
- message: str = random.choice (messages)
- answer: str = Talk.main (message)
-
- screen.blit (balloon, (0, 0))
- screen.blit (user_font.render ('> ' + message, True,
- (0, 0, 0)),
- (120, 70))
- screen.blit (nizika_font.render (
- answer, True, (192, 0, 0)), (100, 150))
-
- pygame.display.update ()
-
- noon.play ()
-
- time.sleep (2)
-
- wav: bytearray | None = Aques.main (answer)
- if wav is not None:
- with open ('./nizika_talking.wav', 'wb') as f:
- f.write (wav)
-
- playsound ('./nizika_talking.wav')
-
- time.sleep (10)
-
- pygame.display.update ()
-
- for event in pygame.event.get ():
- if event.type == QUIT:
- pygame.quit ()
- sys.exit ()
-
-
- if __name__ == '__main__':
- Main.main ()
-
|