Example #1
0
 def __init__(self, username):
     super(LastFMTrackListener, self).__init__()
     self._lfm_user = username
     self._lfm = LastFM(self._lfm_user)
     self._last_playing_music = None
     self._lastfm_music_track_change()
     gobject.timeout_add(self.INTERVAL, self._lastfm_periodic_check)
Example #2
0
 def setUp(self):
     self.fm = LastFM()
     self.artist_name = "Wintersleep"
     self.artist_mbid = 'cda8e877-fe39-4939-8b09-045d68617367'
     self.track_name = "Jaws of Life"
     self.album_name = "Untitled"
     self.track_mbid = 'e0b110b4-fef4-473a-9c42-207d3c92cae0'
Example #3
0
def get_dataset():
    debug_print("Obtaining dataset...")
    # save time by loading any existing dataset
    if os.path.isfile(DATASET_FILENAME):
        dataset = json.load(open(DATASET_FILENAME))
        if len(dataset) == DATASET_SIZE:
            debug_print("Existing dataset found!")
            return dataset

    dataset = {}
    artists = set()

    # initialize LastFM API object and get artist list
    lastreq = LastFM()
    response = lastreq.get_artists(DATASET_SIZE)

    # initialize all artist tag sets
    for artist in response["artists"]["artist"]:
        dataset[artist["name"]] = set()

    # get tags for each artist
    count = 1
    for artist in dataset.keys():
        debug_print("Acquiring tags for artist " + str(count) + " of " +
                    str(DATASET_SIZE))
        response = lastreq.get_toptags(artist)
        for tag in response["toptags"]["tag"]:
            dataset[artist].add(tag["name"])
        count += 1

    # save the dataset, because it probably took a while to get
    debug_print("Dataset complete. Saving...")
    json.dump(dataset, open(DATASET_FILENAME, 'wb'), default=set_default)

    return dataset
Example #4
0
 def __init__(self):
     self.__youtube = Youtube()
     self.__spotify = Spotify()
     self.__editor = TagEditor()
     self.__last = LastFM()
     self.__apple = AppleMusic()
     self.__deezer = Deezer()
Example #5
0
 def __init__(self, metadatautils=None):
     '''Initialize - optionaly provide our base MetadataUtils class'''
     if not metadatautils:
         from metadatautils import MetadataUtils
         self.metadatautils = MetadataUtils
     else:
         self.metadatautils = metadatautils
     self.cache = self.metadatautils.cache
     self.lastfm = LastFM()
     self.mbrainz = MusicBrainz()
     self.audiodb = TheAudioDb()
Example #6
0
    def OnScrobble(self, event):
        """Scrobbles using LastFM and sets a confirmation dialog"""

        try:
            lfm = LastFM()
            starttime = int(time.time())
            lfm.scrobble(self.artistText.GetValue(), self.titleText.GetValue(),
                         starttime)
            wx.MessageBox(
                "Scrobbled: {} - {}".format(self.artistText.GetValue(),
                                            self.titleText.GetValue()), "Done",
                wx.OK)
            self.artistText.SetValue("")
            self.titleText.SetValue("")
        except lastfm.pylast.WSError as e:
            wx.MessageBox(str(e), 'Uh Oh', wx.OK | wx.ICON_ERROR)
Example #7
0
    def search(self):
        self.albumBox.Clear()
        self.trackBox.Clear()
        try:
            lfm = LastFM()
            results = lfm.albumSearch(
                self.albumText.GetValue()).get_next_page()
            for result in results:
                self.albumBox.Append(
                    result.get_artist().name + " - " + result.get_title() +
                    " - " + result.get_release_date().split(',')[0], result)

            if len(results) == 0:
                wx.MessageBox(
                    "No matches found for {}".format(
                        self.albumText.GetValue()), 'Uh Oh',
                    wx.OK | wx.ICON_ERROR)
        except lastfm.pylast.WSError as e:
            wx.MessageBox(str(e), 'Uh Oh', wx.OK | wx.ICON_ERROR)
        except last.pylast.NetworkError as e:
            wx.MessageBox(str(e), 'Uh Oh', wx.OK | wx.ICON_ERROR)
Example #8
0
 def onScrobbleAlbum(self, event):
     try:
         lfm = LastFM()
         selectedAlbum = self.albumBox.GetClientData(event.GetSelection())
         starttime = int(time.time()) - 90
         album = selectedAlbum.get_title()
         noTracks = 0
         for track in selectedAlbum.get_tracks():
             noTracks += 1
             starttime += 10
             artist = track.artist.name
             title = track.title
             lfm.scrobble(artist, title, starttime)
         #confirmation:
         wx.MessageBox(
             "Scrobbled: {} - {} ({} tracks).".format(
                 artist.encode('utf-8'), album.encode('utf-8'), noTracks),
             "Done", wx.OK)
     except lastfm.pylast.WSError as e:
         wx.MessageBox(str(e), 'Uh Oh', wx.OK | wx.ICON_ERROR)
     except wx._core.PyAssertionError:
         wx.MessageBox("Nothing selected to scrobble", 'Uh Oh',
                       wx.OK | wx.ICON_ERROR)
Example #9
0
 def __init__(self):
     self.mb = MusicBrainz()
     self.lastfm = LastFM()
Example #10
0
 def setUp(self):
     self.fm = LastFM()
     self.query = 'winter'
Example #11
0
 def setUp(self):
     self.fm = LastFM()
     self.artist_name = 'Wintersleep'
     self.album_name = "New Inheritors"
     self.album_mbid = '3f46329d-b15c-494b-912e-b802a5a8a3bb'
Example #12
0
 def setUp(self):
     self.fm = LastFM()
     self.artist_name = 'Wintersleep'
     self.artist_mbid = 'cda8e877-fe39-4939-8b09-045d68617367'
Example #13
0
import telebot
from lastfm import LastFM

TelegramBot = telebot.TeleBot('734127522:AAGBKswjLU9gXLmiEQVbee6D5_PAMJIDtLs')
LastFM = LastFM()


@TelegramBot.message_handler(content_types=['text'])
def get_text_messages(message):
    """
    Main function of bot, which reads messages and does various outputs, according to the input
    :param message:
    :return:
    """
    if message.text == '/help':
        TelegramBot.send_message(message.from_user.id,
                                 "/help - помощь. \n"
                                 " /artist_albums - показать топ альбомы артиста. \n "
                                 "/artist_tracks - показать треки артиста. \n "
                                 "/similar_tracks - показать похожие треки")
    else:
        if LastFM.state == 'state: home':
            if message.text == '/artist_albums':
                TelegramBot.send_message(message.from_user.id, "Напиши артиста")
                LastFM.state = 'state: /artist_albums. phase: get_artist'
            elif message.text == '/artist_tracks':
                LastFM.state = 'state: /artist_tracks. phase: get_artist'
                TelegramBot.send_message(message.from_user.id, "Напиши артиста")
            elif message.text == '/similar_tracks':
                LastFM.state = 'state: /similar_tracks. phase: get_artist'
                TelegramBot.send_message(message.from_user.id, "Напиши артиста")