1
0
mirror of https://github.com/MarkParker5/STARK.git synced 2025-07-12 22:50:22 +02:00

play films with kweb for rpi

This commit is contained in:
MarkParker5
2020-10-28 21:02:30 +02:00
parent a8e77bcc6f
commit b17b23c8e7
8 changed files with 59 additions and 15 deletions

View File

@ -9,7 +9,6 @@
# must return dict like {'cmd': cmd, 'params': params}
# this - object (class instance) pointer (self)
# abstract this.start() - required method for all commands
# abstract this.confirm() - Return True/False (User responce)
# this.keywords - dictionary of arrays keywords
# like {
# (int)weight : ['word1', 'word2', 'word3'],
@ -119,9 +118,6 @@ class Command(ABC):
def setStart(this, function): # define start (required)
this.start = function
def setConfirm(this, function): # define confirm (optional)
this.confirm = function
######################################################################################
# GETTERS #
######################################################################################
@ -144,10 +140,6 @@ class Command(ABC):
def start(this, params): # main method
pass
@abstractmethod
def confirm(this): # optional method
pass
######################################################################################
# STATIC METHODS #
######################################################################################

47
Media/__init__.py Normal file
View File

@ -0,0 +1,47 @@
from .film import *
import requests
from bs4 import BeautifulSoup as BS
import webbrowser
################################################################################
def method(params):
def findFilm(name):
query = name + ' site:kinogo.by'
responce = requests.get(f'https://www.google.ru/search?&q={query}&lr=lang_ru&lang=ru')
page = BS(responce.content, 'html.parser')
link = page.select_one('.ZINbbc.xpd.O9g5cc.uUPGi>.kCrYT>a')
return link['href'][7:].split('&')[0] if link else None
def extractUrl(url):
responce = requests.get(url)
page = BS(responce.content, 'html.parser')
url = page.select_one('div[style="padding:22px; float:left; margin-left: 30px;"]>a[download]:last-child')
return url['href'] if url else None
def finalUrl(url):
return "http://localhost:9192/play?url="+url
def start(url):
webbrowser.open(url)
name = params.get('text')
print(name)
if name:
if url:= extractUrl(findFilm(name)):
voice = text = 'Включаю'
start(finalUrl(url))
else:
voice = text = 'Не могу найти фильм'
else:
voice = text = 'Какой фильм включить?'
return {
'type': 'simple',
'text': text,
'voice': voice,
}
patterns = ['* включ* фильм $text', '* включ* фильм*']
subpatterns = ['$text',]
kinogo = film('KinogoPlayer', {}, patterns, subpatterns)
kinogo.setStart(method)

5
Media/film.py Normal file
View File

@ -0,0 +1,5 @@
from Command import Command
class film(Command):
def start(this, string): # main method
pass

View File

@ -7,8 +7,6 @@ import json
import re
class QA(Command):
def confirm(this, string): return True
def googleDictionary(this, word):
responce = requests.get(f'https://api.dictionaryapi.dev/api/v2/entries/ru/{word}')
if responce.status_code == 200:

View File

@ -10,6 +10,3 @@ from Command import Command # import parent class
class SmallTalk(Command):
def start(this, string): # main method
print(f'Hello, {string=}')
def confirm(this): # optional method
return True

0
api_server.py Normal file
View File

0
control_panel.py Normal file
View File

View File

@ -1,6 +1,7 @@
import SpeechRecognition
import Text2Speech
import SmallTalk
import Media
from Command import Command
import config
import QA
@ -44,8 +45,12 @@ while True: # main loop
if Command.isRepeat(text):
reply(memory[0]['responce']);
continue
try: cmd, params = memory[0]['cmd'].checkContext(text).values(); params = {**memory[0]['params'], **params}
except: cmd, params = Command.reg_find(text).values()
try:
cmd, params = memory[0]['cmd'].checkContext(text).values()
if memory[0].get('params'):
params = {**memory[0].get('params'), **params}
except:
cmd, params = Command.reg_find(text).values()
responce = cmd.start(params)
reply(responce)
memory.insert(0, {