diff --git a/CHANGELOG.md b/CHANGELOG.md index fc72324115c4b8c594a5a0baa8fe88ee2521c3fa..5c562a487521acf0c83ffdd4576df918ad115c9f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,11 @@ # CHANGELOG: +## 12 sept 2019 +**Ajout:** +- parle de chuck norris +- gestion du volume +- rhythmbox + +--- ## 19 aout 2019 **Fixes:** diff --git a/Jarvis.py b/Jarvis.py index a801c8f2abbfa29eddd4da22316a5826c37563ec..926c273f4e510dc266d086416f891b2a9e015863 100755 --- a/Jarvis.py +++ b/Jarvis.py @@ -32,14 +32,14 @@ def get_speech(message="entrée"): r.adjust_for_ambient_noise(source, duration=2) audio = r.listen(source, timeout=1) print('[speech_detected]') - play_compris_sound() + # play_compris_sound() entre = r.recognize_google(audio, language="fr") understand = True print(entre) - play_compris_sound() + # play_compris_sound() except: print("[!] impossible de comprendre votre charabia [!]") - play_pascompris_sound() + # play_pascompris_sound() entre = '' else: entre = input('[-] %s (clavier) :' % message) @@ -80,9 +80,12 @@ def parle(texte, save=True, lang='fr-CA'): pygame.mixer.music.stop() # pygame.mixer.quit() # pygame.mixer.init(frequency=frequency) - pygame.mixer.music.load('saved_voice/{}.mp3'.format(line_no)) - pygame.mixer.music.play() - pygame.mixer.music.set_endevent() + try: + pygame.mixer.music.load('saved_voice/{}.mp3'.format(line_no)) + pygame.mixer.music.play() + pygame.mixer.music.set_endevent() + except: + print("ERROR: can't play audio") def deverouillage(entre): @@ -228,7 +231,7 @@ def meteo(entre): def dire_un_truc_en_mode_random(verbosity): - if random.randint(0, 100) < verbosity * 10: + if random.randint(0, 100) < verbosity: parle(random.choice([useless.chuck(), useless.genererSujet(), useless.useless()]), False) @@ -367,6 +370,32 @@ def tests(entre): sys.stdout.write(chr(13)) sys.exit() + # gestion de la musique + if "play" in entre or "jouede la musique" in entre: + os.system("rhythmbox-client --play --shuffle") + process = Popen(["rhythmbox-client", "--print-playing"], stdout=PIPE, stderr=PIPE) + stdout, stderr = process.communicate() + parle("j'ai lancé " + stdout.decode(), False) + if "pause" in entre: + os.system("rhythmbox-client --pause") + parle("pause") + if "musique suivante" in entre: + os.system("rhythmbox-client --next") + if "musique precedente" in entre: + os.system("rhythmbox-client --previous") + if "nom de la musique" in entre: + process = Popen(["rhythmbox-client", "--print-playing"], stdout=PIPE, stderr=PIPE) + stdout, stderr = process.communicate() + parle(stdout.decode(), False) + + # gestion du volume + if "monte" in entre and any(e in entre for e in ["son", "volume"]): + # os.system("pactl -- set-sink-volume 0 +10%") + os.system("rhythmbox-client --volume-up") + if "baisse" in entre and any(e in entre for e in ["son", "volume"]): + # os.system("pactl -- set-sink-volume 0 -10%") + os.system("rhythmbox-client --volume-down") + # éteind le pc if "eteint" in entre and "ordinateur" in entre: # Eteint l'ordinateur parle("je vais éteindre votre ordinateur.") @@ -376,6 +405,21 @@ def tests(entre): if any(ext in entre for ext in ['sais faire', 'peux faire']) or ('autre ' in entre and any(ext in entrepreced for ext in ['sais faire', 'peux faire'])): parle(random.choice(['Je sais par exemple ', 'Je peux entre autre ']) + random.choice(fonctionnalités) + '.') + if "chuck norris" in entre: + parle(useless.chuck(), False) + + if "donne une info" in entre: + parle(usefull.sudpresse(), False) + + if "donne les info" in entre: + res = "" + for i in range(5): + res += usefull.sudpresse() + "\n" + parle(res, False) + + if "horoscope" in entre: + parle(usefull.horoscope("vierge"), False) + if 'moins bavard' in entre: verbosity -= 1 parle('D\'accord chef je parlerais un peu moins') @@ -408,7 +452,7 @@ def tests(entre): parle("je n'ai pas compris.") else: print("je n'ai pas compris") - play_pascompris_sound() + # play_pascompris_sound() if not currently_playing: dire_un_truc_en_mode_random(verbosity) compris = 0 @@ -451,11 +495,5 @@ if __name__ == "__main__": if currently_playing and 'stop' in entre: pygame.mixer.music.stop() - elif currently_playing and 'pause' in entre or 'arrete' in entre: - pygame.mixer.music.pause() - elif currently_playing and 'recommence' in entre: - pygame.mixer.music.rewind() - elif currently_playing and 'reprend' in entre or 'continue' in entre: - pygame.mixer.music.unpause() elif deverouillage(entre): tests(entre) diff --git a/README.md b/README.md index 11f0ce773ba0c28fe981aac3fb18685bf0d6be30..aa79d0850c0cabbe2749a961ce2aeb4da3e8e3a7 100644 --- a/README.md +++ b/README.md @@ -24,13 +24,10 @@ Dans /etc/pulse/daemon.conf décommenter et modifier ces lignes : ---- # TODOLIST: -- lit le contenu affiché à l'écran -- mode dictée (voir module pynput) : ecrit ce qu'on lui dicte -- traduire un texte ou un mot dans une autre langue -- jurer -- parler du grand Chuck Norris ! -- quizz -- migrer les fonctionalités usefull dans un package 'usefull' +- google calendar API +- musique +(- itinéraire) +- allumer lumière ---- diff --git a/__pycache__/myimports.cpython-37.pyc b/__pycache__/myimports.cpython-37.pyc index b50a74624a63b76c5cbae7017616d1340c78054d..d7c1cf0f35ff62f0c1d788a9066218a22f1b0702 100644 Binary files a/__pycache__/myimports.cpython-37.pyc and b/__pycache__/myimports.cpython-37.pyc differ diff --git a/clip.mp3 b/clip.mp3 deleted file mode 100644 index 8ef1cebcbea496abe75453a24b3e2a9f46f730e4..0000000000000000000000000000000000000000 Binary files a/clip.mp3 and /dev/null differ diff --git a/clip2.mp3 b/clip2.mp3 deleted file mode 100644 index daf833cdc51c5c4e7d79144d2cdd49d10a23e58a..0000000000000000000000000000000000000000 Binary files a/clip2.mp3 and /dev/null differ diff --git a/database.txt b/database.txt index 08206109b24072c158644505a4f58b5c8e95abab..120550b26e28bac8d5141dcb995cd626d4818311 100644 --- a/database.txt +++ b/database.txt @@ -41,4 +41,19 @@ Bonjour ! |je vais donner la météo actuelle de saint-leu reunion. |Ousp j'ai glissé chef !name 'pays' is not defined |Houston, on a un problème !'int' object is not callable +|je vais chercher : paul robinson +|Paul William Robinson, né le 15 octobre 1979 à Beverley, est un footballeur international anglais qui évolue au poste de gardien de but. +|t'inquiètes, je suis paysé pour ça +|Paris [pa.i] est la capitale et la ville la plus peuplée de France. Elle se situe au cur d'un vaste bassin sédimentaire aux sols fertiles et au climat tempéré, le bassin parisien, sur une boucle de la Seine, entre les confluents de celle-ci avec la Marne et l'Oise. Paris est également le chef-lieu de la région Île-de-France et le centre de la métropole du Grand Paris, créée en 2016. Elle est divisée en arrondissements, comme les villes de Lyon et de Marseille, au nombre de vingt. Administrativement, la ville constitue depuis le 1er janvier 2019 une collectivité à statut particulier nommée « Ville de Paris » (auparavant, elle était à la fois une commune et un département). L'État y dispose de prérogatives particulières exercées par le préfet de police de Paris. La ville a connu de profondes transformations sous le Second Empire à travers d'importants travaux consistant notamment au percement de larges avenues, places et jardins et la construction de nombreux édifices, dirigés par le baron Haussmann. +|Je vais vous montrer où se trouve paris +|je vais chercher :donne-moi un truc marrant a r +|Vous voulez dire : Clint Eastwood, Orelsan et Gringe sont les Casseurs Flowters, État islamique (organisation), Accept (groupe), Amanda Lear, Backmasking, Liste des épisodes de Billy et Mandy, aventuriers de l'au-delà, Liste des ouvrages publiés dans la Série noire +|je vais chercher : quenouille +|Une quenouille est un instrument ancien utilisé pour le filage des matières textiles et surtout du lin, du chanvre ou de la laine, mais elle peut être utilisée avec toutes les fibres que l'on file habituellement. +|pause +|Je pete la forme ! Que puis-je faire pour vous ? +|Le chat de Chuck Norris ne miaule pas pendant une heure quand il a faim, il lui demande poliment l'heure du prochain repas. +|De rien +|je vais chercher : encule +|Vous voulez dire : Enculé, Enculé de ta race, L'Enculé (roman), Spinoza encule Hegel, Marc-Édouard Nabe, Fils de pute, Mathieu Kassovitz, La Lutte des classes (film), Con, Juron | \ No newline at end of file diff --git a/myimports.py b/myimports.py index 8444eaa0cfef884345e86c361086a6b97f009ab2..697f0a7238df6519536efb71fbe3351fc7559bd1 100644 --- a/myimports.py +++ b/myimports.py @@ -14,12 +14,14 @@ from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart import smtplib import warnings +from subprocess import Popen, PIPE import requests # import mutagen.mp3 from playsound import playsound import useless # package de fonctions inutiles mais marrantes -# import pyttsx3 +import pyttsx3 import usefull # package de fonctions utiles +from bs4 import BeautifulSoup from googletrans import Translator translator = Translator() warnings.simplefilter('ignore', UserWarning) @@ -43,17 +45,17 @@ else: reconnaissance = str(input("[!] synthèse de google ? (y,N)>")) if reconnaissance == 'y': - google_bool = True # défini si jarvis parle - print("[!] synthèse vocale activée.") + google_bool = True # défini si on utilise gogole + print("[!] synthèse de gogole.") else: google_bool = False - print("[!] synthèse vocale désactivée.") + print("[!] synthèse vocale de merde.") pygame.init() pygame.mixer.init(frequency=24000) -# engine = pyttsx3.init() -# voice = engine.getProperty('voices')[26] # the french voice -# engine.setProperty('voice', voice.id) +engine = pyttsx3.init() +voice = engine.getProperty('voices')[26] # the french voice +engine.setProperty('voice', voice.id) url = "https://translate.google.com/translate_tts" topics = [] ville_actuelle = 'petite-ile' @@ -68,9 +70,8 @@ bot_name = "jarvis" # défini le nom auquel répondra l'ia compris = 0 comprispreced = 0 verbosity = 3 -game = useless.Quizz() chacon_ip_list = {'salon': '192.168.1.33'} -chacon_device_list = [usefull.Chacon(chacon_ip_list[name], name) for name in chacon_ip_list.keys()] +chacon_device_list = [] # [usefull.Chacon(chacon_ip_list[name], name) for name in chacon_ip_list.keys()] entrepreced = "" _from = "" password = "" diff --git a/saved_voice/43.mp3 b/saved_voice/43.mp3 index c5a3f59bd7eca06aed39c85f064b172b7b31f0a0..3c26897b9cc7f765fa877def00a28ce3416ab138 100644 Binary files a/saved_voice/43.mp3 and b/saved_voice/43.mp3 differ diff --git a/saved_voice/44.mp3 b/saved_voice/44.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..7135ccd8b398d302ea5c1f6eeca7c87845c1519e Binary files /dev/null and b/saved_voice/44.mp3 differ diff --git a/saved_voice/45.mp3 b/saved_voice/45.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..2b626748933f9f330dc9ec0f33d5681a295a8342 Binary files /dev/null and b/saved_voice/45.mp3 differ diff --git a/saved_voice/46.mp3 b/saved_voice/46.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..7be2feafce2362d3c284931a752801533ab3fb27 Binary files /dev/null and b/saved_voice/46.mp3 differ diff --git a/saved_voice/47.mp3 b/saved_voice/47.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..e3c7b8def199f7a9b7f3257e07616ba7fc680e42 Binary files /dev/null and b/saved_voice/47.mp3 differ diff --git a/saved_voice/48.mp3 b/saved_voice/48.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..9148eb956135e3a4becb851516feb36aca92261a Binary files /dev/null and b/saved_voice/48.mp3 differ diff --git a/saved_voice/49.mp3 b/saved_voice/49.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/saved_voice/50.mp3 b/saved_voice/50.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..d577eef921b6a92b8aa1f32065d13d2c71434331 Binary files /dev/null and b/saved_voice/50.mp3 differ diff --git a/saved_voice/51.mp3 b/saved_voice/51.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/saved_voice/52.mp3 b/saved_voice/52.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..dd0828c1ef9418348d8853b48bf03b845a6830c7 Binary files /dev/null and b/saved_voice/52.mp3 differ diff --git a/saved_voice/53.mp3 b/saved_voice/53.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..4e19501a7960deb7fec1f70940269ba11d14426c Binary files /dev/null and b/saved_voice/53.mp3 differ diff --git a/saved_voice/54.mp3 b/saved_voice/54.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..01bfd73c8ef8a0c95389925beaa2355252b70e7c Binary files /dev/null and b/saved_voice/54.mp3 differ diff --git a/saved_voice/55.mp3 b/saved_voice/55.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..d46eae2664aa5174bbf8a7b18702c51f80c6aec7 Binary files /dev/null and b/saved_voice/55.mp3 differ diff --git a/saved_voice/56.mp3 b/saved_voice/56.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..9d28a063928094205b41530e09e54c614f5d9349 Binary files /dev/null and b/saved_voice/56.mp3 differ diff --git a/saved_voice/57.mp3 b/saved_voice/57.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..e5f4a239d320cb81426dc6a14e6bc90b80334888 Binary files /dev/null and b/saved_voice/57.mp3 differ diff --git a/saved_voice/58.mp3 b/saved_voice/58.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..966e86777ebb20cd320aaa3408dbbe4894fb01b2 Binary files /dev/null and b/saved_voice/58.mp3 differ diff --git a/usefull/__init__.py b/usefull/__init__.py index 4891b5444151af9af4a7fcaf478d4f3c7617841e..25a17cb461098f27eac25c56d5cfa75b43f16fde 100644 --- a/usefull/__init__.py +++ b/usefull/__init__.py @@ -2,4 +2,6 @@ from .wiki import * from .meteo import * -from .chacon import * \ No newline at end of file +from .chacon import * +from .sudinfo import * +from .horoscope import * \ No newline at end of file diff --git a/usefull/__pycache__/__init__.cpython-37.pyc b/usefull/__pycache__/__init__.cpython-37.pyc index 8928d63a8a3341374d48bcba1d2fef0bf75221bd..27c9d84cbc5871d39386430a91145632eebf0f31 100644 Binary files a/usefull/__pycache__/__init__.cpython-37.pyc and b/usefull/__pycache__/__init__.cpython-37.pyc differ diff --git a/usefull/__pycache__/chacon.cpython-37.pyc b/usefull/__pycache__/chacon.cpython-37.pyc index 84e1c00850006e0873557724b403635c5b2b0950..9163707170e3de8a3134f26e18a6383dc6dc2ed5 100644 Binary files a/usefull/__pycache__/chacon.cpython-37.pyc and b/usefull/__pycache__/chacon.cpython-37.pyc differ diff --git a/usefull/__pycache__/horoscope.cpython-37.pyc b/usefull/__pycache__/horoscope.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e3a9fe3389903d7f92b9fce3b68cb7a041e68204 Binary files /dev/null and b/usefull/__pycache__/horoscope.cpython-37.pyc differ diff --git a/usefull/__pycache__/sudinfo.cpython-37.pyc b/usefull/__pycache__/sudinfo.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..06d74c3f2023be7eef70c36e4fd19c116137a3f3 Binary files /dev/null and b/usefull/__pycache__/sudinfo.cpython-37.pyc differ diff --git a/usefull/horoscope.py b/usefull/horoscope.py new file mode 100644 index 0000000000000000000000000000000000000000..94a0596dbeffbc00a4cd9f05fab1c22a59ff6005 --- /dev/null +++ b/usefull/horoscope.py @@ -0,0 +1,25 @@ +import requests +from bs4 import BeautifulSoup + + +def horoscope(signe): + signs = ['aries', 'taurus', 'gemini', 'cancer', 'leo', 'virgo', 'libra', 'scorpio', 'sagitarius', 'capricorn', + 'aquarius', 'pisces'] + signs = ['belier', 'taureau', 'gemeau', 'cancer', 'lion', 'vierge', 'balance', 'scorpion', 'sagittaire', 'capricorne', + 'verseau', 'poisson'] + + for index, sign_ in enumerate(signs): + if signe == sign_: + url = f"https://www.horoscope.com/fr/horoscopes/general/horoscope-general-daily-today.aspx?sign={index+1}" + page = requests.get(url) + + soup = BeautifulSoup(page.text, "html.parser") + + horoscope_ = soup.findAll("div", {"class": "horoscope-content"})[0].text.strip().split('\n')[0] + + return horoscope_ + + +if __name__ == '__main__': + rinput = input("Enter your sign: ") + print(horoscope(str.strip(rinput.lower()))) diff --git a/usefull/maps.py b/usefull/maps.py index b06c35258f74b95aa88acf2eccc55eba9b1d9b9f..619a76573849f3d8dc88cf6742b8b29e243b21cd 100644 --- a/usefull/maps.py +++ b/usefull/maps.py @@ -5,13 +5,15 @@ affiche une page maps avec un lieu rechercher TODO : affiche un itinéraire sur maps ''' -import requests -import os - def maps(location, dest=None): location = ("+").join(location.split(" ")) - os.system("firefox https://www.google.nl/maps/place/" + location + "/& >/dev/null") + if dest is not None: + if type(dest) == list: + dest = '/'.join(dest) + dest = ("+").join(dest.split(" ")) + return f"https://www.google.nl/maps/dir/{location}/{dest}" + return "https://www.google.nl/maps/place/" + location + "/&" if __name__ == '__main__': diff --git a/usefull/sudinfo.py b/usefull/sudinfo.py new file mode 100644 index 0000000000000000000000000000000000000000..e22780cce9e875238437bea98062161c031f505e --- /dev/null +++ b/usefull/sudinfo.py @@ -0,0 +1,24 @@ +#!/usr/bin/python3 +# coding: utf-8 +# sudpresse + +import requests +from bs4 import BeautifulSoup +import random + + +def sudpresse(): + """raconte une intox marrante""" + try: + req = requests.get("https://sudinfo.be/") + html = req.content + bs = BeautifulSoup(html, 'html.parser') + res = [l.get_text().replace('\n', '').replace("\t", "").replace("\r", "").strip() for l in bs.find_all('a') if len(l.get_text().replace('\n', '').replace("\t", "").replace("\r", "").strip()) > 40] + final = random.choice(res) + return final + except: + return 'Houston on a un problème' + + +if __name__ == '__main__': + print(sudpresse()) diff --git a/useless/__init__.py b/useless/__init__.py index a13ef3a6efd6b662f25cf410bdab2a23047ffab8..c507e92517a1091d1b9e61a311c303a528c9cb78 100644 --- a/useless/__init__.py +++ b/useless/__init__.py @@ -7,4 +7,3 @@ from .nordpresse import nordpresse from .philotron import genererSujet from .pipotron import pipo from .haddock import haddock -from .quizz import * diff --git a/useless/__pycache__/__init__.cpython-37.pyc b/useless/__pycache__/__init__.cpython-37.pyc index cf412b6c085ef2c5780461e4d76434a47e1bd2be..c8e1eb1a21625c165de05b8b21fa20565a9fd52c 100644 Binary files a/useless/__pycache__/__init__.cpython-37.pyc and b/useless/__pycache__/__init__.cpython-37.pyc differ diff --git a/useless/__pycache__/quizz.cpython-37.pyc b/useless/__pycache__/quizz.cpython-37.pyc index 6be4cc40a3225f6e3b69648fda439ec0f3b0ac70..a22397bff3c23616121d83958050b2136e351f2b 100644 Binary files a/useless/__pycache__/quizz.cpython-37.pyc and b/useless/__pycache__/quizz.cpython-37.pyc differ diff --git a/useless/guess.py b/useless/guess.py deleted file mode 100755 index 88e391ea6961c15f25e0039df74d10b06ebb5a7f..0000000000000000000000000000000000000000 --- a/useless/guess.py +++ /dev/null @@ -1,145 +0,0 @@ -#!/usr/bin/python3 -# coding: utf-8 -# https://fr.akinator.com/game -import requests - -# Somebody told me that the link has changed, but I'm not -# really maintaining this anymore, so here is something that -# I think should fix it. - -NEW_SESSION_URL = "https://srv2.akinator.com:9157/ws/new_session?constraint=ETAT<>'AV'&partner=1" -ANSWER_URL = "https://srv2.akinator.com:9157/ws/answer?constraint=ETAT<>'AV'" -GET_GUESS_URL = "https://srv2.akinator.com:9157/ws/list?constraint=ETAT<>'AV'" -CHOICE_URL = "https://srv2.akinator.com:9157/ws/choice?constraint=ETAT<>'AV'" -EXCLUSION_URL = "https://srv2.akinator.com:9157/ws/exclusion?constraint=ETAT<>'AV'" -GLB_URL = "https://pastebin.com/gTua3dg2" - - -def ans_to_strint(ans: str): - ans = ans.lower() - if ans == "yes" or ans == "y": - return "0" - elif ans == "no" or ans == "n": - return "1" - elif ans == "i" or ans == "idk" or ans == "i dont know" or ans == "i don't know": - return "2" - elif ans == "probably" or ans == "p": - return "3" - elif ans == "probably not" or ans == "pn": - return "4" - else: - return "-1" - - -game_over = False - -akinator_session = requests.get(NEW_SESSION_URL) -akinator_data = akinator_session.json() - - -try: - if akinator_data['completion'] == "OK": - success = True - else: - success = False -except: - success = False -if not success: - raise Exception('Error') - -print("Question " + - str(int(akinator_data['parameters']['step_information']['step']) + 1) + - ":\n" + - akinator_data['parameters']['step_information']['question'] + - '\n"yes", "no", "idk", "probably", "probably not"') -response = input("> ") - -response = ans_to_strint(response) - -params = { - "session": akinator_data['parameters']['identification']['session'], - "signature": akinator_data['parameters']['identification']['signature'], - "step": akinator_data['parameters']['step_information']['step'], - "answer": response -} - -session = akinator_data['parameters']['identification']['session'] -signature = akinator_data['parameters']['identification']['signature'] - -akinator_session = requests.get(ANSWER_URL, params=params) -akinator_data = akinator_session.json() - -can_guess = False -guessed_wrong_once = False - -while not game_over: - while not can_guess: - if int(float(akinator_data['parameters']['progression'])) > 90 and not guessed_wrong_once: - can_guess = True - break - - guessed_wrong_once = False - - print(akinator_data['parameters']['progression']) - print("Question " + - str(int(akinator_data['parameters']['step']) + 1) + - ":\n" + - akinator_data['parameters']['question'] + - '\n"yes", "no", "idk", "probably", "probably not"') - response = input("> ") - response = ans_to_strint(response) - - params = { - "session": session, - "signature": signature, - "step": akinator_data['parameters']['step'], - "answer": response - } - - akinator_session = requests.get(ANSWER_URL, params=params) - akinator_data = akinator_session.json() - - params = { - "session": session, - "signature": signature, - "step": akinator_data['parameters']['step'] - } - - guess_session = requests.get(GET_GUESS_URL, params=params) - guess_data = guess_session.json() - - name = guess_data['parameters']['elements'][0]['element']['name'] - desc = guess_data['parameters']['elements'][0]['element']['description'] - - print("Is this your character? [yes/no]\n" + - name + "\n" + - desc + "\n") - answer = input('> ') - - if answer.lower() == "yes" or answer.lower() == "y": - # TODO dump to choice_url - params = { - "session": session, - "signature": signature, - "step": akinator_data['parameters']['step'], - "element": guess_data['parameters']['elements'][0]['element']['id'] - } - r = requests.get(CHOICE_URL, params=params) - print("I guessed right! Thanks for playing with me.") - game_over = True - break - - elif answer.lower() == "no" or answer.lower() == "n": - # TODO dump to exclusion_url - params = { - "session": session, - "signature": signature, - "step": akinator_data['parameters']['step'], - "forward_answer": response - } - r = requests.get(EXCLUSION_URL, params=params) - can_guess = False - guessed_wrong_once = True - - else: - pass \ No newline at end of file diff --git a/useless/quizz.py b/useless/quizz.py deleted file mode 100755 index 5d9fdf81cf9713007a1093485fba292c671791af..0000000000000000000000000000000000000000 --- a/useless/quizz.py +++ /dev/null @@ -1,126 +0,0 @@ -#!/usr/bin/python3 -# encoding=utf-8 - -import requests -# import urllib -# import html - -from random import shuffle -from googletrans import Translator -translator = Translator() - - -# def escape(html): -# return html.encode('utf8').replace('"', "'") - - -class Quizz(object): - @staticmethod - def quizz(): - req = requests.get("https://opentdb.com/api.php?amount=1&difficulty=easy") - al = req.json() - pas_reponse = [] - rep = al['results'][0] - - question = rep['question'] - reponse = rep['correct_answer'] - choix = [reponse] - for f in rep['incorrect_answers']: - pas_reponse.append(f) - choix.append(f) - shuffle(choix) - return {'question': translator.translate(question, src='en', dest='fr').text, 'reponse': reponse, 'choix': choix, 'pas_reponse': pas_reponse} - - def __init__(self): - self._status = 0 # 0 : not started, 1 : started, 2 : reponse trouvée - self._quizz = Quizz.quizz() - self._essais = {} - self._points = {} - self._round = 0 - - def get_status(self): - if self._status == 2: - return 2, 'Vous avez déjà trouvé la réponse, demandez une nouvelle question.' - elif self._status == 1: - return 1, 'La partie est en cours.' - else: - return 0, 'la partie n\'a pas commencé.' - - def get_question(self): - return self._quizz['question'] - - def start(self): - assert self._status == 0 - if self._status == 0: - self._status = 1 - self._round = 1 - - def get_round(self): - return self._round - - def new(self): - self._quizz = Quizz.quizz() - self._essais = {} - self._status = 1 - self._round += 1 - return self.get_question() - - def answer(self, proposition, personne=''): - assert self._status == 1 - if proposition == '!indice': - return self.indice() - if proposition == '!scoreboard': - return self.scoreboard() - if '!scoreboard' in proposition: - return self.scoreboard(proposition.replace('!scoreboard ', '')) - if proposition == '!reset': - return self.reset() - if proposition == '!question': - return self.get_question() - if proposition == self._quizz['reponse']: - if personne in self._essais.keys(): - self._essais[personne] += 1 - else: - self._essais[personne] = 1 - if personne in self._points.keys(): - self._points[personne] += 1 - else: - self._points[personne] = 1 - self._status = 2 - return 'Bravo, {} tu as trouvé la réponse : {} en {} essais.'.format(personne, self._quizz['reponse'], self._essais[personne]) - - else: - if personne in self._essais.keys(): - self._essais[personne] += 1 - else: - self._essais[personne] = 1 - return '{} est une mauvaise réponse {}'.format(proposition, personne) - - def scoreboard(self, personne=None): - if personne is not None and personne in self._points.keys(): - return self._points['personne'] - return str(self._points) - - def indice(self): - return 'Choix possibles : ' + ", ".join(self._quizz['choix']) - - def reset(self): - self._status = 0 # 0 : not started, 1 : started, 2 : reponse trouvée - self._quizz = Quizz.quizz() - self._essais = {} - self._points = {} - self._round = 0 - - -if __name__ == "__main__": - q = Quizz() - print(q.get_question()) - q.start() - while q.get_status()[0] != 0: - while q.get_status()[0] == 1: - #personne = input('joueur>') - proposition = input('réponse>') - print(q.answer(proposition)) - print(q.get_status()) - q.new() - print(q.get_question())