Skip to content

Commit

Permalink
Refactor and some additions (#15)
Browse files Browse the repository at this point in the history
* refactor intents

* additions

* fixes

* get rid of hardcoded min/max vol

* additional translations

* dutch translation
  • Loading branch information
emphasize authored Jan 18, 2023
1 parent 0feb9cf commit a191fdb
Show file tree
Hide file tree
Showing 151 changed files with 331 additions and 178 deletions.
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.
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.
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

0 comments on commit a191fdb

Please sign in to comment.