Esempio n. 1
0
 def Match(self, query: str):
     query, page = parseSearchQuery(query)
     query = "artist:" + query
     trackOffset = int(getSetting("MAX_RESULTS")) * (page - 1)
     results = self.spotify.search(query, int(getSetting("MAX_RESULTS")),
                                   trackOffset, "track")
     return parseTracks(results)
Esempio n. 2
0
 def Match(self, query: str):
     query, page = parseSearchQuery(query)
     user = self.spotify.current_user()
     playlistOffset = int(getSetting("MAX_RESULTS")) * (page - 1)
     playlists = self.spotify.user_playlists(
         user["id"], int(getSetting("MAX_RESULTS")), playlistOffset)
     return parsePlaylists(playlists)
Esempio n. 3
0
 def Match(self, query: str):
     query, page = parseSearchQuery(query)
     playlistOffset = int(getSetting("MAX_RESULTS")) * (page - 1)
     searchResults = self.spotify.search(query,
                                         int(getSetting("MAX_RESULTS")),
                                         playlistOffset, "playlist")
     return parsePlaylists(searchResults["playlists"])
Esempio n. 4
0
 def Match(self, query: str):
     query, page = parseSearchQuery(query)
     trackOffset = int(getSetting("MAX_RESULTS")) * (page - 1)
     results = self.spotify.search(q=query,
                                   limit=int(getSetting("MAX_RESULTS")),
                                   offset=trackOffset,
                                   type="show")
     return self.ParsePodcasts(results)
Esempio n. 5
0
 def Match(self, query: str):
     searchResults = []
     if (query != ""):
         query, page = parseSearchQuery(query)
         trackOffset = int(getSetting("MAX_RESULTS")) * (page - 1)
         searchResults = self.spotify.search(query,
                                             int(getSetting("MAX_RESULTS")),
                                             trackOffset, "track")
     else:
         searchResults = {
             "tracks":
             self.spotify.current_user_top_tracks(
                 offset=0, limit=int(getSetting("MAX_RESULTS")))
         }
     return parseTracks(searchResults)
Esempio n. 6
0
    def Match(self, query: str):
        query, page = parseSearchQuery(query)
        searchResults = []
        if (query != ""):
            query = "artist:" + query
            trackOffset = int(getSetting("MAX_RESULTS")) * (page - 1)
            searchResults = self.spotify.search(query,
                                                int(getSetting("MAX_RESULTS")),
                                                trackOffset, "track")
        else:
            topArtist = self.spotify.current_user_top_artists(limit=1)
            result = self.spotify.artist_top_tracks(
                topArtist['items'][0]['id'])
            searchResults = {"tracks": {"items": result["tracks"]}}

        return parseTracks(searchResults)
 def Match(self, query: str):
     query = " a " + query
     query, page = parseSearchQuery(query)
     savedShowsOffset = int(getSetting("MAX_RESULTS")) * (page - 1)
     savedShows = self.spotify.current_user_saved_shows(
         offset=savedShowsOffset, limit=int(getSetting("MAX_RESULTS")))
     shows = []
     for show in savedShows['items']:
         name = show['show']['name']
         uri = show['show']['uri']
         shows.append((uri, name, "Spotify", 100, 100, {
             "actions": ["asdf"]
         }))
     if (len(shows) > 0):
         return shows
     return [("", "No podcasts found!", "Spotify", 100, 100, {})]
Esempio n. 8
0
 def __init__(self, command, spotify):
     self.spotify = spotify
     self.command = command
     if (not os.path.isfile(getSetting("CACHE_PATH"))):
         raise RuntimeError("Not logged in!")
     if (not self.spotify.current_playback()):
         raise RuntimeError("No playback device available!")
Esempio n. 9
0
 def executeCommand(self, command: str):
     if (getSetting("CASE_SENSITIVE") == "False"):
         command = command.upper()
     if (command == getCommandName("PLAY_SONG_COMMAND")):
         return Song(self.spotify)
     elif (command == getCommandName("PLAY_SONG_BY_ARTIST_COMMAND")):
         return ArtistSong(self.spotify)
     raise RuntimeError("Incorrect command")
Esempio n. 10
0
 def executeCommand(self, command: str):
     if (getSetting("CASE_SENSITIVE") == "False"):
         command = command.upper()
     if (command == getCommandName('PLAY_SONG_COMMAND')):
         return Song(self.spotify)
     elif (command == getCommandName('PLAY_SONG_BY_ARTIST_COMMAND')):
         return ArtistSong(self.spotify)
     elif (command == getCommandName('PLAY_FEATURED_PLAYLIST_COMMAND')):
         return FeaturedPlaylist(self.spotify)
     elif (command == getCommandName('PLAY_PLAYLIST_COMMAND')):
         return Playlist(self.spotify)
     elif (command == getCommandName('PLAY_MY_PLAYLIST_COMMAND')):
         return MyPlaylist(self.spotify)
     raise RuntimeError("Incorrect command")
Esempio n. 11
0
 def Match(self, query: str):
     if (getSetting("CASE_SENSITIVE") == "False"):
         query = query.lower()
     if (query in ["track", "context", "off"]):
         return [
             (self.command + " " + query,
              "Set repeat mode to: " + query + ".", "Spotify", 100, 100, {})
         ]
     else:
         return [(self.command + " off", "Set repeat mode to: off.",
                  "Spotify", 100, 100, {}),
                 (self.command + " context", "Set repeat mode to: context.",
                  "Spotify", 100, 100, {}),
                 (self.command + " track", "Set repeat mode to: track.",
                  "Spotify", 100, 100, {})]
Esempio n. 12
0
 def Match(self, query: str):
     query, page = parseSearchQuery(query)
     episodeOffset = int(getSetting("MAX_RESULTS")) * (page - 1)
     playbackDetails = self.spotify.currently_playing(
         additional_types="episode")
     if(playbackDetails["item"]["type"] == "episode"):
         episodes = self.spotify.show_episodes(
             playbackDetails["item"]["show"]['id'], offset=episodeOffset, limit=int(getSetting("MAX_RESULTS")))
         episodeResults = []
         relevance = 100
         for episode in episodes['items']:
             icon = self.GetIcon(episode, playbackDetails)
             episodeResults.append((episode["uri"],
                                    episode["name"],
                                    icon,
                                    relevance, 100, {}))
             relevance = relevance - 1
         return episodeResults
     else:
         return [("", "No podcast is being played!", "Spotify", 100, 100, {})]
Esempio n. 13
0
 def IncreaseByPlusCharacter(self, query):
     plusDifference = len(query) - IncreaseVolume.plusCount
     IncreaseVolume.plusCount = len(query)
     if (0 == abs(plusDifference) or abs(plusDifference) == 1):
         if (plusDifference == 0):
             plusDifference = 1
         IncreaseVolume.currentVolume = IncreaseVolume.currentVolume + int(
             getSetting("VOLUME_STEP")) * plusDifference
         if (IncreaseVolume.currentVolume > 100):
             IncreaseVolume.currentVolume = 100
             return [("", "Volume is already 100%", "Spotify", 100, 100, {})
                     ]
         if (IncreaseVolume.currentVolume < 0):
             IncreaseVolume.currentVolume = 0
             return [("", "Volume is already 0%", "Spotify", 100, 100, {})]
         else:
             return [("", "Volume is now set to: " +
                      str(IncreaseVolume.currentVolume), "Spotify", 100,
                      100, {})]
     return []
Esempio n. 14
0
 def DecreaseByMinusCharacter(self, query):
     minusDifference = len(query) - DecreaseVolume.minusCount
     DecreaseVolume.minusCount = len(query)
     if (0 == abs(minusDifference) or abs(minusDifference) == 1):
         if (minusDifference == 0):
             minusDifference = 1
         DecreaseVolume.currentVolume = DecreaseVolume.currentVolume - int(
             getSetting("VOLUME_STEP")) * minusDifference
         if (DecreaseVolume.currentVolume > 100):
             DecreaseVolume.currentVolume = 100
             return [("", "Volume is already 100%", "Spotify", 100, 100, {})
                     ]
         if (DecreaseVolume.currentVolume < 0):
             DecreaseVolume.currentVolume = 0
             return [("", "Volume is already 0%", "Spotify", 100, 100, {})]
         else:
             return [("", "Volume is now set to: " +
                      str(DecreaseVolume.currentVolume), "Spotify", 100,
                      100, {})]
     return []
Esempio n. 15
0
    def Match(self, query: str):
        if (DecreaseVolume.minusCount == 0):
            DecreaseVolume.currentVolume = self.spotify.current_playback(
            )["device"]["volume_percent"]
        if (self.spotify.current_playback()["device"]["type"]
                in DEVICES_WITHOUT_VOLUME_CONTROL):
            return [("", "Volume cannot be controlled on the current device",
                     "Spotify", 100, 100, {})]

        query = query.strip(" ")
        returnOptions = []
        if (query.isnumeric() and len(query) > 0):
            returnOptions = self.DecreaseByValue(query)
        elif (len(query) > 0
              and query[0] == getSetting("DECREASE_VOLUME_CHARACTER")
              and query == len(query) * query[0]):
            returnOptions = self.DecreaseByMinusCharacter(query)
            self.spotify.volume(DecreaseVolume.currentVolume)
        return returnOptions if returnOptions != [] else self.DecreaseByChoice(
        )
Esempio n. 16
0
 def Run(self, data: str):
     os.system(getSetting("CONFIG_EDITOR") +
               " " + CONFIG_FILE_LOCATION + "&")
Esempio n. 17
0
 def Run(self, data: str):
     webbrowser.open(getSetting("SPOTIFY_URL"))
Esempio n. 18
0
 def Run(self, data: str):
     if(os.path.isfile(getSetting("CACHE_PATH"))):
         os.remove(getSetting("CACHE_PATH"))
Esempio n. 19
0
 def Match(self, query: str):
     if(os.path.isfile(getSetting("CACHE_PATH"))):
         return [(self.command, "Log out from spotify", "Spotify", 100, 100, {})]
     else:
         return [("", "Not logged in", "Spotify", 100, 100, {})]
Esempio n. 20
0
 def Match(self, query: str):
     if(os.path.isfile(getSetting("CONFIG_EDITOR"))):
         return [(self.command, "Edit configuration", "Spotify", 100, 100, {}), ]
     else:
         return [(self.command, "Given editor: " + getSetting("CONFIG_EDITOR") + " not found!", "Spotify", 100, 100, {}), ]
Esempio n. 21
0
 def Match(self, query: str):
     if (not os.path.isfile(getSetting("CACHE_PATH"))):
         return [(getCommandName("LOGIN_COMMAND"), "Log into Spotify",
                  "Spotify", 100, 100, {})]
     else:
         return [("", "Already logged in", "Spotify", 100, 100, {})]