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
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
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
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()
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')