From 7517066c91b3361cc301c73453766927ca69b37b Mon Sep 17 00:00:00 2001 From: Ross Stewart Date: Mon, 8 Sep 2025 12:15:45 +0000 Subject: [PATCH] Documentation update --- docs/_static/basic.css | 8 -- docs/_static/searchtools.js | 13 +-- docs/genindex.html | 22 +++-- docs/index.html | 171 +++++++++++++++++++++++++++++++----- docs/objects.inv | Bin 618 -> 658 bytes docs/searchindex.js | 2 +- 6 files changed, 173 insertions(+), 43 deletions(-) diff --git a/docs/_static/basic.css b/docs/_static/basic.css index 2a9e411..9ca7106 100644 --- a/docs/_static/basic.css +++ b/docs/_static/basic.css @@ -741,14 +741,6 @@ abbr, acronym { cursor: help; } -.translated { - background-color: rgba(207, 255, 207, 0.2) -} - -.untranslated { - background-color: rgba(255, 207, 207, 0.2) -} - /* -- code displays --------------------------------------------------------- */ pre { diff --git a/docs/_static/searchtools.js b/docs/_static/searchtools.js index 2c774d1..91f4be5 100644 --- a/docs/_static/searchtools.js +++ b/docs/_static/searchtools.js @@ -513,9 +513,11 @@ const Search = { // perform the search on the required terms searchTerms.forEach((word) => { const files = []; + // find documents, if any, containing the query word in their text/title term indices + // use Object.hasOwnProperty to avoid mismatching against prototype properties const arr = [ - { files: terms[word], score: Scorer.term }, - { files: titleTerms[word], score: Scorer.title }, + { files: terms.hasOwnProperty(word) ? terms[word] : undefined, score: Scorer.term }, + { files: titleTerms.hasOwnProperty(word) ? titleTerms[word] : undefined, score: Scorer.title }, ]; // add support for partial matches if (word.length > 2) { @@ -547,8 +549,9 @@ const Search = { // set score for the word in each file recordFiles.forEach((file) => { - if (!scoreMap.has(file)) scoreMap.set(file, {}); - scoreMap.get(file)[word] = record.score; + if (!scoreMap.has(file)) scoreMap.set(file, new Map()); + const fileScores = scoreMap.get(file); + fileScores.set(word, record.score); }); }); @@ -587,7 +590,7 @@ const Search = { break; // select one (max) score for the file. - const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); + const score = Math.max(...wordList.map((w) => scoreMap.get(file).get(w))); // add result to the result list results.push([ docNames[file], diff --git a/docs/genindex.html b/docs/genindex.html index da6bbf3..46aa253 100644 --- a/docs/genindex.html +++ b/docs/genindex.html @@ -352,14 +352,22 @@ document.write(`

G

    +
  • get_next_track() (asknavidrome.media_queue.MediaQueue method) +
  • +
  • get_previous_track() (asknavidrome.media_queue.MediaQueue method) +
  • get_queue_count() (asknavidrome.media_queue.MediaQueue method)
  • get_song_details() (asknavidrome.subsonic_api.SubsonicConnection method) @@ -421,6 +429,8 @@ document.write(`

    S

      +
    • shuffle() (asknavidrome.media_queue.MediaQueue method) +
    • star_entry() (asknavidrome.subsonic_api.SubsonicConnection method)
    • start_playback() (in module asknavidrome.controller) diff --git a/docs/index.html b/docs/index.html index 7b7499a..83281ec 100644 --- a/docs/index.html +++ b/docs/index.html @@ -354,10 +354,15 @@ document.write(`
    • MediaQueue.add_track()
    • MediaQueue.clear()
    • MediaQueue.enqueue_next_track()
    • +
    • MediaQueue.get_buffer()
    • +
    • MediaQueue.get_current_queue()
    • +
    • MediaQueue.get_current_track()
    • +
    • MediaQueue.get_history()
    • MediaQueue.get_history_count()
    • MediaQueue.get_next_track()
    • -
    • MediaQueue.get_prevous_track()
    • +
    • MediaQueue.get_previous_track()
    • MediaQueue.get_queue_count()
    • +
    • MediaQueue.set_current_track_offset()
    • MediaQueue.shuffle()
    • MediaQueue.sync()
    • MediaQueue.buffer
    • @@ -380,6 +385,7 @@ document.write(`
    • SubsonicConnection.get_song_details()
    • SubsonicConnection.get_song_uri()
    • SubsonicConnection.ping()
    • +
    • SubsonicConnection.scrobble()
    • SubsonicConnection.search_album()
    • SubsonicConnection.search_artist()
    • SubsonicConnection.search_playlist()
    • @@ -959,7 +965,7 @@ and setting it to DNS Only.

      AskNavidrome controller#

      Functions:

      -
      +
      @@ -1080,7 +1086,7 @@ and replace current and enqueued streams.

      AskNavidrome media queue#

      -class asknavidrome.media_queue.MediaQueue#
      +class asknavidrome.media_queue.MediaQueue#

      The MediaQueue class

      This class provides a queue based on a Python deque. This is used to store the tracks in the current play queue

      @@ -1090,7 +1096,7 @@ the tracks in the current play queue

      Methods:

      -

      add_screen_background(card_data)

      Add background to card.

      +
      @@ -1101,29 +1107,44 @@ the tracks in the current play queue

      + + + + + + + + + + + + - + - + + + + - - + +

      add_track(track)

      Add tracks to the queue

      enqueue_next_track()

      Get the next buffered track

      get_buffer()

      Get the buffer

      get_current_queue()

      Get the current queue

      get_current_track()

      Method to return current_track attribute

      get_history()

      Get history

      get_history_count()

      Get the number of tracks in the history deque

      get_next_track()

      Get the next track

      get_prevous_track()

      get_previous_track()

      Get the previous track

      get_queue_count()

      Get the number of tracks in the queue

      shuffle()

      set_current_track_offset(offset)

      Method to set the offset of the current track in milliseconds

      shuffle()

      Shuffle the queue

      sync()

      Syncronise the buffer with the queue

      sync()

      Synchronise the buffer with the queue

      Attributes:

      -
      +
      @@ -1185,6 +1206,68 @@ request early to queue the next track while maintaining the playlist

      +
      +
      +get_buffer() deque#
      +

      Get the buffer

      +

      Returns a deque containing the current buffer

      +
      +
      Returns:
      +

      The current buffer

      +
      +
      Return type:
      +

      deque

      +
      +
      +
      + +
      +
      +get_current_queue() deque#
      +

      Get the current queue

      +

      Returns a deque containing the current queue of music to be played

      +
      +
      Returns:
      +

      The current queue

      +
      +
      Return type:
      +

      deque

      +
      +
      +
      + +
      +
      +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 +attributes / properties

      +
      +
      Returns:
      +

      A Track object representing the current playing audio track

      +
      +
      Return type:
      +

      Track

      +
      +
      +
      + +
      +
      +get_history() deque#
      +

      Get history

      +

      Returns a deque of tracks that have already been played

      +
      +
      Returns:
      +

      A deque container tracks that have already been played

      +
      +
      Return type:
      +

      deque

      +
      +
      +
      +
      get_history_count() int#
      @@ -1215,8 +1298,8 @@ request early to queue the next track while maintaining the playlist

      -
      -get_prevous_track() Track#
      +
      +get_previous_track() Track#

      Get the previous track

      Get the last track added to the history deque and add it to the front of the play queue

      @@ -1244,6 +1327,20 @@ 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 +the beginning again.

      +
      +
      Parameters:
      +

      offset (int) – The track offset in milliseconds

      +
      +
      +
      +
      shuffle() None#
      @@ -1259,7 +1356,7 @@ add it to the front of the play queue

      sync() None#
      -

      Syncronise the buffer with the queue

      +

      Synchronise the buffer with the queue

      Overwrite the buffer with the current queue. This is useful when pausing or stopping to ensure the resulting PlaybackNearlyFinished request gets @@ -1314,7 +1411,7 @@ queue.

      AskNavidrome subsonic API#

      -class asknavidrome.subsonic_api.SubsonicConnection(server_url: str, user: str, passwd: str, port: int, api_location: str, api_version: str)#
      +class asknavidrome.subsonic_api.SubsonicConnection(server_url: str, user: str, passwd: str, port: int, api_location: str, api_version: str)#

      Class with methods to interact with Subsonic API compatible media servers

      Parameters:
      @@ -1322,7 +1419,7 @@ queue.

    • server_url (str) – The URL of the Subsonic API compatible media server

    • user (str) – Username to authenticate against the API

    • passwd (str) – Password to authenticate against the API

    • -
    • port (int) – Port the Subsonic compatibe server is listening on

    • +
    • port (int) – Port the Subsonic compatible server is listening on

    • api_location (str) – Path to the API, this is appended to server_url

    • api_version (str) – The version of the Subsonic API that is in use

    • @@ -1332,7 +1429,7 @@ queue.

      Methods:

      -

      buffer

      Deque to contain the list of tracks to be enqueued

      +
      @@ -1361,22 +1458,25 @@ queue.

      - + + + + - + - + - + - + - + @@ -1459,7 +1559,7 @@ until song_count is greater than of equal to length

      Parameters:
        -
      • genre (str) – The genre, acceptible values are with the getGenres Subsonic API call.

      • +
      • genre (str) – The genre, acceptable values are with the getGenres Subsonic API call.

      • count (int) – The number of songs to return

      @@ -1541,6 +1641,23 @@ is working

      +
      +
      +scrobble(track_id: str, time: int) None#
      +

      Scrobble the given track

      +
      +
      Parameters:
      +
        +
      • track_id (str) – The ID of the track to scrobble

      • +
      • time (int) – UNIX timestamp of track play time

      • +
      +
      +
      Returns:
      +

      None

      +
      +
      +
      +
      search_album(term: str) dict | None#
      @@ -1650,7 +1767,7 @@ is working

      AskNavidrome track#

      -class asknavidrome.track.Track(id: str = '', title: str = '', artist: str = '', artist_id: str = '', album: str = '', album_id: str = '', track_no: int = 0, year: int = 0, genre: str = '', duration: int = 0, bitrate: int = 0, uri: str = '', offset: int = 0, previous_id: str = '')#
      +class asknavidrome.track.Track(id: str = '', title: str = '', artist: str = '', artist_id: str = '', album: str = '', album_id: str = '', track_no: int = 0, year: int = 0, genre: str = '', duration: int = 0, bitrate: int = 0, uri: str = '', offset: int = 0, previous_id: str = '')#

      An object that represents an audio track

      Parameters:
      @@ -1750,10 +1867,15 @@ is working

    • MediaQueue.add_track()
    • MediaQueue.clear()
    • MediaQueue.enqueue_next_track()
    • +
    • MediaQueue.get_buffer()
    • +
    • MediaQueue.get_current_queue()
    • +
    • MediaQueue.get_current_track()
    • +
    • MediaQueue.get_history()
    • MediaQueue.get_history_count()
    • MediaQueue.get_next_track()
    • -
    • MediaQueue.get_prevous_track()
    • +
    • MediaQueue.get_previous_track()
    • MediaQueue.get_queue_count()
    • +
    • MediaQueue.set_current_track_offset()
    • MediaQueue.shuffle()
    • MediaQueue.sync()
    • MediaQueue.buffer
    • @@ -1776,6 +1898,7 @@ is working

    • SubsonicConnection.get_song_details()
    • SubsonicConnection.get_song_uri()
    • SubsonicConnection.ping()
    • +
    • SubsonicConnection.scrobble()
    • SubsonicConnection.search_album()
    • SubsonicConnection.search_artist()
    • SubsonicConnection.search_playlist()
    • diff --git a/docs/objects.inv b/docs/objects.inv index 5a02347458873a5e9baacb179e1477a3fc02bcc7..9e0f33989a4c4b181e5bae644f89d0bb3624033c 100644 GIT binary patch delta 546 zcmV+-0^R-U1d;`idw-YBZrd;nfbV$<0oygkdhM;)E<1E+k=+GaqHQ6v$<&COE4#IyQ{=y_HcT`^J=!c&xh6>n~+)`;~1s z@V;aPQgSaGqTw}&ed}yAGV_{fL{QeSyG!E#P-tEvM&#a_)_*TU_y8{OLBp7hS<0}( zCnS563ixDs^_a)cd6)r0gZGQ1r&A5?zB&Hld3DM1A!^R-hc-Q7rt;v&5OfdWVy)xqIG+34wr zCHF|&y$Hj~D}SMF+mc-P*PLC+@qec+w@s5K*B+Vg(lynqZW3W_;4?g-=Fcs)J_MX=xPt`1C29B=t@eH zLus%2iAtVMCvFZr9W!<9Jk^I!^dZ-f(JX*Y<*E8T_Xq!Y%F`n-%`hM2y@nb!+upHx zcG|~&=HceNO-9`(LwS_Mq_yY`0fhvmaK(KG_Y~k4^dmdq>$YZs&zUdn`Y1 kMeW7v6&taqF`bHeD_sKoRx1X-$unFyyV#8Z8^ftKP_+g`Bk20oUo zKuYd}MI>H>*tgaMl8M&@5?&c%m&e4fP)JV!19E4mb?Xq$gMamW&@d)r)-ufS3&|d( z0zO$@-KOt{^qBxcgLA8-r>J^6yU?TWj9dq*L(}B^g7;R{!Q(oR&>v$r^ zb@3``JT*dYB!BT^h6{CUhDvZ4RJEIbZVVCT&h*13^9`l~U5DQBdgQTt#tfFSFLocL zCAUD*^ix~sx;*}s%bO_0voq(_(LlU`R(U+Lo)*dCc~zuYSu`oBqf9y^dQjSx2gk@4 zgAR(?VlWp+r08-57KfI-nKQL`_GfO&Q#odQ)baRi$Z~U~2r|$L=rnMv$7Sq((s|>Z zomQCh@=8OEnr$!HvO1k(|I_E@?U*zo9XdL3?e=$zVs@?Z0BpBcTC;yfgg)90$&XEZ vpnsrj7`MwtrrqYZeO7z4`;FNB7^6b(rE`Mc3+A;fv&;MU(BkF=j$oDktZ@Rv diff --git a/docs/searchindex.js b/docs/searchindex.js index 85bc558..55ccf06 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -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, "asknavidrome-main"]], "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": 64, "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]], "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]], "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]], "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_prevous_track() (asknavidrome.media_queue.mediaqueue method)": [[0, "asknavidrome.media_queue.MediaQueue.get_prevous_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]], "history (asknavidrome.media_queue.mediaqueue attribute)": [[0, "asknavidrome.media_queue.MediaQueue.history", false]], "logger (asknavidrome.media_queue.mediaqueue attribute)": [[0, "asknavidrome.media_queue.MediaQueue.logger", false]], "mediaqueue (class in asknavidrome.media_queue)": [[0, "asknavidrome.media_queue.MediaQueue", false]], "module": [[0, "module-asknavidrome.controller", false]], "ping() (asknavidrome.subsonic_api.subsonicconnection method)": [[0, "asknavidrome.subsonic_api.SubsonicConnection.ping", false]], "queue (asknavidrome.media_queue.mediaqueue attribute)": [[0, "asknavidrome.media_queue.MediaQueue.queue", 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]], "shuffle() (asknavidrome.media_queue.mediaqueue method)": [[0, "asknavidrome.media_queue.MediaQueue.shuffle", 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]], "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": {"asknavidrome": [[0, 0, 0, "-", "controller"]], "asknavidrome.controller": [[0, 1, 1, "", "add_screen_background"], [0, 1, 1, "", "enqueue_songs"], [0, 1, 1, "", "start_playback"], [0, 1, 1, "", "stop"]], "asknavidrome.media_queue": [[0, 2, 1, "", "MediaQueue"]], "asknavidrome.media_queue.MediaQueue": [[0, 3, 1, "", "add_track"], [0, 4, 1, "", "buffer"], [0, 3, 1, "", "clear"], [0, 4, 1, "", "current_track"], [0, 3, 1, "", "enqueue_next_track"], [0, 3, 1, "", "get_history_count"], [0, 3, 1, "", "get_next_track"], [0, 3, 1, "", "get_prevous_track"], [0, 3, 1, "", "get_queue_count"], [0, 4, 1, "", "history"], [0, 4, 1, "", "logger"], [0, 4, 1, "", "queue"], [0, 3, 1, "", "shuffle"], [0, 3, 1, "", "sync"]], "asknavidrome.subsonic_api": [[0, 2, 1, "", "SubsonicConnection"]], "asknavidrome.subsonic_api.SubsonicConnection": [[0, 3, 1, "", "albums_by_artist"], [0, 3, 1, "", "build_random_song_list"], [0, 3, 1, "", "build_song_list_from_albums"], [0, 3, 1, "", "build_song_list_from_favourites"], [0, 3, 1, "", "build_song_list_from_genre"], [0, 3, 1, "", "build_song_list_from_playlist"], [0, 3, 1, "", "get_song_details"], [0, 3, 1, "", "get_song_uri"], [0, 3, 1, "", "ping"], [0, 3, 1, "", "search_album"], [0, 3, 1, "", "search_artist"], [0, 3, 1, "", "search_playlist"], [0, 3, 1, "", "search_song"], [0, 3, 1, "", "star_entry"], [0, 3, 1, "", "unstar_entry"]], "asknavidrome.track": [[0, 2, 1, "", "Track"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "function", "Python function"], "2": ["py", "class", "Python class"], "3": ["py", "method", "Python method"], "4": ["py", "attribute", "Python attribute"]}, "objtypes": {"0": "py:module", "1": "py:function", "2": "py:class", "3": "py:method", "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, "ask": 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, "beatl": 0, "becaus": 0, "been": 0, "befor": 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, "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, "cannot": 0, "car": 0, "card": 0, "card_data": 0, "catalog": 0, "caus": 0, "cd": 0, "certif": 0, "chanc": 0, "chang": 0, "check": 0, "choos": 0, "class": 0, "clear": 0, "click": 0, "clone": 0, "cn": 0, "collect": 0, "com": 0, "command": 0, "common": 0, "commun": 0, "compat": 0, "compatib": 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, "directli": 0, "directori": 0, "disabl": 0, "disconnect": 0, "distribut": 0, "dn": 0, "do": 0, "doc": 0, "dockerfil": 0, "doe": 0, "domain": 0, "done": 0, "down": 0, "due": 0, "durat": 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, "endpoint": 0, "enqueu": 0, "enqueue_next_track": 0, "enqueue_song": 0, "ensur": 0, "enter": 0, "entiti": 0, "entri": 0, "env": 0, "environ": 0, "equal": 0, "etc": 0, "everyth": 0, "exampl": 0, "exec": 0, "execut": 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, "genr": 0, "get": 0, "get_history_count": 0, "get_next_track": 0, "get_prevous_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, "handler_input": 0, "handlerinput": 0, "happen": 0, "hard": 0, "haven": 0, "help": 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, "individu": 0, "info": 0, "inform": 0, "ingress": 0, "inspir": 0, "instead": 0, "instruct": 0, "int": 0, "interact": 0, "interceptor": 0, "interfac": 0, "internet": 0, "interv": 0, "invoc": 0, "invok": 0, "io": 0, "jame25": 0, "jazz": 0, "json": 0, "just": 0, "kbp": 0, "keep": 0, "kit": 0, "know": 0, "kubernet": 0, "last": 0, "least": 0, "length": 0, "let": 0, "level": 0, "licens": 0, "like": 0, "limit": 0, "list": 0, "listen": 0, "littl": 0, "local": 0, "locat": 0, "logger": 0, "login": 0, "look": 0, "lose": 0, "made": 0, "mai": 0, "maintain": 0, "make": 0, "mani": 0, "manual": 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, "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, "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, "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, "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, "perform": 0, "phrase": 0, "pi": 0, "picard": 0, "pick": 0, "ping": 0, "pixi": 0, "place": 0, "platform": 0, "playback": 0, "playbackfailedhandl": 0, "playbacknearlyfinish": 0, "playbehaviour": 0, "player": 0, "playlist": 0, "playlist_nam": 0, "pleas": 0, "plug": 0, "pod": 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, "primari": 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, "quit": 0, "rais": 0, "random": 0, "randomis": 0, "raspberri": 0, "rate": 0, "raul824": 0, "read": 0, "real": 0, "reason": 0, "reboot": 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, "reset": 0, "resolv": 0, "resourc": 0, "respons": 0, "rest": 0, "restrict": 0, "result": 0, "resum": 0, "retriev": 0, "return": 0, "revers": 0, "review": 0, "rock": 0, "root": 0, "rosskouk": 0, "rule": 0, "rusty77": 0, "sai": 0, "same": 0, "save": 0, "scm": 0, "scratch": 0, "screen": 0, "screenshot": 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, "set": 0, "sever": 0, "should": 0, "show": 0, "shuffl": 0, "side": 0, "sign": 0, "similarli": 0, "simpl": 0, "simul": 0, "simultan": 0, "singl": 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, "spoken": 0, "spotifi": 0, "ssl": 0, "ssword": 0, "star": 0, "star_entri": 0, "start": 0, "start_playback": 0, "step": 0, "still": 0, "stop": 0, "store": 0, "str": 0, "stream": 0, "sub": 0, "subscript": 0, "subsonic_api": 0, "subsonicconnect": 0, "success": 0, "sup3rstrongp": 0, "sure": 0, "sync": 0, "syncronis": 0, "system": 0, "t": 0, "tag": 0, "take": 0, "task": 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, "three": 0, "through": 0, "thrown": 0, "tick": 0, "time": 0, "titl": 0, "tl": 0, "too": 0, "tool": 0, "track_detail": 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, "unless": 0, "unstar": 0, "unstar_entri": 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, "which": 0, "whichev": 0, "while": 0, "why": 0, "wildcard": 0, "wish": 0, "without": 0, "word": 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 +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,"asknavidrome-main"]],"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]],"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]],"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]],"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]],"history (asknavidrome.media_queue.mediaqueue attribute)":[[0,"asknavidrome.media_queue.MediaQueue.history",false]],"logger (asknavidrome.media_queue.mediaqueue attribute)":[[0,"asknavidrome.media_queue.MediaQueue.logger",false]],"mediaqueue (class in asknavidrome.media_queue)":[[0,"asknavidrome.media_queue.MediaQueue",false]],"module":[[0,"module-asknavidrome.controller",false]],"ping() (asknavidrome.subsonic_api.subsonicconnection method)":[[0,"asknavidrome.subsonic_api.SubsonicConnection.ping",false]],"queue (asknavidrome.media_queue.mediaqueue attribute)":[[0,"asknavidrome.media_queue.MediaQueue.queue",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]],"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]],"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":{"asknavidrome":[[0,0,0,"-","controller"]],"asknavidrome.controller":[[0,1,1,"","add_screen_background"],[0,1,1,"","enqueue_songs"],[0,1,1,"","start_playback"],[0,1,1,"","stop"]],"asknavidrome.media_queue":[[0,2,1,"","MediaQueue"]],"asknavidrome.media_queue.MediaQueue":[[0,3,1,"","add_track"],[0,4,1,"","buffer"],[0,3,1,"","clear"],[0,4,1,"","current_track"],[0,3,1,"","enqueue_next_track"],[0,3,1,"","get_buffer"],[0,3,1,"","get_current_queue"],[0,3,1,"","get_current_track"],[0,3,1,"","get_history"],[0,3,1,"","get_history_count"],[0,3,1,"","get_next_track"],[0,3,1,"","get_previous_track"],[0,3,1,"","get_queue_count"],[0,4,1,"","history"],[0,4,1,"","logger"],[0,4,1,"","queue"],[0,3,1,"","set_current_track_offset"],[0,3,1,"","shuffle"],[0,3,1,"","sync"]],"asknavidrome.subsonic_api":[[0,2,1,"","SubsonicConnection"]],"asknavidrome.subsonic_api.SubsonicConnection":[[0,3,1,"","albums_by_artist"],[0,3,1,"","build_random_song_list"],[0,3,1,"","build_song_list_from_albums"],[0,3,1,"","build_song_list_from_favourites"],[0,3,1,"","build_song_list_from_genre"],[0,3,1,"","build_song_list_from_playlist"],[0,3,1,"","get_song_details"],[0,3,1,"","get_song_uri"],[0,3,1,"","ping"],[0,3,1,"","scrobble"],[0,3,1,"","search_album"],[0,3,1,"","search_artist"],[0,3,1,"","search_playlist"],[0,3,1,"","search_song"],[0,3,1,"","star_entry"],[0,3,1,"","unstar_entry"]],"asknavidrome.track":[[0,2,1,"","Track"]]},"objnames":{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","class","Python class"],"3":["py","method","Python method"],"4":["py","attribute","Python attribute"]},"objtypes":{"0":"py:module","1":"py:function","2":"py:class","3":"py:method","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,"ask":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,"begin":0,"behind":0,"being":0,"best":0,"between":0,"bin":0,"bit":0,"bitrat":0,"block":0,"blue":0,"bob":0,"bool":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,"cannot":0,"car":0,"card":0,"card_data":0,"catalog":0,"caus":0,"cd":0,"certif":0,"chanc":0,"chang":0,"check":0,"choos":0,"class":0,"clear":0,"click":0,"clone":0,"cn":0,"collect":0,"com":0,"command":0,"common":0,"commun":0,"compat":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,"directli":0,"directori":0,"disabl":0,"disconnect":0,"distribut":0,"dn":0,"do":0,"doc":0,"dockerfil":0,"doe":0,"domain":0,"done":0,"down":0,"due":0,"durat":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,"endpoint":0,"enqueu":0,"enqueue_next_track":0,"enqueue_song":0,"ensur":0,"enter":0,"entiti":0,"entri":0,"env":0,"environ":0,"equal":0,"etc":0,"everyth":0,"exampl":0,"exec":0,"execut":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,"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,"handler_input":0,"handlerinput":0,"happen":0,"hard":0,"haven":0,"help":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,"individu":0,"info":0,"inform":0,"ingress":0,"inspir":0,"instead":0,"instruct":0,"int":0,"interact":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,"last":0,"least":0,"length":0,"let":0,"level":0,"licens":0,"like":0,"limit":0,"list":0,"listen":0,"littl":0,"local":0,"locat":0,"logger":0,"login":0,"look":0,"lose":0,"made":0,"mai":0,"maintain":0,"make":0,"mani":0,"manual":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,"multi":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,"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,"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,"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,"perform":0,"phrase":0,"pi":0,"picard":0,"pick":0,"ping":0,"pixi":0,"place":0,"platform":0,"playback":0,"playbackfailedhandl":0,"playbacknearlyfinish":0,"playbehaviour":0,"player":0,"playlist":0,"playlist_nam":0,"pleas":0,"plug":0,"pod":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,"primari":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,"quit":0,"rais":0,"random":0,"randomis":0,"raspberri":0,"rate":0,"raul824":0,"read":0,"real":0,"reason":0,"reboot":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,"reset":0,"resolv":0,"resourc":0,"respons":0,"rest":0,"restrict":0,"result":0,"resum":0,"retriev":0,"return":0,"revers":0,"review":0,"rock":0,"root":0,"rosskouk":0,"rule":0,"rusty77":0,"sai":0,"same":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,"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,"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,"spoken":0,"spotifi":0,"ssl":0,"ssword":0,"star":0,"star_entri":0,"start":0,"start_playback":0,"step":0,"still":0,"stop":0,"store":0,"str":0,"stream":0,"sub":0,"subscript":0,"subsonic_api":0,"subsonicconnect":0,"success":0,"sup3rstrongp":0,"sure":0,"sync":0,"synchronis":0,"system":0,"t":0,"tag":0,"take":0,"task":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,"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,"unix":0,"unless":0,"unstar":0,"unstar_entri":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,"which":0,"whichev":0,"while":0,"why":0,"wildcard":0,"wish":0,"without":0,"word":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

      albums_by_artist(id)

      Get the albums for a given artist

      ping()

      Ping a Subsonic API server

      search_album(term)

      scrobble(track_id, time)

      Scrobble the given track

      search_album(term)

      Search the media server for the given album

      search_artist(term)

      search_artist(term)

      Search the media server for the given artist

      search_playlist(term)

      search_playlist(term)

      Search the media server for the given playlist

      search_song(term)

      search_song(term)

      Search the media server for the given song

      star_entry(id, mode)

      star_entry(id, mode)

      Add a star to the given entity

      unstar_entry(id, mode)

      unstar_entry(id, mode)

      Remove a star from the given entity