diff --git a/kodi.controller.sh b/kodi.controller.sh index 9472e7b..757e8b0 100755 --- a/kodi.controller.sh +++ b/kodi.controller.sh @@ -127,12 +127,9 @@ define_vars() { # {{{ ## }}} ## Translate user command to Kodi action {{{ case "${USER_MULTIMEDIA_COMMAND}" in - toggle|play ) ## Toggle current play + toggle|play|pause ) ## Toggle current play KODI_ACTION="PlayerControl(play)" ;; - pause ) ## Pause current media if anything is playing - KODI_ACTION="PlayerControl(pause)" - ;; stop ) ## Stop current play KODI_ACTION="PlayerControl(stop)" ;; @@ -185,7 +182,7 @@ procs running (with the pattern: ${RED}${local_proc_pattern}${COLOR_DEBUG}) on t get_current_media_type() { # {{{ debug_message "get_current_media_type − \ -Run a request to ${KODI_HOST}:${KODI_PORT} API :" +Run a request to ${KODI_HOST}:${KODI_PORT} API." KODI_CURRENT_MEDIA_TYPE=$(curl -s -X POST http://"${KODI_HOST}:${KODI_PORT}"/jsonrpc -H 'Content-Type: application/json' --data '{"jsonrpc":"2.0","method":"Player.GetActivePlayers","id":0}' | sed -n 's/.*"type":"\(.*\)".*/\1/p') } @@ -219,6 +216,35 @@ The current media is playing (speed: ${RED}${KODI_CURRENT_MEDIA_TYPE}${COLOR_DEB return "${return_is_audio_paused}" } # }}} +is_video_paused() { # {{{ + + ## Media is playing by default + return_is_video_paused="1" + + debug_message "is_video_paused − \ +Run a request to ${KODI_HOST}:${KODI_PORT} API to get status of video media." + + KODI_CURRENT_VIDEO_SPEED=$(curl -s -X POST http://"${KODI_HOST}:${KODI_PORT}"/jsonrpc -H 'Content-Type: application/json' --data '{"jsonrpc": "2.0", "method": "Player.GetProperties", "params": { "playerid": 1, "properties": [ "speed" ] }, "id": "VideoGetItem" }' | sed -n 's/.*"speed":\(.\).*/\1/p') + + case "${KODI_CURRENT_VIDEO_SPEED}" in + 0 ) ## Media is paused + debug_message "is_video_paused − \ +The current video is paused (speed: ${RED}${KODI_CURRENT_MEDIA_TYPE}${COLOR_DEBUG})." + return_is_video_paused="0" + ;; + 1 ) ## Media is playing + debug_message "is_video_paused − \ +The current video is playing (speed: ${RED}${KODI_CURRENT_MEDIA_TYPE}${COLOR_DEBUG})." + return_is_video_paused="1" + ;; + * ) ## Error getting current media speed + error_message "Error with media speed (${KODI_CURRENT_VIDEO_SPEED})." 1 + ;; + esac + + return "${return_is_video_paused}" +} +# }}} main() { # {{{ @@ -245,7 +271,9 @@ main() { # {{{ && exit 0 ;; video ) ## Manage video media - debug_message "${RED}video${COLOR_DEBUG} type for current media is not yet managed." + is_video_paused \ + && debug_message "${RED}video${COLOR_DEBUG} media is already paused, no more action is required." \ + && exit 0 ;; * ) ## Unknown media type or no media at all debug_message "Unknown media type ->${RED}${KODI_CURRENT_MEDIA_TYPE}${COLOR_DEBUG}<- or no media is playing (if empty), exit."