Example #1
0
 def SearchDialog(self):
     modeselect = []
     modeselect.append(__language__(32024))
     modeselect.append(__language__(32004))
     modeselect.append(__language__(32023))
     modeselect.append(__language__(32033))
     modeselect.append(__language__(32019))
     dialogSelection = xbmcgui.Dialog()
     provider_index = dialogSelection.select(__language__(32026), modeselect)
     if not provider_index < 0:
         if modeselect[provider_index] == __language__(32024):
             self.SearchLocation()
             itemlist = []
         elif modeselect[provider_index] == __language__(32004):
             query = xbmcgui.Dialog().input(__language__(32022), type=xbmcgui.INPUT_ALPHANUM)
             FS = FourSquare()
             itemlist, self.PinString = FS.GetPlacesList(self.lat, self.lon, query)
         elif modeselect[provider_index] == __language__(32023):
             artist = xbmcgui.Dialog().input(__language__(32025), type=xbmcgui.INPUT_ALPHANUM)
             LFM = LastFM()
             results = LFM.GetArtistEvents(artist)
             itemlist, self.PinString = LFM.CreateVenueList(results)
         elif modeselect[provider_index] == __language__(32033):
             venue = xbmcgui.Dialog().input(__language__(32025), type=xbmcgui.INPUT_ALPHANUM)
             LFM = LastFM()
             venueid = LFM.GetVenueID(venue)
             results = LFM.GetVenueEvents(venueid)
             itemlist, self.PinString = LFM.CreateVenueList(results)
         elif modeselect[provider_index] == __language__(32019):
             self.PinString = ""
             itemlist = []
         FillListControl(self.venuelist, itemlist)
         self.street_view = False
Example #2
0
 def SelectPlacesProvider(self):
     setWindowProperty(self.window, 'index', "")
     modeselect = []
     itemlist = None
     modeselect.append(__language__(32016))  # concerts
     modeselect.append(__language__(32017))  # festivals
     modeselect.append(__language__(32027))  # geopics
     modeselect.append(__language__(32028))  # eventful
     modeselect.append(__language__(32029))  # FourSquare
     modeselect.append(__language__(32030))  # MapQuest
     modeselect.append(__language__(32031))  # Google Places
     modeselect.append(__language__(32019))  # reset
     dialogSelection = xbmcgui.Dialog()
     provider_index = dialogSelection.select(__language__(32020), modeselect)
     if not provider_index < 0:
         if modeselect[provider_index] == __language__(32031):
             GP = GooglePlaces()
             category = GP.SelectCategory()
             if category is not None:
                 self.PinString, itemlist = GP.GetGooglePlacesList(self.lat, self.lon, self.radius * 1000, category)
         elif modeselect[provider_index] == __language__(32029):
             FS = FourSquare()
             section = FS.SelectSection()
             if section is not None:
                 itemlist, self.PinString = FS.GetPlacesListExplore(self.lat, self.lon, section)
         elif modeselect[provider_index] == __language__(32016):
             LFM = LastFM()
             category = LFM.SelectCategory()
             if category is not None:
                 results = LFM.GetNearEvents(self.lat, self.lon, self.radius, category)
                 itemlist, self.PinString = LFM.CreateVenueList(results)
         elif modeselect[provider_index] == __language__(32030):
             MQ = MapQuest()
             itemlist, self.PinString = MQ.GetItemList(self.lat, self.lon, self.zoom_level)
         elif modeselect[provider_index] == __language__(32017):
             LFM = LastFM()
             category = LFM.SelectCategory()
             if category is not None:
                 results = LFM.GetNearEvents(self.lat, self.lon, self.radius, category, True)
                 itemlist, self.PinString = LFM.CreateVenueList(results)
         elif modeselect[provider_index] == __language__(32027):
             folder_path = xbmcgui.Dialog().browse(0, __language__(32021), 'pictures')
             setWindowProperty(self.window, 'imagepath', folder_path)
             itemlist, self.PinString = GetImages(folder_path)
         elif modeselect[provider_index] == __language__(32028):
             EF = Eventful()
             category = EF.SelectCategory()
             if category is not None:
                 itemlist, self.PinString = EF.GetEventfulEventList(self.lat, self.lon, "", category, self.radius)
         elif modeselect[provider_index] == __language__(32019):
             self.PinString = ""
             itemlist = []
         if itemlist is not None:
             FillListControl(self.venuelist, itemlist)
         self.street_view = False
    def onClick(self, controlID):
        if controlID == self.C_ARTIST_LIST:
            artist = self.getControl(
                self.C_ARTIST_LIST).getSelectedItem().getProperty("artists")
            self.close()
            LFM = LastFM()
            self.GetEventsitemlist, self.GetEventsPinString = LFM.GetEvents(
                artist)
        elif controlID == 1001:

            self.close()
            log("show artist events on map")
            if xbmc.getInfoLabel("Window.IsActive()"):
                pass
            # artist = "65daysofstatic"
            # LFM = LastFM()
            # log("search for artist")
            # itemlist, self.PinString = LFM.GetEvents(artist)
            # gui.c_places_list.reset()
            # gui.GetGoogleMapURLs()
            # gui.c_places_list.addItems(items=itemlist)
            else:
                xbmc.executebuiltin(
                    "RunScript(script.maps.browser,artist=%s)" %
                    (xbmc.getInfoLabel("Window(home).Property(headliner)")))
        elif controlID == 1002:
            pass
Example #4
0
    def get_album_art(self, song):
        try:
            last_fm = LastFM()
            link = last_fm.get_album_art_last_fm(song)
            if link:
                return link
        except Exception as e:
            logger.debug(e)
            # traceback.print_exc()
            pass
        logger.debug("Error in getting AlbumArt from Last.FM. Trying Discogs")

        try:
            discogs = Discogs()
            link = discogs.get_album_art_discogs(song)
            if link:
                return link
        except Exception as e:
            logger.debug(e)
            # traceback.print_exc()
            pass
        logger.debug("Error in getting AlbumArt from Discogs. Trying Google")

        try:
            google_search = GoogleSearch()
            link = google_search.get_album_art_google(song.artist + ' - ' +
                                                      song.title)
            if link:
                return link
        except Exception as e:
            logger.debug(e)
            traceback.print_exc()
            pass
        logger.debug("Error in getting AlbumArt from Google. Skipping..")
        return None
Example #5
0
    def fix_id3(self, song):
        logger.debug(u'Writing ID3 tags to {}...'.format(song.full_title))
        try:
            audiofile = self.open_id3_tag(song.full_title)
            if audiofile.tag is None:
                audiofile.tag = eyed3.id3.Tag()
        ## Getting Lyrics from LyricsWikia
            try:
                logger.debug(u'Getting Lyrics for {} from LyricsWikia'.format(
                    song.full_title))
                lyrics = PyLyrics.getLyrics(song.artist, song.title)
                audiofile.tag.lyrics.set(u'' + lyrics)
            except ValueError as e:
                logger.warning(e.message)

            logger.debug(
                u"Writing these to tags: artist:{}, Track name: {}, Album Name: {}"
                .format(song.artist, song.title, song.album))
            artist = song.artist.strip()
            track_name = song.title.strip()
            if song.album:
                album_name = song.album.strip()
            else:
                album_name = ""
            # print (artist,track_name,album_name)

            audiofile.tag.artist = unicode(artist)
            audiofile.tag.album_artist = unicode(artist)
            audiofile.tag.title = unicode(track_name)
            audiofile.tag.album = unicode(album_name)

            last_fm = LastFM()
            genre = last_fm.get_genre_from_last_fm(song)
            if genre:
                audiofile.tag.genre = unicode(genre)
            else:
                logger.warning('Genre not found for {}'.format(
                    song.full_title))

            try:
                logger.debug("Getting AlbumArt from Discogs/LastFM/Google...")
                image_link = self.get_album_art(song)
                imagedata = requests.get(image_link).content
                audiofile.tag.images.set(0, imagedata, "image/jpeg",
                                         u"Album Art")
            except Exception as e:
                logger.error(
                    "Error in getting AlbumArt. Won't be saved to Tag")
                logger.debug(e)

            audiofile.tag.save()
            logger.info(u'ID3 Tags written and saved to {}...'.format(
                song.full_title))

        except IOError:
            logger.error(u"Can't open file. ID3 tags skipped:{}".format(
                song.full_title))
        except Exception as e:
            logger.exception("Something awful has happened")
            logger.debug(e)
 def onInit(self):
     LFM = LastFM()
     self.itemlist, PinString = LFM.GetVenueEvents(self.venueid)
     self.prop_list = simplejson.loads(
         self.itemlist[0].getProperty("item_info"))
     self.setControls()
Example #7
0
 def onInit(self, startGUI=True):
     log('onInit')
     itemlist = []
     self.init_vars()
     log("WindowID:" + str(xbmcgui.getCurrentWindowId()))
     self.window = xbmcgui.Window(xbmcgui.getCurrentWindowId())
     log("window = " + str(self.window))
     setWindowProperty(self.window, 'NavMode', '')
     setWindowProperty(self.window, 'streetview', '')
     if __addon__.getSetting("VenueLayout") == "1":
         setWindowProperty(self.window, 'ListLayout', '1')
     else:
         setWindowProperty(self.window, 'ListLayout', '0')
     for arg in sys.argv:
         param = arg.lower()
         log("param = " + param)
         if param.startswith('location='):
             self.location = param[9:]
         elif param.startswith('lat='):
             self.strlat = param[4:]
         elif param.startswith('lon='):
             self.strlon = param[4:]
         elif param.startswith('type='):
             self.type = param[5:]
         elif param.startswith('zoom='):
             self.zoom_level = param[5:]
         elif param.startswith('aspect='):
             self.aspect = param[7:]
         elif param.startswith('folder='):
             folder = param[7:]
             itemlist, self.PinString = self.GetImages(folder)
         elif param.startswith('artist='):
             artist = param[7:]
             LFM = LastFM()
             results = LFM.GetArtistEvents(artist)
             itemlist, self.PinString = LFM.CreateVenueList(results)
         elif param.startswith('list='):
             listtype = param[5:]
             self.zoom_level = 14
             if listtype == "nearfestivals":
                 LFM = LastFM()
                 results = LFM.GetNearEvents(self.lat, self.lon, self.radius, "", True)
                 itemlist, self.PinString = LFM.CreateVenueList(results)
             elif listtype == "nearconcerts":
                 LFM = LastFM()
                 results = LFM.GetNearEvents(self.lat, self.lon, self.radius)
                 itemlist, self.PinString = LFM.CreateVenueList(results)
         elif param.startswith('direction='):
             self.direction = param[10:]
         elif param.startswith('prefix='):
             self.prefix = param[7:]
             if not self.prefix.endswith('.') and self.prefix != "":
                 self.prefix = self.prefix + '.'
         # get lat / lon values
     if self.location == "geocode":
         self.lat, self.lon = ParseGeoTags(self.strlat, self.strlon)
     elif (self.location == "") and (self.strlat == ""):  # both empty
         self.lat, self.lon = GetLocationCoordinates()
         self.zoom_level = 2
     elif (not self.location == "") and (self.strlat == ""):  # latlon empty
         self.lat, self.lon = self.GetGeoCodes(False, self.location)
     else:
         self.lat = float(self.strlat)
         self.lon = float(self.strlon)
     self.GetGoogleMapURLs()
     if startGUI:
         self.venuelist = self.getControl(self.CONTROL_PLACES_LIST)
         self.GetGoogleMapURLs()
         FillListControl(self.venuelist, itemlist)
         self.window.setProperty("map_image", self.GoogleMapURL)
         self.window.setProperty("streetview_image", self.GoogleStreetViewURL)
         settings = xbmcaddon.Addon(id='script.maps.browser')
         if not settings.getSetting('firststart') == "true":
             settings.setSetting(id='firststart', value='true')
             dialog = xbmcgui.Dialog()
             dialog.ok(__language__(32001), __language__(32002), __language__(32003))
     log('onInit finished')