can you stop him from telling by stop command or button on mark_1 ?
can you continue the storry by saying “hey mycroft - continue story”?
Where feedback on Fairytalez skill should be directed a
Please give feedback here or through Issues on GitHub, or via Mycroft Chat.
Interesting in this skill is
Use of BeautifulSoup for webscraping
soup = BeautifulSoup(requests.get(url).text,"html.parser")
lines = [a.text.strip() for a in soup.find(id="main").find_all("p")[1:]]
lines = [l for l in lines if not l.startswith("{") and not l.endswith("}")]
return lines
use og match_one from mycroft.util.parse to get best match from users spoken answer against the story index.
index = self.get_index("https://fairytalez.com/fairy-tales/")
result = match_one(response, list(index.keys()))
The skill seems to install correctly, and also will tell a fairy tale. The problem that I see, in my first 5 minutes of use, is the search. I think that it should take a title or subject as a variable when asking to tell a fairy tale. Ex. “hey Mycroft tell me the fairy tale Aladdin” At this point, it does not understand when you ask that. It DOES however understand when I ask it to tell a fairy tale. This is a good start, and I think it would be a great addition. Thank you for your work.
Just installed this version, and indeed it lets me specify a fairy tale. Next issue, if it cannot find the correct one, ex “read me the fairy tale the three bears”, it correctly asks if the closest one found is right, BUT, it will not take no as an answer. Also, you might let the skill accept the stop command. Currently, while the skill is telling the fairy tale, that’s ALL it does. It will not accept me to tell it to stop.
I see I didnt respect no for an asnwer. That were a mistake, and easyly fixed
Him not respecting the stop I dont understands. It is implemented, and he should stop. But you are right he dosnt.
My code says:
lines = self.get_story(url)
for line in lines[bookmark:]:
if not self.is_reading:
return
self.speak(line, wait=False)
self.settings['bookmark'] += 1
time.sleep(1)
and the stop is
def stop(self):
if self.is_reading is True:
self.is_reading = False
return True
As far as I understands that says that if variable is_reading is true he will go throu al lines in the story one by one and if it is false, he stops. And he checks after each line.
I have been dooing lots of work here and some rewrite to make the stop work better.
That includes splitting up the text in smaller bites and be sure that loop is only sending one sentense to the TTS at a time.
Also fixed problem with mycroft didnt take no for an answer
I just heard back from the makers of www.fairytalez.com who were happy about the skill. But as he didnt have acces to a mycroft, he couldnt test and try it.
So I will try to make a short video so he can have a look
Nice!! It kinda makes it worth it when the makers of something enjoy when their product is improved upon. I will try and do some more testing soon. I am hoping to have it for my granddaughter. I think it would be great. The only other issue, that has nothing to do with your skill, but maybe somebody will see, I would like my voice to read it a little bit slower. Is there a way to slow down the speech for a specific skill? I am using the Mycroft mimic2 online voice.
Huu - I am sorry - I hassnt been testing the beta fully, and maybe something went wrong. I were trying and testing lots of ways to fix the stop problem.
Ill look at it as soon as posible.
Regarding to speed of speech, there isnt anything I can do in the skill. Well I have Putin some sleeps between parts, but each line is not posible to slow down. That has to do with mimic2.
regarding to the stop - it is correct that all skill react to it, but only my skill does log - I did that to make sure and to locate if it got the stop. And it does, but there maybe is a problem in the messagequeue, that gives delays, and then the skill dosnt get the stop when it is issued.
It is beeing looked at by Åke-mycroft.
I would realy hope it would be usefull. My 8 yr daughter dosnt understand English, so I cant test it with her and use google translate for a fairy tale dont give usefull result
I have fixed the start issue - you can do
(Tell|Read (me|) a (good|) (story| fairy tale)
(Tell|Read) (me|) the story {tale}
So this should work again.
“Tell a good fariry tale”
“Read me the story Aladin and the wonderful lamp”
The stop isnt fixed yet, but as earlier written, it isnt the skill - I does handle the stop command.
“If you want your children to be intelligent, read them fairy tales. If you want them to be more intelligent, read them more fairy tales.”
Albert Einstein
The latest update of Mycroft-core do include fix for stop, so the skill now stops when soppused to.
There are some minor fixes to the skill aswell.
To get those updated to the market I need someone other than me saying the skill works
Please try the skill by
“hey mycroft install betaversion fairytalez”
and then when intalled
“hey mycroft tell me the story Aladin adn the wonderfull lamp”
and then
“hey mycroft stop”
I know its been a while since this thread has been active, but I just wanted to give an update. I’ve just recently built my first picroft and installed this skill. I cannot get it to work at all. I asked if fairytalez is installed, and Mycroft verifies it is. Any guidance?
I got it to work this morning by asking “Tell me a story.” When I asked for a fairytale, it did not work.
I like the skill. It told me The Three Billy Goats Gruff. However, it does not find stories very well. I found a title from the website and read it precisely. Mycroft even repeated it perfectly when it was looking it up. However, most times it returns with a different result. This is odd. Are results being sorted oddly?
A wise man once said… This is why i strongly advocate to expand the msm manager to voice out something like “Skill installed, ask “Tell me a story” or …” (pre MK2 if you ask me) and by extension adding to the development framework that every author has to add such feature seperately. It gets fiddly as the library grows.