Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor and some additions #15

Merged
merged 6 commits into from
Jan 18, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
117 changes: 75 additions & 42 deletions __init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,78 +3,111 @@
from mycroft.util import normalize
from mycroft.util.parse import extract_number

MIN_VOLUME = 0
MAX_VOLUME = 100


def amount_validator(response):
amount = extract_number(normalize(response))
if amount:
return MIN_VOLUME <= amount <= MAX_VOLUME
return None


class VolumeSkill(MycroftSkill):
def _query_volume(self, message):
response = self.bus.wait_for_response(message.forward("mycroft.volume.get"))
if response:
return int(response.data["percent"] * 100)
else:
self.speak_dialog("error.get.volume")
raise TimeoutError("Failed to get volume")

# intents
@intent_handler(IntentBuilder("change_volume").require('change_volume'))
@intent_handler(IntentBuilder("change_volume").require("change").require("volume"))
def handle_change_volume_intent(self, message):
utterance = message.data['utterance']
volume_change = extract_number(normalize(utterance))
self.bus.emit(message.forward("mycroft.volume.set",
{"percent": volume_change / 100}))
volume_change = extract_number(normalize(message.data["utterance"]))
if not volume_change:
response = self.get_response(
"volume.change.amount", validator=amount_validator
)
volume_change = extract_number(normalize(response))
if volume_change >= 100:
self.speak_dialog('max.volume')
self.speak_dialog("volume.max")
else:
self.speak_dialog('set.volume.percent',
data={'level': volume_change})
self.speak_dialog("volume.set.percent", data={"level": int(volume_change)})
self.bus.emit(
message.forward("mycroft.volume.set", {"percent": volume_change / 100})
)

@intent_handler(IntentBuilder("less_volume").require('less_volume'))
@intent_handler(
IntentBuilder("less_volume").require("quieter").optionally("volume")
)
def handle_less_volume_intent(self, message):
utterance = message.data['utterance']
volume_change = extract_number(normalize(utterance))
self.bus.emit(message.forward("mycroft.volume.decrease",
{"percent": volume_change / 100}))
volume = self._query_volume(message)
volume_change = extract_number(normalize(message.data["utterance"])) or 10
self.bus.emit(
message.forward("mycroft.volume.decrease", {"percent": volume_change / 100})
)
self.speak_dialog(
"volume.set.percent",
data={"level": max(MIN_VOLUME, int(volume - volume_change))},
)

@intent_handler(IntentBuilder("increase_volume").require('increase_volume'))
@intent_handler(
IntentBuilder("increase_volume").require("louder").optionally("volume")
)
def handle_increase_volume_intent(self, message):
utterance = message.data['utterance']
volume_change = extract_number(normalize(utterance))
self.bus.emit(message.forward("mycroft.volume.increase",
{"percent": volume_change / 100}))
volume = self._query_volume(message)
if not (volume == MAX_VOLUME):
volume_change = extract_number(normalize(message.data["utterance"])) or 10
self.bus.emit(
message.forward(
"mycroft.volume.increase", {"percent": volume_change / 100}
)
)
self.speak_dialog(
"volume.set.percent",
data={"level": min(MAX_VOLUME, int(volume + volume_change))},
)
else:
self.speak_dialog("volume.max.already")

@intent_file_handler('max_volume.intent')
@intent_file_handler("volume.max.intent")
def handle_max_volume_intent(self, message):
self.bus.emit(message.forward("mycroft.volume.set",
{"percent": 1.0}))
self.speak_dialog('max.volume')
self.bus.emit(message.forward("mycroft.volume.set", {"percent": 1.0}))
self.speak_dialog("volume.max")

@intent_file_handler('high_volume.intent')
@intent_file_handler("volume.high.intent")
def handle_high_volume_intent(self, message):
self.bus.emit(message.forward("mycroft.volume.set",
{"percent": 0.9}))
self.bus.emit(message.forward("mycroft.volume.set", {"percent": 0.9}))

@intent_file_handler('default_volume.intent')
@intent_file_handler("volume.default.intent")
def handle_default_volume_intent(self, message):
self.bus.emit(message.forward("mycroft.volume.set",
{"percent": 0.7}))
self.bus.emit(message.forward("mycroft.volume.set", {"percent": 0.7}))

@intent_file_handler('low_volume.intent')
@intent_file_handler("volume.low.intent")
def handle_low_volume_intent(self, message):
self.bus.emit(message.forward("mycroft.volume.set",
{"percent": 0.3}))
self.bus.emit(message.forward("mycroft.volume.set", {"percent": 0.3}))

@intent_file_handler('mute.intent')
@intent_file_handler("volume.mute.intent")
def handle_mute_intent(self, message):
self.bus.emit(message.forward("mycroft.volume.mute"))

@intent_file_handler('unmute.intent')
@intent_file_handler("volume.unmute.intent")
def handle_unmute_intent(self, message):
self.bus.emit(message.forward("mycroft.volume.unmute"))

@intent_file_handler('toggle_mute.intent')
@intent_file_handler("volume.mute.toggle.intent")
def handle_toggle_unmute_intent(self, message):
self.bus.emit(message.forward("mycroft.volume.mute.toggle"))

@intent_handler(IntentBuilder("current_volume").require('current_volume'))
@intent_handler(
IntentBuilder("current_volume").require("volume").optionally("current")
)
def handle_query_volume(self, message):
response = self.bus.wait_for_response(message.forward("volume.get"))
if response:
volume = response.data["percent"] * 100
self.speak_dialog('volume.is', data={'volume': volume})
else:
# TODO dedicated error dialog
raise TimeoutError("Failed to get volume")
volume = self._query_volume(message)
self.speak_dialog("volume.current", data={"volume": volume})


def create_skill():
Expand Down
9 changes: 9 additions & 0 deletions locale/de-de/change.voc
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
ändern
änder
ändere
verändern
verändere
stelle
einstellen
verstellen
verstelle
5 changes: 0 additions & 5 deletions locale/de-de/change_volume.voc

This file was deleted.

5 changes: 5 additions & 0 deletions locale/de-de/current.voc
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
aktuelle
aktuell
momentane
momentan
gerade
2 changes: 0 additions & 2 deletions locale/de-de/current_volume.voc

This file was deleted.

1 change: 1 addition & 0 deletions locale/de-de/error.get.volume.dialog
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Es scheint ein Problem zu geben. Ich konnte die aktuelle Laustärke nicht abfragen.
6 changes: 0 additions & 6 deletions locale/de-de/increase_volume.voc

This file was deleted.

4 changes: 0 additions & 4 deletions locale/de-de/less_volume.voc

This file was deleted.

5 changes: 5 additions & 0 deletions locale/de-de/louder.voc
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
lauter
rauf
höher
höhere
größere
5 changes: 5 additions & 0 deletions locale/de-de/quieter.voc
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
leiser
runter
herunter
weniger
niedriger
1 change: 1 addition & 0 deletions locale/de-de/volume.change.amount.dialog
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Auf welche Lautstärke? 0 bis 100 ist möglich.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
1 change: 1 addition & 0 deletions locale/de-de/volume.max.already.dialog
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Die Lautstärke ist schon auf maximum
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
2 changes: 2 additions & 0 deletions locale/de-de/volume.voc
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
lautsprecher
lautstärke
3 changes: 3 additions & 0 deletions locale/en-us/change.voc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
set
make
change
6 changes: 0 additions & 6 deletions locale/en-us/change_volume.voc

This file was deleted.

1 change: 1 addition & 0 deletions locale/en-us/current.voc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
current
1 change: 0 additions & 1 deletion locale/en-us/current_volume.voc

This file was deleted.

1 change: 1 addition & 0 deletions locale/en-us/error.get.volume.dialog
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
There seems to be a problem. I could not query the current volume.
6 changes: 0 additions & 6 deletions locale/en-us/increase_volume.voc

This file was deleted.

7 changes: 0 additions & 7 deletions locale/en-us/less_volume.voc

This file was deleted.

7 changes: 7 additions & 0 deletions locale/en-us/louder.voc
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
louder
noisier
noisily
increase
higher
more
up
6 changes: 6 additions & 0 deletions locale/en-us/quieter.voc
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
less
decrease
down
lower
quieter
reduce
1 change: 1 addition & 0 deletions locale/en-us/volume.change.amount.dialog
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
To what volume? 0 to 100 is possible.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
1 change: 1 addition & 0 deletions locale/en-us/volume.max.already.dialog
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Volume already set to maximum level
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
1 change: 1 addition & 0 deletions locale/en-us/volume.voc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
volume
5 changes: 5 additions & 0 deletions locale/es-es/change.voc
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# auto translated from en-us to es-es
establecer
cambio
cambiar
hacer
6 changes: 0 additions & 6 deletions locale/es-es/change_volume.voc

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
# auto translated from en-us to es-es
volumen actual
actual
1 change: 1 addition & 0 deletions locale/es-es/error.get.volume.dialog
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Parece haber un problema. No pude consultar el volumen actual.
5 changes: 0 additions & 5 deletions locale/es-es/increase_volume.voc

This file was deleted.

7 changes: 0 additions & 7 deletions locale/es-es/less_volume.voc

This file was deleted.

7 changes: 7 additions & 0 deletions locale/es-es/louder.voc
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# auto translated from en-us to es-es
ruidoso
ruidosa
fuerte
superior
más
subir
10 changes: 10 additions & 0 deletions locale/es-es/quieter.voc
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# auto translated from en-us to es-es
inferior
bajar
disminución
menos
reducir
tranquilo
tranquila
silenciosa
silencioso
4 changes: 0 additions & 4 deletions locale/es-es/set.volume.percent.dialog

This file was deleted.

1 change: 1 addition & 0 deletions locale/es-es/volume.change.amount.dialog
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
A qué volumen? 0 a 100 es posible.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
1 change: 1 addition & 0 deletions locale/es-es/volume.max.already.dialog
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Volumen ya establecido en el nivel máximo
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
4 changes: 4 additions & 0 deletions locale/es-es/volume.set.percent.dialog
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# auto translated from en-us to es-es
Volumen fijado a {level}%
Volumen cambiado a {level}%
Volumen actualizado a {level}%
File renamed without changes.
3 changes: 3 additions & 0 deletions locale/es-es/volume.voc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# auto translated from en-us to es-es
volumen
volume
4 changes: 4 additions & 0 deletions locale/fr-fr/change.voc
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# auto translated from en-us to fr-fr
définir
modifier
faire
5 changes: 0 additions & 5 deletions locale/fr-fr/change_volume.voc

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
# auto translated from en-us to fr-fr
volume actuel
actuel
1 change: 1 addition & 0 deletions locale/fr-fr/error.get.volume.dialog
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Il semble y avoir un problème. Je n'ai pas pu interroger le volume actuel.
6 changes: 0 additions & 6 deletions locale/fr-fr/increase_volume.voc

This file was deleted.

8 changes: 0 additions & 8 deletions locale/fr-fr/less_volume.voc

This file was deleted.

9 changes: 9 additions & 0 deletions locale/fr-fr/louder.voc
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# auto translated from en-us to fr-fr
Augmentation
plus
Montez
supérieur
bruyant
bruyante
bruyants
fort
9 changes: 9 additions & 0 deletions locale/fr-fr/quieter.voc
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# auto translated from en-us to fr-fr
réduire
inférieur
moins
baisser
diminution
baisse
silencieux
silenciese
Loading