From b33209f7dfc7a66445b1fb4504ab43931da27baa Mon Sep 17 00:00:00 2001 From: Ross Stewart Date: Mon, 8 Sep 2025 14:52:50 +0000 Subject: [PATCH] Documentation update --- docs/genindex.html | 2 +- docs/index.html | 30 +++++++++++++++++++++--------- docs/objects.inv | Bin 1156 -> 1156 bytes docs/searchindex.js | 2 +- 4 files changed, 23 insertions(+), 11 deletions(-) diff --git a/docs/genindex.html b/docs/genindex.html index 72b20ff..9e8eece 100644 --- a/docs/genindex.html +++ b/docs/genindex.html @@ -612,7 +612,7 @@ document.write(` diff --git a/docs/index.html b/docs/index.html index 6e54a58..58175bf 100644 --- a/docs/index.html +++ b/docs/index.html @@ -480,7 +480,7 @@ document.write(`
  • SystemExceptionHandler.handle()
  • -
  • queueWorkerThread()
  • +
  • queue_worker_thread()
  • sanitise_speech_output()
  • @@ -1196,8 +1196,8 @@ and setting it to DNS Only.

    Functions:

    - - + + @@ -2787,9 +2787,21 @@ during dispatch.

    -
    -app.queueWorkerThread(connection, play_queue, song_id_list)#
    -
    +
    +app.queue_worker_thread(connection: object, play_queue: object, song_id_list: list) None#
    +

    Media queue worker

    +

    This function allows media queues to be populated in the background enabling multithreading +and increasing skill response times.

    +
    +
    Parameters:
    +
      +
    • connection (object) – A SubSonic API connection object

    • +
    • play_queue (object) – A MediaQueue object

    • +
    • song_id_list (list) – A list containing Navidrome song IDs

    • +
    +
    +
    +
    @@ -3090,7 +3102,7 @@ request early to queue the next track while maintaining the playlist

    get_current_track() Track#

    Method to return current_track attribute

    Added to allow access to the current_track object while using BaseManager -for multi threading, as BaseManager does not allow access to class +for multi threading, as BaseManager does not allow access to class attributes / properties

    Returns:
    @@ -3181,7 +3193,7 @@ add it to the front of the play queue

    set_current_track_offset(offset: int) None#

    Method to set the offset of the current track in milliseconds

    Set the offset for the current track in milliseconds. This is used -when resuming a paused track to ensure the track isn’t played from +when resuming a paused track to ensure the track isn’t played from the beginning again.

    Parameters:
    @@ -3842,7 +3854,7 @@ is working

  • SystemExceptionHandler.handle()
  • -
  • queueWorkerThread()
  • +
  • queue_worker_thread()
  • sanitise_speech_output()
  • diff --git a/docs/objects.inv b/docs/objects.inv index 223821e167701addfc2839f9dbd4612b354b3cef..e0350e31362bb2809e12a0940ce9698b9024c25a 100644 GIT binary patch delta 1030 zcmV+h1o``f34{rdjDJ<%rdygs>CVg=QTUXNiUPtV6Tkg{FDbiXkAWhKNEOWY^8*Js zfTb*C`|%_y%b@t9puB>YvN0$2TVHnjdvSY%r7S-;K#n_GQSpNtPzOxlJLVMwJXezp&+``2|lFvrNND*D z7~1qbex{FtQ}V!YyJLHM`qb`}q1tRTy$(i9*8hkk2z!17fBazo0x(G_Z@eo`CcQH|K&JwiniWkS2-Uf5^(>=BEw~5QZ2vo z39MfnDIq@PQhm=fBKdxXsD_^wY;btbsTAKA3X!z$@fR?dvfvGIf~5GJ;<2c~%HzRK zhx$o2M>dlChwDg}XClStgbpO(#rRm?V{#13xE6>Qr+*7{82Ny$hB&KBNQBo#JP;kI zZ!WN*`uYq!FrQrqV~nqhL<&$&bputT_c@hf{6Zm)z6Y#Wo92CyP3Xb0PMn6{bWCgq z=1_w33xQZzNEvT=3ME;d2?W9lo~f`pa!XmJVoa|ngwgKuW>1mZ;35;@c$p7lACHu= zi2d(P{eK9bZ`nYu)do(HuQ$t3jN4^_F!;%5cj#ZCj-Zff6yVAu2g`{UTZS~|)a9~( zv;-gx64pp-HaLCcF1e_bIJtaOaH9kp250MCZ<#D{RUu6j07pKYY9%bMl1!Aq`*G0Y z4L)ANr%MLOA+}RBgp43hP*IFJ=jEOMy?I60rhmIpHEQU>YUBh6?d{>v&o4Gc(Y-a0 zCPbJ!0OGERFR}BW8$Lw0AvA<7aNaPaC*4M^ehJ|V~N+IHQ z0Fy&7@2twe+}Zl@j}x8JV`IeF2|(u&`yx;CowOJH7MH}cs;CGFqVvWU67 zRP6UG-;8OO1G!AQ3+e2ld6)X2nmwEbU4Jcd&Xdd9kvktE@{lb_%M(PqU|C51NCM~3&nirWvxSlZPqe)yj^=W3N8zS5+|P9N{bhKn787hH4~-r|cO?t0D* z_WihVH?W1qWP3Y)=+*A}%Uj><UfkYbDa%g{kmJr)RQ%uu)BzLtj(NpEc>%(( z*2RY@zYUfIbJTRdI}>0UQALY{348+%3bQXS1f-#Yhk0M2B7cmpDTLAAfypqZlbR9k zrc@a57q*-3c{2`#?? zLz}+G&-77nN*)+)cWiG@f3`bis5To-uY(bj^*MbZV_CZ-_4eaBsCzSl_Qe>zT_qOJGXRn7;A1l<3z$Z#2%RLie? z0_zt?N{COnRNpg=NWPyTs^M=7HaNWJREqBlg-F`>_%j$xS@4E9K~nrq@mSPgQ&bg_11K1Oj0N&s10)xuq;qF{W1(!f1DSv!}>yaFK~{yv&EOk4MT_ z#QyiDet(3|w`?HSY6GXp*PCT1#_h5|82se3yMKi`g8J1cz?BCMmJ=_vjA+cM%VYs* z2|yYotdZ7iaQetyYEdb1a@nZhMhP|y&DN{lGFjrPLYgQ5j(jlHN?2YcnJ9sGqk!~y ze~*{&$&x{Gi0o7iAtT5WR1~Amd3oo5Z(b0#>3?oijT*YJ8aDw#dwV$a^NWp9bZ-r$ z2@&QFz-!$QtCU;K=dN98YK$1}lF&TkRf9q2F}qf2?C;YU61fDk^|f(VVWHZLQi!-6 zz~m6jJF9Xyrt>NGv6rR0lWDkeNib2@Sr+_j%wDOZFT)mz!@(6^J7l_X%amQcs&vaq zuz!ZOd+l%K2uoT%4*z@-oI`(71aA5pG9~s;;Tr8*gkRsua`-laaMW)G)9SAUC~^W?I2bdOS^i-5C8M#T&)tsSDMt=>Er#_aIs_Xf{X6DTYMJ8UCz0| zz8^R42DZ?cY;VU8z1m%WdFz{AskNavidrome Alexa Skill Documentation"],"titleterms":{"The":0,"about":0,"alexa":0,"api":0,"appear":0,"ar":0,"asknavidrom":0,"below":0,"cloudflar":0,"code":0,"configur":0,"connect":0,"contain":0,"control":0,"creat":0,"debug":0,"deploi":0,"devic":0,"displai":0,"docker":0,"document":0,"error":0,"follow":0,"gener":0,"have":0,"i":0,"insid":0,"instal":0,"intent":0,"issu":0,"known":0,"log":0,"main":0,"media":0,"multipl":0,"music":0,"option":0,"pc":0,"plai":0,"queue":0,"requir":0,"run":0,"servic":0,"setup":0,"similar":0,"skill":0,"subson":0,"support":0,"tip":0,"track":0,"trick":0,"troubl":0,"troubleshoot":0,"try":0,"us":0,"web":0,"when":0,"work":0,"you":0,"your":0}}) \ No newline at end of file +Search.setIndex({"alltitles":{"About the AskNavidrome Skill":[[0,"about-the-asknavidrome-skill"]],"AskNavidrome Alexa Skill Documentation":[[0,null]],"AskNavidrome controller":[[0,"module-asknavidrome.controller"]],"AskNavidrome main":[[0,"module-app"]],"AskNavidrome media queue":[[0,"asknavidrome-media-queue"]],"AskNavidrome subsonic API":[[0,"asknavidrome-subsonic-api"]],"AskNavidrome track":[[0,"asknavidrome-track"]],"Code Documentation":[[0,"code-documentation"]],"Configuration":[[0,"configuration"]],"Creating the AskNavidrome Alexa Skill":[[0,"creating-the-asknavidrome-alexa-skill"]],"Debug Options":[[0,"debug-options"]],"Deploying the AskNavidrome Web Service":[[0,"deploying-the-asknavidrome-web-service"]],"General":[[0,"general"]],"Installation and Setup":[[0,"installation-and-setup"]],"Known Issues":[[0,"known-issues"]],"Playing Music on Multiple Devices":[[0,"playing-music-on-multiple-devices"]],"Requirements":[[0,"requirements"]],"Run inside a Docker container":[[0,"run-inside-a-docker-container"]],"Run on your PC":[[0,"run-on-your-pc"]],"Supported Intents":[[0,"supported-intents"]],"The following error is displayed when you try to run the Docker container":[[0,"the-following-error-is-displayed-when-you-try-to-run-the-docker-container"]],"The skill appears to work but no music is played. Errors similar to below appear in the web service log":[[0,"the-skill-appears-to-work-but-no-music-is-played-errors-similar-to-below-appear-in-the-web-service-log"]],"Tips & Tricks":[[0,"tips-tricks"]],"Troubleshooting":[[0,"troubleshooting"]],"You are having trouble connecting to the skill and use CloudFlare":[[0,"you-are-having-trouble-connecting-to-the-skill-and-use-cloudflare"]]},"docnames":["index"],"envversion":{"sphinx":65,"sphinx.domains.c":3,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":9,"sphinx.domains.index":1,"sphinx.domains.javascript":3,"sphinx.domains.math":2,"sphinx.domains.python":4,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.todo":2},"filenames":["index.rst"],"indexentries":{"add_screen_background() (in module asknavidrome.controller)":[[0,"asknavidrome.controller.add_screen_background",false]],"add_track() (asknavidrome.media_queue.mediaqueue method)":[[0,"asknavidrome.media_queue.MediaQueue.add_track",false]],"albums_by_artist() (asknavidrome.subsonic_api.subsonicconnection method)":[[0,"asknavidrome.subsonic_api.SubsonicConnection.albums_by_artist",false]],"app":[[0,"module-app",false]],"asknavidrome.controller":[[0,"module-asknavidrome.controller",false]],"buffer (asknavidrome.media_queue.mediaqueue attribute)":[[0,"asknavidrome.media_queue.MediaQueue.buffer",false]],"build_random_song_list() (asknavidrome.subsonic_api.subsonicconnection method)":[[0,"asknavidrome.subsonic_api.SubsonicConnection.build_random_song_list",false]],"build_song_list_from_albums() (asknavidrome.subsonic_api.subsonicconnection method)":[[0,"asknavidrome.subsonic_api.SubsonicConnection.build_song_list_from_albums",false]],"build_song_list_from_favourites() (asknavidrome.subsonic_api.subsonicconnection method)":[[0,"asknavidrome.subsonic_api.SubsonicConnection.build_song_list_from_favourites",false]],"build_song_list_from_genre() (asknavidrome.subsonic_api.subsonicconnection method)":[[0,"asknavidrome.subsonic_api.SubsonicConnection.build_song_list_from_genre",false]],"build_song_list_from_playlist() (asknavidrome.subsonic_api.subsonicconnection method)":[[0,"asknavidrome.subsonic_api.SubsonicConnection.build_song_list_from_playlist",false]],"can_handle() (app.checkaudiointerfacehandler method)":[[0,"app.CheckAudioInterfaceHandler.can_handle",false]],"can_handle() (app.generalexceptionhandler method)":[[0,"app.GeneralExceptionHandler.can_handle",false]],"can_handle() (app.helphandler method)":[[0,"app.HelpHandler.can_handle",false]],"can_handle() (app.launchrequesthandler method)":[[0,"app.LaunchRequestHandler.can_handle",false]],"can_handle() (app.navisonicplayalbumbyartist method)":[[0,"app.NaviSonicPlayAlbumByArtist.can_handle",false]],"can_handle() (app.navisonicplayfavouritesongs method)":[[0,"app.NaviSonicPlayFavouriteSongs.can_handle",false]],"can_handle() (app.navisonicplaymusicbyartist method)":[[0,"app.NaviSonicPlayMusicByArtist.can_handle",false]],"can_handle() (app.navisonicplaymusicbygenre method)":[[0,"app.NaviSonicPlayMusicByGenre.can_handle",false]],"can_handle() (app.navisonicplaymusicrandom method)":[[0,"app.NaviSonicPlayMusicRandom.can_handle",false]],"can_handle() (app.navisonicplayplaylist method)":[[0,"app.NaviSonicPlayPlaylist.can_handle",false]],"can_handle() (app.navisonicplaysongbyartist method)":[[0,"app.NaviSonicPlaySongByArtist.can_handle",false]],"can_handle() (app.navisonicrandomisequeue method)":[[0,"app.NaviSonicRandomiseQueue.can_handle",false]],"can_handle() (app.navisonicsongdetails method)":[[0,"app.NaviSonicSongDetails.can_handle",false]],"can_handle() (app.navisonicstarsong method)":[[0,"app.NaviSonicStarSong.can_handle",false]],"can_handle() (app.navisonicunstarsong method)":[[0,"app.NaviSonicUnstarSong.can_handle",false]],"can_handle() (app.nextplaybackhandler method)":[[0,"app.NextPlaybackHandler.can_handle",false]],"can_handle() (app.pauseplaybackhandler method)":[[0,"app.PausePlaybackHandler.can_handle",false]],"can_handle() (app.playbackfailedeventhandler method)":[[0,"app.PlaybackFailedEventHandler.can_handle",false]],"can_handle() (app.playbackfinishedhandler method)":[[0,"app.PlaybackFinishedHandler.can_handle",false]],"can_handle() (app.playbacknearlyfinishedhandler method)":[[0,"app.PlaybackNearlyFinishedHandler.can_handle",false]],"can_handle() (app.playbackstartedhandler method)":[[0,"app.PlaybackStartedHandler.can_handle",false]],"can_handle() (app.playbackstoppedhandler method)":[[0,"app.PlaybackStoppedHandler.can_handle",false]],"can_handle() (app.previousplaybackhandler method)":[[0,"app.PreviousPlaybackHandler.can_handle",false]],"can_handle() (app.resumeplaybackhandler method)":[[0,"app.ResumePlaybackHandler.can_handle",false]],"can_handle() (app.skilleventhandler method)":[[0,"app.SkillEventHandler.can_handle",false]],"can_handle() (app.systemexceptionhandler method)":[[0,"app.SystemExceptionHandler.can_handle",false]],"checkaudiointerfacehandler (class in app)":[[0,"app.CheckAudioInterfaceHandler",false]],"clear() (asknavidrome.media_queue.mediaqueue method)":[[0,"asknavidrome.media_queue.MediaQueue.clear",false]],"current_track (asknavidrome.media_queue.mediaqueue attribute)":[[0,"asknavidrome.media_queue.MediaQueue.current_track",false]],"enqueue_next_track() (asknavidrome.media_queue.mediaqueue method)":[[0,"asknavidrome.media_queue.MediaQueue.enqueue_next_track",false]],"enqueue_songs() (in module asknavidrome.controller)":[[0,"asknavidrome.controller.enqueue_songs",false]],"generalexceptionhandler (class in app)":[[0,"app.GeneralExceptionHandler",false]],"get_buffer() (asknavidrome.media_queue.mediaqueue method)":[[0,"asknavidrome.media_queue.MediaQueue.get_buffer",false]],"get_current_queue() (asknavidrome.media_queue.mediaqueue method)":[[0,"asknavidrome.media_queue.MediaQueue.get_current_queue",false]],"get_current_track() (asknavidrome.media_queue.mediaqueue method)":[[0,"asknavidrome.media_queue.MediaQueue.get_current_track",false]],"get_history() (asknavidrome.media_queue.mediaqueue method)":[[0,"asknavidrome.media_queue.MediaQueue.get_history",false]],"get_history_count() (asknavidrome.media_queue.mediaqueue method)":[[0,"asknavidrome.media_queue.MediaQueue.get_history_count",false]],"get_next_track() (asknavidrome.media_queue.mediaqueue method)":[[0,"asknavidrome.media_queue.MediaQueue.get_next_track",false]],"get_previous_track() (asknavidrome.media_queue.mediaqueue method)":[[0,"asknavidrome.media_queue.MediaQueue.get_previous_track",false]],"get_queue_count() (asknavidrome.media_queue.mediaqueue method)":[[0,"asknavidrome.media_queue.MediaQueue.get_queue_count",false]],"get_song_details() (asknavidrome.subsonic_api.subsonicconnection method)":[[0,"asknavidrome.subsonic_api.SubsonicConnection.get_song_details",false]],"get_song_uri() (asknavidrome.subsonic_api.subsonicconnection method)":[[0,"asknavidrome.subsonic_api.SubsonicConnection.get_song_uri",false]],"handle() (app.checkaudiointerfacehandler method)":[[0,"app.CheckAudioInterfaceHandler.handle",false]],"handle() (app.generalexceptionhandler method)":[[0,"app.GeneralExceptionHandler.handle",false]],"handle() (app.helphandler method)":[[0,"app.HelpHandler.handle",false]],"handle() (app.launchrequesthandler method)":[[0,"app.LaunchRequestHandler.handle",false]],"handle() (app.navisonicplayalbumbyartist method)":[[0,"app.NaviSonicPlayAlbumByArtist.handle",false]],"handle() (app.navisonicplayfavouritesongs method)":[[0,"app.NaviSonicPlayFavouriteSongs.handle",false]],"handle() (app.navisonicplaymusicbyartist method)":[[0,"app.NaviSonicPlayMusicByArtist.handle",false]],"handle() (app.navisonicplaymusicbygenre method)":[[0,"app.NaviSonicPlayMusicByGenre.handle",false]],"handle() (app.navisonicplaymusicrandom method)":[[0,"app.NaviSonicPlayMusicRandom.handle",false]],"handle() (app.navisonicplayplaylist method)":[[0,"app.NaviSonicPlayPlaylist.handle",false]],"handle() (app.navisonicplaysongbyartist method)":[[0,"app.NaviSonicPlaySongByArtist.handle",false]],"handle() (app.navisonicrandomisequeue method)":[[0,"app.NaviSonicRandomiseQueue.handle",false]],"handle() (app.navisonicsongdetails method)":[[0,"app.NaviSonicSongDetails.handle",false]],"handle() (app.navisonicstarsong method)":[[0,"app.NaviSonicStarSong.handle",false]],"handle() (app.navisonicunstarsong method)":[[0,"app.NaviSonicUnstarSong.handle",false]],"handle() (app.nextplaybackhandler method)":[[0,"app.NextPlaybackHandler.handle",false]],"handle() (app.pauseplaybackhandler method)":[[0,"app.PausePlaybackHandler.handle",false]],"handle() (app.playbackfailedeventhandler method)":[[0,"app.PlaybackFailedEventHandler.handle",false]],"handle() (app.playbackfinishedhandler method)":[[0,"app.PlaybackFinishedHandler.handle",false]],"handle() (app.playbacknearlyfinishedhandler method)":[[0,"app.PlaybackNearlyFinishedHandler.handle",false]],"handle() (app.playbackstartedhandler method)":[[0,"app.PlaybackStartedHandler.handle",false]],"handle() (app.playbackstoppedhandler method)":[[0,"app.PlaybackStoppedHandler.handle",false]],"handle() (app.previousplaybackhandler method)":[[0,"app.PreviousPlaybackHandler.handle",false]],"handle() (app.resumeplaybackhandler method)":[[0,"app.ResumePlaybackHandler.handle",false]],"handle() (app.skilleventhandler method)":[[0,"app.SkillEventHandler.handle",false]],"handle() (app.systemexceptionhandler method)":[[0,"app.SystemExceptionHandler.handle",false]],"helphandler (class in app)":[[0,"app.HelpHandler",false]],"history (asknavidrome.media_queue.mediaqueue attribute)":[[0,"asknavidrome.media_queue.MediaQueue.history",false]],"launchrequesthandler (class in app)":[[0,"app.LaunchRequestHandler",false]],"logger (asknavidrome.media_queue.mediaqueue attribute)":[[0,"asknavidrome.media_queue.MediaQueue.logger",false]],"loggingrequestinterceptor (class in app)":[[0,"app.LoggingRequestInterceptor",false]],"loggingresponseinterceptor (class in app)":[[0,"app.LoggingResponseInterceptor",false]],"mediaqueue (class in asknavidrome.media_queue)":[[0,"asknavidrome.media_queue.MediaQueue",false]],"module":[[0,"module-app",false],[0,"module-asknavidrome.controller",false]],"navisonicplayalbumbyartist (class in app)":[[0,"app.NaviSonicPlayAlbumByArtist",false]],"navisonicplayfavouritesongs (class in app)":[[0,"app.NaviSonicPlayFavouriteSongs",false]],"navisonicplaymusicbyartist (class in app)":[[0,"app.NaviSonicPlayMusicByArtist",false]],"navisonicplaymusicbygenre (class in app)":[[0,"app.NaviSonicPlayMusicByGenre",false]],"navisonicplaymusicrandom (class in app)":[[0,"app.NaviSonicPlayMusicRandom",false]],"navisonicplayplaylist (class in app)":[[0,"app.NaviSonicPlayPlaylist",false]],"navisonicplaysongbyartist (class in app)":[[0,"app.NaviSonicPlaySongByArtist",false]],"navisonicrandomisequeue (class in app)":[[0,"app.NaviSonicRandomiseQueue",false]],"navisonicsongdetails (class in app)":[[0,"app.NaviSonicSongDetails",false]],"navisonicstarsong (class in app)":[[0,"app.NaviSonicStarSong",false]],"navisonicunstarsong (class in app)":[[0,"app.NaviSonicUnstarSong",false]],"nextplaybackhandler (class in app)":[[0,"app.NextPlaybackHandler",false]],"pauseplaybackhandler (class in app)":[[0,"app.PausePlaybackHandler",false]],"ping() (asknavidrome.subsonic_api.subsonicconnection method)":[[0,"asknavidrome.subsonic_api.SubsonicConnection.ping",false]],"playbackfailedeventhandler (class in app)":[[0,"app.PlaybackFailedEventHandler",false]],"playbackfinishedhandler (class in app)":[[0,"app.PlaybackFinishedHandler",false]],"playbacknearlyfinishedhandler (class in app)":[[0,"app.PlaybackNearlyFinishedHandler",false]],"playbackstartedhandler (class in app)":[[0,"app.PlaybackStartedHandler",false]],"playbackstoppedhandler (class in app)":[[0,"app.PlaybackStoppedHandler",false]],"previousplaybackhandler (class in app)":[[0,"app.PreviousPlaybackHandler",false]],"process() (app.loggingrequestinterceptor method)":[[0,"app.LoggingRequestInterceptor.process",false]],"process() (app.loggingresponseinterceptor method)":[[0,"app.LoggingResponseInterceptor.process",false]],"queue (asknavidrome.media_queue.mediaqueue attribute)":[[0,"asknavidrome.media_queue.MediaQueue.queue",false]],"queue_worker_thread() (in module app)":[[0,"app.queue_worker_thread",false]],"resumeplaybackhandler (class in app)":[[0,"app.ResumePlaybackHandler",false]],"sanitise_speech_output() (in module app)":[[0,"app.sanitise_speech_output",false]],"scrobble() (asknavidrome.subsonic_api.subsonicconnection method)":[[0,"asknavidrome.subsonic_api.SubsonicConnection.scrobble",false]],"search_album() (asknavidrome.subsonic_api.subsonicconnection method)":[[0,"asknavidrome.subsonic_api.SubsonicConnection.search_album",false]],"search_artist() (asknavidrome.subsonic_api.subsonicconnection method)":[[0,"asknavidrome.subsonic_api.SubsonicConnection.search_artist",false]],"search_playlist() (asknavidrome.subsonic_api.subsonicconnection method)":[[0,"asknavidrome.subsonic_api.SubsonicConnection.search_playlist",false]],"search_song() (asknavidrome.subsonic_api.subsonicconnection method)":[[0,"asknavidrome.subsonic_api.SubsonicConnection.search_song",false]],"set_current_track_offset() (asknavidrome.media_queue.mediaqueue method)":[[0,"asknavidrome.media_queue.MediaQueue.set_current_track_offset",false]],"shuffle() (asknavidrome.media_queue.mediaqueue method)":[[0,"asknavidrome.media_queue.MediaQueue.shuffle",false]],"skilleventhandler (class in app)":[[0,"app.SkillEventHandler",false]],"star_entry() (asknavidrome.subsonic_api.subsonicconnection method)":[[0,"asknavidrome.subsonic_api.SubsonicConnection.star_entry",false]],"start_playback() (in module asknavidrome.controller)":[[0,"asknavidrome.controller.start_playback",false]],"stop() (in module asknavidrome.controller)":[[0,"asknavidrome.controller.stop",false]],"subsonicconnection (class in asknavidrome.subsonic_api)":[[0,"asknavidrome.subsonic_api.SubsonicConnection",false]],"sync() (asknavidrome.media_queue.mediaqueue method)":[[0,"asknavidrome.media_queue.MediaQueue.sync",false]],"systemexceptionhandler (class in app)":[[0,"app.SystemExceptionHandler",false]],"track (class in asknavidrome.track)":[[0,"asknavidrome.track.Track",false]],"unstar_entry() (asknavidrome.subsonic_api.subsonicconnection method)":[[0,"asknavidrome.subsonic_api.SubsonicConnection.unstar_entry",false]]},"objects":{"":[[0,0,0,"-","app"]],"app":[[0,1,1,"","CheckAudioInterfaceHandler"],[0,1,1,"","GeneralExceptionHandler"],[0,1,1,"","HelpHandler"],[0,1,1,"","LaunchRequestHandler"],[0,1,1,"","LoggingRequestInterceptor"],[0,1,1,"","LoggingResponseInterceptor"],[0,1,1,"","NaviSonicPlayAlbumByArtist"],[0,1,1,"","NaviSonicPlayFavouriteSongs"],[0,1,1,"","NaviSonicPlayMusicByArtist"],[0,1,1,"","NaviSonicPlayMusicByGenre"],[0,1,1,"","NaviSonicPlayMusicRandom"],[0,1,1,"","NaviSonicPlayPlaylist"],[0,1,1,"","NaviSonicPlaySongByArtist"],[0,1,1,"","NaviSonicRandomiseQueue"],[0,1,1,"","NaviSonicSongDetails"],[0,1,1,"","NaviSonicStarSong"],[0,1,1,"","NaviSonicUnstarSong"],[0,1,1,"","NextPlaybackHandler"],[0,1,1,"","PausePlaybackHandler"],[0,1,1,"","PlaybackFailedEventHandler"],[0,1,1,"","PlaybackFinishedHandler"],[0,1,1,"","PlaybackNearlyFinishedHandler"],[0,1,1,"","PlaybackStartedHandler"],[0,1,1,"","PlaybackStoppedHandler"],[0,1,1,"","PreviousPlaybackHandler"],[0,1,1,"","ResumePlaybackHandler"],[0,1,1,"","SkillEventHandler"],[0,1,1,"","SystemExceptionHandler"],[0,3,1,"","queue_worker_thread"],[0,3,1,"","sanitise_speech_output"]],"app.CheckAudioInterfaceHandler":[[0,2,1,"","can_handle"],[0,2,1,"","handle"]],"app.GeneralExceptionHandler":[[0,2,1,"","can_handle"],[0,2,1,"","handle"]],"app.HelpHandler":[[0,2,1,"","can_handle"],[0,2,1,"","handle"]],"app.LaunchRequestHandler":[[0,2,1,"","can_handle"],[0,2,1,"","handle"]],"app.LoggingRequestInterceptor":[[0,2,1,"","process"]],"app.LoggingResponseInterceptor":[[0,2,1,"","process"]],"app.NaviSonicPlayAlbumByArtist":[[0,2,1,"","can_handle"],[0,2,1,"","handle"]],"app.NaviSonicPlayFavouriteSongs":[[0,2,1,"","can_handle"],[0,2,1,"","handle"]],"app.NaviSonicPlayMusicByArtist":[[0,2,1,"","can_handle"],[0,2,1,"","handle"]],"app.NaviSonicPlayMusicByGenre":[[0,2,1,"","can_handle"],[0,2,1,"","handle"]],"app.NaviSonicPlayMusicRandom":[[0,2,1,"","can_handle"],[0,2,1,"","handle"]],"app.NaviSonicPlayPlaylist":[[0,2,1,"","can_handle"],[0,2,1,"","handle"]],"app.NaviSonicPlaySongByArtist":[[0,2,1,"","can_handle"],[0,2,1,"","handle"]],"app.NaviSonicRandomiseQueue":[[0,2,1,"","can_handle"],[0,2,1,"","handle"]],"app.NaviSonicSongDetails":[[0,2,1,"","can_handle"],[0,2,1,"","handle"]],"app.NaviSonicStarSong":[[0,2,1,"","can_handle"],[0,2,1,"","handle"]],"app.NaviSonicUnstarSong":[[0,2,1,"","can_handle"],[0,2,1,"","handle"]],"app.NextPlaybackHandler":[[0,2,1,"","can_handle"],[0,2,1,"","handle"]],"app.PausePlaybackHandler":[[0,2,1,"","can_handle"],[0,2,1,"","handle"]],"app.PlaybackFailedEventHandler":[[0,2,1,"","can_handle"],[0,2,1,"","handle"]],"app.PlaybackFinishedHandler":[[0,2,1,"","can_handle"],[0,2,1,"","handle"]],"app.PlaybackNearlyFinishedHandler":[[0,2,1,"","can_handle"],[0,2,1,"","handle"]],"app.PlaybackStartedHandler":[[0,2,1,"","can_handle"],[0,2,1,"","handle"]],"app.PlaybackStoppedHandler":[[0,2,1,"","can_handle"],[0,2,1,"","handle"]],"app.PreviousPlaybackHandler":[[0,2,1,"","can_handle"],[0,2,1,"","handle"]],"app.ResumePlaybackHandler":[[0,2,1,"","can_handle"],[0,2,1,"","handle"]],"app.SkillEventHandler":[[0,2,1,"","can_handle"],[0,2,1,"","handle"]],"app.SystemExceptionHandler":[[0,2,1,"","can_handle"],[0,2,1,"","handle"]],"asknavidrome":[[0,0,0,"-","controller"]],"asknavidrome.controller":[[0,3,1,"","add_screen_background"],[0,3,1,"","enqueue_songs"],[0,3,1,"","start_playback"],[0,3,1,"","stop"]],"asknavidrome.media_queue":[[0,1,1,"","MediaQueue"]],"asknavidrome.media_queue.MediaQueue":[[0,2,1,"","add_track"],[0,4,1,"","buffer"],[0,2,1,"","clear"],[0,4,1,"","current_track"],[0,2,1,"","enqueue_next_track"],[0,2,1,"","get_buffer"],[0,2,1,"","get_current_queue"],[0,2,1,"","get_current_track"],[0,2,1,"","get_history"],[0,2,1,"","get_history_count"],[0,2,1,"","get_next_track"],[0,2,1,"","get_previous_track"],[0,2,1,"","get_queue_count"],[0,4,1,"","history"],[0,4,1,"","logger"],[0,4,1,"","queue"],[0,2,1,"","set_current_track_offset"],[0,2,1,"","shuffle"],[0,2,1,"","sync"]],"asknavidrome.subsonic_api":[[0,1,1,"","SubsonicConnection"]],"asknavidrome.subsonic_api.SubsonicConnection":[[0,2,1,"","albums_by_artist"],[0,2,1,"","build_random_song_list"],[0,2,1,"","build_song_list_from_albums"],[0,2,1,"","build_song_list_from_favourites"],[0,2,1,"","build_song_list_from_genre"],[0,2,1,"","build_song_list_from_playlist"],[0,2,1,"","get_song_details"],[0,2,1,"","get_song_uri"],[0,2,1,"","ping"],[0,2,1,"","scrobble"],[0,2,1,"","search_album"],[0,2,1,"","search_artist"],[0,2,1,"","search_playlist"],[0,2,1,"","search_song"],[0,2,1,"","star_entry"],[0,2,1,"","unstar_entry"]],"asknavidrome.track":[[0,1,1,"","Track"]]},"objnames":{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","function","Python function"],"4":["py","attribute","Python attribute"]},"objtypes":{"0":"py:module","1":"py:class","2":"py:method","3":"py:function","4":"py:attribute"},"terms":{"":0,"0":0,"1":0,"10":0,"11":0,"13":0,"16":0,"17":0,"19":0,"2":0,"200":0,"2022":0,"3":0,"405":0,"44":0,"443":0,"45":0,"478":0,"479":0,"48":0,"480":0,"50":0,"5000":0,"599":0,"600":0,"62":0,"A":0,"As":0,"For":0,"If":0,"In":0,"It":0,"No":0,"Not":0,"One":0,"Then":0,"There":0,"To":0,"abil":0,"abl":0,"accept":0,"access":0,"account":0,"accur":0,"action":0,"actual":0,"ad":0,"add":0,"add_screen_background":0,"add_track":0,"addit":0,"administr":0,"advert":0,"afraid":0,"after":0,"again":0,"against":0,"album":0,"album_id":0,"albums_by_artist":0,"all":0,"allow":0,"along":0,"alreadi":0,"also":0,"altern":0,"amazon":0,"amd64":0,"amzn1":0,"an":0,"android":0,"ani":0,"anyon":0,"anyth":0,"apach":0,"api_loc":0,"api_vers":0,"app":0,"append":0,"applic":0,"architectur":0,"arm":0,"articl":0,"artist":0,"artist_id":0,"ascii":0,"ask":0,"ask_sdk_model":0,"asknavison":0,"askson":0,"attribut":0,"audio":0,"audioitemmetadata":0,"audioplay":0,"authent":0,"author":0,"automat":0,"avail":0,"avoid":0,"awar":0,"back":0,"backend":0,"background":0,"backward":0,"base":0,"basemanag":0,"beatl":0,"becaus":0,"been":0,"befor":0,"began":0,"begin":0,"behind":0,"being":0,"best":0,"between":0,"bin":0,"bit":0,"bitrat":0,"block":0,"blue":0,"bob":0,"bool":0,"boolean":0,"box":0,"brows":0,"browser":0,"buffer":0,"build":0,"build_random_song_list":0,"build_song_list_from_album":0,"build_song_list_from_favourit":0,"build_song_list_from_genr":0,"build_song_list_from_playlist":0,"builder":0,"button":0,"caddi":0,"call":0,"can":0,"can_handl":0,"cancel":0,"cannot":0,"car":0,"card":0,"card_data":0,"catalog":0,"caus":0,"cd":0,"certain":0,"certif":0,"chanc":0,"chang":0,"charact":0,"check":0,"checkaudiointerfacehandl":0,"choos":0,"class":0,"clear":0,"click":0,"clone":0,"close":0,"cn":0,"collect":0,"com":0,"command":0,"common":0,"commun":0,"compat":0,"complet":0,"compliant":0,"compromis":0,"confirm":0,"consist":0,"consol":0,"content":0,"continu":0,"contribut":0,"convert":0,"correct":0,"correctli":0,"cost":0,"could":0,"count":0,"credenti":0,"current":0,"current_track":0,"custom":0,"data":0,"default":0,"defeat":0,"delet":0,"depend":0,"dequ":0,"descript":0,"detail":0,"develop":0,"dict":0,"dictat":0,"dictionari":0,"differ":0,"difficult":0,"difficulti":0,"digit":0,"direct":0,"directli":0,"directori":0,"disabl":0,"disconnect":0,"dispatch":0,"distribut":0,"dn":0,"do":0,"doc":0,"dockerfil":0,"doe":0,"domain":0,"done":0,"down":0,"due":0,"durat":0,"dure":0,"dwebb8272":0,"dynam":0,"e":0,"each":0,"earli":0,"easiest":0,"echo":0,"editor":0,"effect":0,"embed":0,"enabl":0,"encrypt":0,"end":0,"endpoint":0,"enqueu":0,"enqueue_next_track":0,"enqueue_song":0,"ensur":0,"enter":0,"entiti":0,"entri":0,"env":0,"envelop":0,"environ":0,"equal":0,"etc":0,"event":0,"everyth":0,"exampl":0,"except":0,"exceptionencount":0,"exec":0,"execut":0,"exist":0,"experi":0,"explain":0,"extrem":0,"face":0,"fail":0,"fals":0,"favourit":0,"featur":0,"feel":0,"few":0,"field":0,"file":0,"find":0,"finish":0,"firewal":0,"first":0,"flask":0,"flavour":0,"folder":0,"forc":0,"format":0,"forward":0,"found":0,"free":0,"from":0,"front":0,"frustrat":0,"full":0,"function":0,"generalexceptionhandl":0,"genr":0,"get":0,"get_buff":0,"get_current_queu":0,"get_current_track":0,"get_histori":0,"get_history_count":0,"get_next_track":0,"get_previous_track":0,"get_queue_count":0,"get_song_detail":0,"get_song_uri":0,"getgenr":0,"ghcr":0,"git":0,"github":0,"give":0,"given":0,"go":0,"good":0,"greater":0,"group":0,"ha":0,"had":0,"handl":0,"handler":0,"handler_input":0,"handlerinput":0,"happen":0,"hard":0,"haven":0,"help":0,"helphandl":0,"helpint":0,"here":0,"hidden":0,"higher":0,"histori":0,"hold":0,"host":0,"hour":0,"how":0,"howev":0,"html":0,"http":0,"id":0,"idea":0,"identifi":0,"imag":0,"immedi":0,"implement":0,"import":0,"includ":0,"increas":0,"individu":0,"info":0,"inform":0,"ingress":0,"inlin":0,"input":0,"inspir":0,"instanc":0,"instead":0,"instruct":0,"int":0,"interact":0,"intercept":0,"interceptor":0,"interfac":0,"internet":0,"interv":0,"invoc":0,"invok":0,"io":0,"isn":0,"jame25":0,"jazz":0,"json":0,"just":0,"kbp":0,"keep":0,"kit":0,"know":0,"kubernet":0,"languag":0,"last":0,"launchrequest":0,"launchrequesthandl":0,"least":0,"length":0,"let":0,"level":0,"licens":0,"like":0,"limit":0,"list":0,"listen":0,"littl":0,"live":0,"local":0,"locat":0,"logger":0,"loggingrequestinterceptor":0,"loggingresponseinterceptor":0,"login":0,"look":0,"lose":0,"made":0,"mai":0,"maintain":0,"make":0,"mani":0,"manual":0,"markup":0,"match":0,"me":0,"mean":0,"media_error_internal_device_error":0,"media_error_unknown":0,"media_queu":0,"mediaqueu":0,"meet":0,"messag":0,"method":0,"microphon":0,"might":0,"millisecond":0,"mind":0,"minimum":0,"minut":0,"mismatch":0,"miss":0,"mit":0,"mix":0,"mobil":0,"mode":0,"model":0,"more":0,"mp3":0,"much":0,"multi":0,"multithread":0,"musicbrainz":0,"must":0,"my":0,"name":0,"navi_api_path":0,"navi_api_v":0,"navi_debug":0,"navi_pass":0,"navi_port":0,"navi_skill_id":0,"navi_song_count":0,"navi_url":0,"navi_us":0,"navidrom":0,"navig":0,"navigatehomeint":0,"navison":0,"navisonicplayalbumbyartist":0,"navisonicplayfavouritesong":0,"navisonicplaymusicbyartist":0,"navisonicplaymusicbygenr":0,"navisonicplaymusicrandom":0,"navisonicplayplaylist":0,"navisonicplaysongbyartist":0,"navisonicrandomisequeu":0,"navisonicsongdetail":0,"navisonicstarsong":0,"navisonicunstarsong":0,"need":0,"new":0,"next":0,"nextint":0,"nextplaybackhandl":0,"nginx":0,"ngrok":0,"non":0,"none":0,"normal":0,"note":0,"noth":0,"nov":0,"now":0,"number":0,"object":0,"object_typ":0,"obviou":0,"offset":0,"onc":0,"onli":0,"open":0,"oper":0,"opt":0,"order":0,"org":0,"other":0,"out":0,"output":0,"overcom":0,"overwrit":0,"own":0,"p":0,"page":0,"pai":0,"paid":0,"paramet":0,"part":0,"pass":0,"passwd":0,"password":0,"past":0,"path":0,"paus":0,"pausecommandissu":0,"pauseplaybackhandl":0,"perform":0,"phrase":0,"pi":0,"picard":0,"pick":0,"ping":0,"pixi":0,"place":0,"platform":0,"play_queu":0,"playaudio":0,"playback":0,"playbackfail":0,"playbackfailedeventhandl":0,"playbackfailedhandl":0,"playbackfinish":0,"playbackfinishedhandl":0,"playbacknearlyfinish":0,"playbacknearlyfinishedhandl":0,"playbackstart":0,"playbackstartedhandl":0,"playbackstop":0,"playbackstoppedhandl":0,"playbehaviour":0,"player":0,"playlist":0,"playlist_nam":0,"pleas":0,"plug":0,"pod":0,"popul":0,"port":0,"portal":0,"posit":0,"possibl":0,"post":0,"power":0,"practic":0,"prebuilt":0,"present":0,"prevent":0,"previou":0,"previous_id":0,"previousint":0,"previousplaybackhandl":0,"primari":0,"print":0,"problem":0,"process":0,"project":0,"properli":0,"properti":0,"provid":0,"provis":0,"proxi":0,"publicli":0,"publish":0,"purpos":0,"py":0,"python":0,"python3":0,"queu":0,"queue_worker_thread":0,"quit":0,"rais":0,"random":0,"randomis":0,"raspberri":0,"rate":0,"raul824":0,"read":0,"real":0,"reason":0,"reboot":0,"receiv":0,"recent":0,"recommend":0,"record":0,"refer":0,"region":0,"regular":0,"releas":0,"rememb":0,"remov":0,"renew":0,"replac":0,"replace_al":0,"report":0,"repositori":0,"repres":0,"request":0,"reserv":0,"reset":0,"resolv":0,"resourc":0,"respond":0,"respons":0,"rest":0,"restart":0,"restrict":0,"result":0,"resum":0,"resumeplaybackhandl":0,"retriev":0,"return":0,"revers":0,"review":0,"rock":0,"root":0,"rosskouk":0,"rule":0,"rusty77":0,"sai":0,"same":0,"sanitis":0,"sanitise_speech_output":0,"save":0,"scm":0,"scratch":0,"screen":0,"screenshot":0,"scrobbl":0,"scroll":0,"sdk":0,"search":0,"search_album":0,"search_artist":0,"search_playlist":0,"search_song":0,"second":0,"section":0,"see":0,"seem":0,"select":0,"self":0,"send":0,"sent":0,"serv":0,"server":0,"server_url":0,"session":0,"set":0,"set_current_track_offset":0,"sever":0,"should":0,"show":0,"shuffl":0,"side":0,"sign":0,"similarli":0,"simpl":0,"simul":0,"simultan":0,"singl":0,"skilldis":0,"skillen":0,"skilleventhandl":0,"skip":0,"slot":0,"so":0,"softwar":0,"some":0,"someth":0,"song":0,"song_count":0,"song_id_list":0,"specif":0,"specifi":0,"speech":0,"speech_str":0,"spoken":0,"spotifi":0,"ssl":0,"ssml":0,"ssword":0,"standard":0,"star":0,"star_entri":0,"start":0,"start_playback":0,"step":0,"still":0,"stop":0,"store":0,"str":0,"stream":0,"string":0,"sub":0,"subscript":0,"subsonic_api":0,"subsonicconnect":0,"success":0,"sup3rstrongp":0,"sure":0,"sync":0,"synchronis":0,"synthesi":0,"system":0,"systemexceptionhandl":0,"t":0,"tag":0,"take":0,"task":0,"tell":0,"templat":0,"term":0,"test":0,"text":0,"than":0,"thank":0,"thei":0,"them":0,"thi":0,"thing":0,"those":0,"though":0,"thought":0,"thread":0,"three":0,"through":0,"thrown":0,"thu":0,"tick":0,"time":0,"timestamp":0,"titl":0,"tl":0,"too":0,"tool":0,"track_detail":0,"track_id":0,"track_no":0,"transcod":0,"translat":0,"true":0,"trust":0,"tutori":0,"two":0,"type":0,"u":0,"ui":0,"unabl":0,"uncov":0,"under":0,"understand":0,"unfavourit":0,"union":0,"unix":0,"unless":0,"unstar":0,"unstar_entri":0,"unsupport":0,"until":0,"up":0,"updat":0,"upload":0,"uri":0,"url":0,"urllib":0,"user":0,"usernam":0,"valid":0,"valu":0,"variabl":0,"veri":0,"verifi":0,"version":0,"via":0,"viabl":0,"view":0,"viewabl":0,"voic":0,"wa":0,"waf":0,"wai":0,"wait":0,"want":0,"warn":0,"warranti":0,"websit":0,"well":0,"were":0,"werkzeug":0,"what":0,"where":0,"whether":0,"which":0,"whichev":0,"while":0,"why":0,"wildcard":0,"wish":0,"without":0,"word":0,"worker":0,"would":0,"written":0,"wrong":0,"x509":0,"xxxx":0,"xxxxxxxx":0,"xxxxxxxxxxxx":0,"year":0},"titles":["AskNavidrome Alexa Skill Documentation"],"titleterms":{"The":0,"about":0,"alexa":0,"api":0,"appear":0,"ar":0,"asknavidrom":0,"below":0,"cloudflar":0,"code":0,"configur":0,"connect":0,"contain":0,"control":0,"creat":0,"debug":0,"deploi":0,"devic":0,"displai":0,"docker":0,"document":0,"error":0,"follow":0,"gener":0,"have":0,"i":0,"insid":0,"instal":0,"intent":0,"issu":0,"known":0,"log":0,"main":0,"media":0,"multipl":0,"music":0,"option":0,"pc":0,"plai":0,"queue":0,"requir":0,"run":0,"servic":0,"setup":0,"similar":0,"skill":0,"subson":0,"support":0,"tip":0,"track":0,"trick":0,"troubl":0,"troubleshoot":0,"try":0,"us":0,"web":0,"when":0,"work":0,"you":0,"your":0}}) \ No newline at end of file

    queueWorkerThread(connection, play_queue, ...)

    queue_worker_thread(connection, play_queue, ...)

    Media queue worker

    sanitise_speech_output(speech_string)

    Sanitise speech output inline with the SSML standard