Beispiel #1
0
def artist(artist_id):
    top_songs = xbmcgui.ListItem(utils.translate(30066))
    top_songs.setArt({'thumb': thumbs.IMG_STAR, 'poster': thumbs.IMG_STAR})

    related_artists = xbmcgui.ListItem(utils.translate(30067))
    related_artists.setArt({
        'thumb': thumbs.IMG_ARTIST,
        'poster': thumbs.IMG_ARTIST
    })

    items = [
        (utils.build_url(url=URL,
                         paths=['browse', 'artist', artist_id, 'top-songs'],
                         r_path=True), top_songs, True),
        (utils.build_url(
            url=URL,
            paths=['browse', 'artist', artist_id, 'related-artists'],
            r_path=True), related_artists, True)
    ]

    info = GMUSIC.get_artist_info(artist_id=artist_id,
                                  include_albums=True,
                                  max_top_tracks=0,
                                  max_rel_artist=0)

    if 'albums' in info:
        albums = info['albums']
        albums.sort(key=itemgetter('name'))
        albums.sort(key=itemgetter('year'), reverse=True)

        items += listing.build_album_listitems(albums)
        listing.list_albums(items)

    else:
        listing.list_items([])
def my_library_playlists():
    # Auto playlists - "Thumbs up" and "Last added"

    thumbs_up = xbmcgui.ListItem(utils.translate(30027))
    thumbs_up.setArt({
        'thumb': thumbs.IMG_THUMB_UP,
        'poster': thumbs.IMG_THUMB_UP
    })

    last_added = xbmcgui.ListItem(utils.translate(30026))
    last_added.setArt({'thumb': thumbs.IMG_CLOCK, 'poster': thumbs.IMG_CLOCK})

    items = [
        (utils.build_url(
            url=URL,
            paths=['browse', 'my-library', 'playlist', 'thumbsup'],
            r_path=True,
            r_query=True), thumbs_up, True),
        (utils.build_url(
            url=URL,
            paths=['browse', 'my-library', 'playlist', 'lastadded'],
            r_path=True,
            r_query=True), last_added, True),
    ]

    # User playlists
    items += listing.build_playlist_listitems(GMUSIC.get_user_playlists())
    listing.list_playlists(items)
Beispiel #3
0
def list_network(network):
    items = []

    aa = addict.AudioAddict.get(PROFILE_DIR, network)
    xbmcplugin.setPluginCategory(HANDLE, aa.name)
    xbmcplugin.setContent(HANDLE, 'files')

    # Channels
    items.append((utils.build_path('channels', network),
                  xbmcgui.ListItem(utils.translate(30321)), True))

    # Shows
    if aa.network['has_shows']:
        items.append((utils.build_path('shows', network),
                      xbmcgui.ListItem(utils.translate(30322)), True))

        items.append((utils.build_path('shows', network, 'schedule'),
                      xbmcgui.ListItem(utils.translate(30332)), True))

    # Playlists
    if aa.network['has_playlists']:
        items.append((utils.build_path('playlists', network),
                      xbmcgui.ListItem(utils.translate(30338)), True))

    # Search
    items.append((utils.build_path('search', network),
                  xbmcgui.ListItem(utils.translate(30323)), True))

    utils.list_items(items)
Beispiel #4
0
def update_networks(network=None):
    networks = None
    if network:
        networks = [network]
    else:
        networks = addict.NETWORKS.keys()

    diag = xbmcgui.DialogProgress()
    diag.create(utils.translate(30312))

    quality_id = utils.get_quality_id(TEST_LOGIN_NETWORK)
    utils.logd('Got quality-id:', quality_id)

    for i, network in enumerate(networks):
        utils.logd('Updating network', network)
        aa = addict.AudioAddict.get(PROFILE_DIR, network)

        progress = i * 100 // len(networks)
        diag.update(progress, utils.translate(30313).format(aa.name))

        aa.get_channels(refresh=True)
        aa.get_favorite_channels(refresh=True)

        if aa.is_premium:
            utils.logd('Setting preferred quality')
            aa.preferred_quality(quality_id)

    diag.update(100, utils.translate(30314))
    diag.close()
Beispiel #5
0
def rate(track_id):
    rating = [
        utils.translate(30027),  # Thumbs up
        utils.translate(30028),  # No Thumbs
        utils.translate(30029),  # Thumbs down
    ]

    dialog = xbmcgui.Dialog()
    selection = dialog.select(utils.translate(30041), rating, 0)

    if selection == -1:
        return

    song = GMUSIC.get_track_info(track_id)

    if not song:
        return

    if selection == 0:
        GMUSIC.rate_songs(song, 5)

    elif selection == 1:
        GMUSIC.rate_songs(song, 0)

    elif selection == 2:
        GMUSIC.rate_songs(song, 1)

    utils.notify(utils.translate(30099), "")
Beispiel #6
0
def station(station_id=None,
            station_name=None,
            artist_id=None,
            album_id=None,
            track_id=None,
            genre_id=None,
            curated_station_id=None,
            playlist_token=None):

    if not station_id:
        station_id = GMUSIC.create_station(
            name=station_name,
            artist_id=artist_id,
            album_id=album_id,
            track_id=track_id,
            genre_id=genre_id,
            curated_station_id=curated_station_id,
            playlist_token=playlist_token)

        if not station_id:
            utils.notify(utils.translate(30050), utils.translate(30051))
            return

    tracks = GMUSIC.get_station_tracks(station_id=station_id, num_tracks=25)

    items = listing.build_song_listitems(tracks=tracks, station_id=station_id)
    listing.list_songs(items)
    def _make_call(self, protocol, *args, **kwargs):
        try:
            return super(GMusic, self)._make_call(protocol, *args, **kwargs)

        except:
            utils.notify(utils.translate(30050), utils.translate(30051))
            utils.log(traceback.format_exc(), lvl=xbmc.LOGERROR)
            return None
Beispiel #8
0
def listen_now():
    ifl = xbmcgui.ListItem(utils.translate(30045))
    ifl.setArt({'thumb': thumbs.IMG_IFL, 'poster': thumbs.IMG_IFL})

    albums = xbmcgui.ListItem(utils.translate(30023))
    albums.setArt({'thumb': thumbs.IMG_ALBUM, 'poster': thumbs.IMG_ALBUM})

    stations = xbmcgui.ListItem(utils.translate(30021))
    stations.setArt({
        'thumb': thumbs.IMG_STATION,
        'poster': thumbs.IMG_STATION
    })

    playlists = xbmcgui.ListItem(utils.translate(30020))
    playlists.setArt({
        'thumb': thumbs.IMG_PLAYLIST,
        'poster': thumbs.IMG_PLAYLIST
    })

    items = [
        (utils.build_url(url=URL,
                         paths=['play', 'station'],
                         queries={'station_id': 'IFL'},
                         r_path=True,
                         r_query=True), ifl, False),
        (utils.build_url(URL, ['albums']), albums, True),
        (utils.build_url(URL, ['stations']), stations, True),
        (utils.build_url(URL, ['playlists']), playlists, True),
    ]

    # Only fetch new information if one full hour has passed
    # to keep things speedy on slow devices
    try:
        last_check = ADDON.getSetting('listen_now_last_update')

    except:
        last_check = -1

    from_cache = True
    if last_check != time.strftime('%Y%m%d%H'):
        from_cache = False
        ADDON.setSetting('listen_now_last_update', time.strftime('%Y%m%d%H'))

    primary_header, situations = gmusic.get_listen_now_situations(from_cache)

    if primary_header and situations:
        situations = xbmcgui.ListItem(primary_header)
        situations.setArt({
            'thumb': thumbs.IMG_ALBUM,
            'poster': thumbs.IMG_ALBUM
        })

        # Add Situations after IFL
        items.insert(1,
                     (utils.build_url(URL, ['situations']), situations, True))

    listing.list_items(items)
Beispiel #9
0
def my_library_update():
    utils.notify(utils.translate(30030), utils.translate(30043))

    GMUSIC.get_my_library_songs(from_cache=False)
    GMUSIC.get_my_library_artists(from_cache=False)
    GMUSIC.get_my_library_albums(from_cache=False)

    utils.notify(utils.translate(30030), utils.translate(30044))

    xbmc.executebuiltin('Container.Refresh')
Beispiel #10
0
def browse_stations_station(station_name, curated_station_id):
    station_id = GMUSIC.create_station(
        name=station_name, curated_station_id=curated_station_id)

    if not station_id:
        utils.notify(utils.translate(30050), utils.translate(30051))
        return

    items = listing.build_song_listitems(
        GMUSIC.get_station_tracks(station_id=station_id, num_tracks=25))
    listing.list_songs(items)
Beispiel #11
0
def top_charts():
    songs = xbmcgui.ListItem(utils.translate(30024))
    songs.setArt({'thumb': thumbs.IMG_TRACK, 'poster': thumbs.IMG_TRACK})

    albums = xbmcgui.ListItem(utils.translate(30023))
    albums.setArt({'thumb': thumbs.IMG_ALBUM, 'poster': thumbs.IMG_ALBUM})

    items = [(utils.build_url(URL, ['songs']), songs, True),
             (utils.build_url(URL, ['albums']), albums, True)]

    listing.list_items(items)
Beispiel #12
0
def my_library_add(album_id=None, track_id=None):
    if track_id:
        GMUSIC.add_store_track(track_id)

    elif album_id:
        album = GMUSIC.get_album_info(album_id=album_id, include_tracks=True)
        for track in album['tracks']:
            if 'storeId' in track:
                GMUSIC.add_store_track(track['storeId'])

    if xbmcgui.Dialog().yesno(heading=utils.translate(30030),
                              line1=utils.translate(30065)):
        my_library_update()
Beispiel #13
0
def search(network, filter_=None, query=None, page=1):
    aa = addict.AudioAddict.get(PROFILE_DIR, network)
    xbmcplugin.setPluginCategory(HANDLE, aa.name)

    per_page = ADDON.getSettingInt('aa.shows_per_page')

    if not query:
        k = xbmc.Keyboard(heading=utils.translate(30323))
        k.doModal()
        if not k.isConfirmed():
            return False
        query = k.getText()

    if not aa.network['has_shows']:
        filter_ = 'channels'

    items = []
    if not filter_:
        # Channels
        items.append((utils.build_path('search', network, 'channels', query),
                      xbmcgui.ListItem(utils.translate(30321)), True))

        # Shows
        items.append((utils.build_path('search', network, 'shows', query),
                      xbmcgui.ListItem(utils.translate(30322)), True))

    else:
        if filter_ == 'channels':
            channels = aa.search_channels(query, page=page)
            if channels:
                items = list_channels(network,
                                      channels=channels,
                                      do_list=False)

        elif filter_ == 'shows':
            for show in aa.search_shows(query, page).get('results', []):
                item = utils.build_show_item(network, show)
                items.append((item.getPath(), item, True))

        if filter_ and len(items) >= per_page:
            items.append((
                utils.build_path('search',
                                 network,
                                 query,
                                 filter_,
                                 page=page + 1),
                xbmcgui.ListItem(utils.translate(30318)),
                True,
            ))

    utils.list_items(items)
Beispiel #14
0
def my_library_playlist_add(playlist_id=None, album_id=None, track_id=None):
    # In case no playlist_id is specified we guide the user through
    # the process of selecting one.
    # He will also have the ability to create a new one
    if not playlist_id:
        action_dialog = xbmcgui.Dialog()
        playlists = GMUSIC.get_user_playlists()

        playlist_names = []
        playlist_ids = []
        for playlist in playlists:
            if playlist['type'] != 'USER_GENERATED':
                continue

            playlist_names.append(playlist['name'])
            playlist_ids.append(playlist['id'])

        playlist_names.insert(0, utils.translate(30052))
        selection = action_dialog.select(utils.translate(30020),
                                         playlist_names, 0)
        if selection == -1:
            return

        if selection == 0:
            keyboard = xbmc.Keyboard()
            keyboard.doModal()

            if keyboard.isConfirmed() and keyboard.getText():
                playlist_id = GMUSIC.create_playlist(name=keyboard.getText())
        else:
            playlist_id = playlist_ids[selection - 1]

    if playlist_id:
        if track_id:
            GMUSIC.add_songs_to_playlist(playlist_id=playlist_id,
                                         song_ids=track_id)

        elif album_id:
            album = GMUSIC.get_album_info(album_id=album_id,
                                          include_tracks=True)

            track_ids = []
            for track in album['tracks']:
                if 'storeId' in track:
                    track_ids.append(track['storeId'])

            GMUSIC.add_songs_to_playlist(playlist_id=playlist_id,
                                         song_ids=track_ids)
Beispiel #15
0
def list_episodes(network, slug, page=1):
    aa = addict.AudioAddict.get(PROFILE_DIR, network)
    xbmcplugin.setContent(HANDLE, 'songs')
    xbmcplugin.setPluginCategory(HANDLE, aa.name)

    per_page = ADDON.getSettingInt('aa.shows_per_page')

    items = []
    for ep in aa.get_show_episodes(slug, page, per_page):
        tracks = ep.get('tracks', [])
        if not tracks:
            continue

        item = utils.build_track_item(tracks[0])
        item = utils.add_aa_art(item, ep.get('show'))

        items.append((item.getPath(), item, False))

    if len(items) >= per_page:
        items.append((
            utils.build_path('episodes', network, slug, page=page + 1),
            xbmcgui.ListItem(utils.translate(30318)),
            True,
        ))

    utils.list_items(items)
Beispiel #16
0
def unfollow(network, slug, show_name=''):
    aa = addict.AudioAddict.get(PROFILE_DIR, network)

    with utils.busy_dialog():
        aa.unfollow_show(slug)
        utils.notify(utils.translate(30337).format(show_name))

    xbmc.executebuiltin('Container.Refresh')
Beispiel #17
0
def my_library_remove(album_id=None, track_id=None):
    if not album_id and not track_id:
        return

    if not xbmcgui.Dialog().yesno(heading=utils.translate(30061),
                                  line1=utils.translate(30063)):
        return

    if album_id:
        GMUSIC.delete_album(album_id)

    elif track_id:
        GMUSIC.delete_songs([track_id])

    if xbmcgui.Dialog().yesno(heading=utils.translate(30030),
                              line1=utils.translate(30065)):
        my_library_update()
Beispiel #18
0
def unfavorite(network, channel, channel_name=''):
    aa = addict.AudioAddict.get(PROFILE_DIR, network)

    with utils.busy_dialog():
        aa.remove_favorite(channel)
        utils.notify(utils.translate(30329).format(channel_name))

    xbmc.executebuiltin('Container.Refresh')
def my_library_artist(artist_id):
    if artist_id:
        top_songs = xbmcgui.ListItem(utils.translate(30066))
        top_songs.setArt({'thumb': thumbs.IMG_STAR, 'poster': thumbs.IMG_STAR})

        related_artists = xbmcgui.ListItem(utils.translate(30067))
        related_artists.setArt({
            'thumb': thumbs.IMG_ARTIST,
            'poster': thumbs.IMG_ARTIST
        })

        all_albums = xbmcgui.ListItem(utils.translate(30098))
        all_albums.setArt({
            'thumb': thumbs.IMG_ALBUM,
            'poster': thumbs.IMG_ALBUM
        })

        items = [
            (utils.build_url(
                url=URL,
                paths=['browse', 'artist', artist_id, 'top-songs'],
                r_path=True,
                r_query=True,
            ), top_songs, True),
            (utils.build_url(
                url=URL,
                paths=['browse', 'artist', artist_id, 'related-artists'],
                r_path=True,
                r_query=True,
            ), related_artists, True),
            (utils.build_url(
                url=URL,
                paths=['browse', 'artist', artist_id],
                r_path=True,
                r_query=True,
            ), all_albums, True),
        ]

        albums = GMUSIC.get_user_artist_albums(artist_id=artist_id)
        albums.sort(key=itemgetter('name'))
        albums.sort(key=itemgetter('year'), reverse=True)

        items += listing.build_album_listitems(albums, True)

        listing.list_albums(items)
def build_artist_listitems(artists, my_library=False):
    items = []
    for artist in artists:
        # Applies to e.g. search results
        if 'artist' in artist:
            artist = artist['artist']

        if 'artistId' not in artist or 'name' not in artist:
            continue

        artist_id = artist['artistId']
        artist_name = artist['name']
        artist_art = thumbs.IMG_ARTIST_FLAT
        if 'artistArtRef' in artist:
            artist_art = artist['artistArtRef']

        item = xbmcgui.ListItem(artist_name)

        item.setArt({
            'thumb': artist_art,
            'poster': artist_art,
            # 'fanart' : artist_art + '=s1920'
        })

        item.setInfo('music', {
            'mediatype': 'artist',
            'artist': artist_name,
        })

        item.addContextMenuItems(items=[(
            utils.translate(30036), 'XBMC.RunPlugin(%s)' %
            utils.build_url(url=URL,
                            paths=['play', 'station'],
                            queries={
                                'station_name': artist_name.encode('utf-8'),
                                'artist_id': artist_id
                            },
                            r_path=True,
                            r_query=True))])

        # My Library entries differ from normal AllAcces ones as users are able
        # to add only parts of the item to there library
        if my_library:
            items.append((utils.build_url(
                url=URL,
                paths=['browse', 'my-library', 'artist', artist_id],
                r_path=True,
                r_query=True), item, True))

        else:
            items.append(
                (utils.build_url(url=URL,
                                 paths=['browse', 'artist', artist_id],
                                 r_path=True,
                                 r_query=True), item, True))

    return items
Beispiel #21
0
def logout():
    for network in addict.NETWORKS.keys():
        addict.AudioAddict.get(PROFILE_DIR, network).logout()

    utils.clear_cache()

    ADDON.setSetting('aa.email', '')
    utils.notify(utils.translate(30306))
    sys.exit(0)
Beispiel #22
0
def list_playlist_menu(network):
    aa = addict.AudioAddict.get(PROFILE_DIR, network)
    xbmcplugin.setPluginCategory(HANDLE, aa.name)

    items = []

    # Popular Playlists
    items.append((utils.build_path('playlists', network, 'popular'),
                  xbmcgui.ListItem(utils.translate(30339)), True))

    # Newest Playlists
    items.append((utils.build_path('playlists', network, 'newest'),
                  xbmcgui.ListItem(utils.translate(30340)), True))

    # Followed Playlists
    items.append((utils.build_path('playlists', network, 'followed'),
                  xbmcgui.ListItem(utils.translate(30341)), True))

    utils.list_items(items)
Beispiel #23
0
def list_shows_schedule(network, page=1):
    aa = addict.AudioAddict.get(PROFILE_DIR, network)
    xbmcplugin.setPluginCategory(HANDLE, aa.name)

    shows = aa.get_upcoming()
    shows = sorted(shows, key=lambda s: s['start_at'])

    # Shows for "get_upcoming" have "following" always set to False
    # Have to work around this for now :/
    followed_shows = aa.get_shows_followed()
    followed_slugs = [s.get('slug') for s in followed_shows]

    now = addict.datetime_now()
    active = utils.get_playing() or {}
    utils.log('active item', active)
    items = []
    for show in shows:
        end_at = addict.parse_datetime(show.get('end_at'))

        if end_at < now:
            continue

        start_at = addict.parse_datetime(show.get('start_at'))

        show = show.get('show', {})
        channel = show.get('channels', [])[0]

        item = utils.build_show_item(network, show, followed_slugs)
        item.setPath(
            utils.build_path('play',
                             'channel',
                             network,
                             channel.get('key'),
                             live=show.get('now_playing', False)))

        if show.get('now_playing', False):
            label_prefix = utils.translate(30333)  # Live now

            item.setProperty('IsPlayable', 'false')

            if (active.get('is_live', False)
                    and active.get('channel') == channel.get('key')):
                item.select(True)
        else:
            label_prefix = '{} - {}'.format(start_at.strftime('%H:%M'),
                                            end_at.strftime('%H:%M'))

        item.setLabel('[B]{}[/B] - {} [I]({})[/I]'.format(
            label_prefix, _enc(show.get('name')), _enc(channel.get('name'))))

        items.append((item.getPath(), item, False))

    utils.list_items(items)
def my_library():
    playlists = xbmcgui.ListItem(utils.translate(30020))
    playlists.setArt({
        'thumb': thumbs.IMG_PLAYLIST,
        'poster': thumbs.IMG_PLAYLIST
    })

    stations = xbmcgui.ListItem(utils.translate(30021))
    stations.setArt({
        'thumb': thumbs.IMG_STATION,
        'poster': thumbs.IMG_STATION
    })

    artists = xbmcgui.ListItem(utils.translate(30022))
    artists.setArt({'thumb': thumbs.IMG_ARTIST, 'poster': thumbs.IMG_ARTIST})

    albums = xbmcgui.ListItem(utils.translate(30023))
    albums.setArt({'thumb': thumbs.IMG_ALBUM, 'poster': thumbs.IMG_ALBUM})

    songs = xbmcgui.ListItem(utils.translate(30024))
    songs.setArt({'thumb': thumbs.IMG_TRACK, 'poster': thumbs.IMG_TRACK})
    genres = xbmcgui.ListItem(utils.translate(30025))
    genres.setArt({'thumb': thumbs.IMG_GENRE, 'poster': thumbs.IMG_GENRE})

    items = [
        (utils.build_url(URL, ['playlists']), playlists, True),
        (utils.build_url(URL, ['stations']), stations, True),
        (utils.build_url(URL, ['artists']), artists, True),
        (utils.build_url(URL, ['albums']), albums, True),
        (utils.build_url(URL, ['songs']), songs, True),
        (utils.build_url(URL, ['genres']), genres, True),
    ]

    listing.list_items(items)
    def login(self):
        # Set Kodis locale to super class
        locale_code = xbmc.getLanguage(xbmc.ISO_639_1)
        locale_code = locale.normalize(locale_code).split('.')[0]
        if not locale_code:
            locale_code = 'en_US'

        self.locale = locale_code

        if self._is_logged_in and not self._should_test_login():
            return True

        username = ADDON.getSetting('username')
        password = ADDON.getSetting('password')
        device_id = ADDON.getSetting('device_id')
        authtoken = ADDON.getSetting('authtoken')

        if authtoken:
            self.android_id = device_id
            self.session._authtoken = authtoken
            self.session.is_authenticated = True

            ADDON.setSetting('last_login_check', str(int(time.time())))
            try:
                # Send a test request to ensure our authtoken
                # is still valide and working
                self.get_registered_devices()
                self._is_logged_in = True
                return True

            except:
                # Faild with the test-request so we set
                # "is_authenticated=False" and go through the login-process
                # again to get a new "authtoken"
                self.session.is_authenticated = False

        if device_id:
            success = super(GMusic, self).login(username, password, device_id,
                                                self.locale)

            if success:
                ADDON.setSetting('authtoken', self.session._authtoken)
                self._is_logged_in = True
                return True

        utils.notify(utils.translate(30048), '')
        ADDON.setSetting('is_setup', 'false')

        # Prevent further addon execution in case we failed with the login-process
        raise SystemExit
Beispiel #26
0
def list_shows_menu(network):
    aa = addict.AudioAddict.get(PROFILE_DIR, network)
    xbmcplugin.setPluginCategory(HANDLE, aa.name)

    items = []

    # Followed Shows
    items.append((utils.build_path('shows', network, 'followed'),
                  xbmcgui.ListItem(utils.translate(30324)), True))

    # By Style
    items.append((utils.build_path('shows', network, 'fields',
                                   'channel_filter_name'),
                  xbmcgui.ListItem(utils.translate(30325)), True))

    # By Channel
    items.append((utils.build_path('shows', network, 'fields', 'channel_name'),
                  xbmcgui.ListItem(utils.translate(30316)), True))

    # Schedule
    items.append((utils.build_path('shows', network, 'schedule'),
                  xbmcgui.ListItem(utils.translate(30332)), True))

    utils.list_items(items)
Beispiel #27
0
def list_networks():
    items = []

    for key, data in addict.NETWORKS.items():
        item = xbmcgui.ListItem(data['name'])
        item.setArt({
            'thumb':
            os.path.join(ADDON_DIR, 'resources', 'assets', key + '.png'),
        })

        item.addContextMenuItems([
            (utils.translate(30307), 'RunPlugin({})'.format(
                utils.build_path('refresh', key))),
        ], True)

        items.append((utils.build_path('networks', key), item, True))

    utils.list_items(items)
Beispiel #28
0
def setup(notice=True, update_cache=False):
    for network in addict.NETWORKS.keys():
        addict.AudioAddict.get(PROFILE_DIR, network).logout()

    aa = addict.AudioAddict.get(PROFILE_DIR, TEST_LOGIN_NETWORK)

    ADDON.setSetting('aa.email', '')

    if notice:
        xbmcgui.Dialog().textviewer(utils.translate(30300),
                                    utils.translate(30301))

    k = xbmc.Keyboard(aa.member.get('email', ''), utils.translate(30319))
    k.doModal()
    if not k.isConfirmed():
        return False
    username = k.getText()

    k = xbmc.Keyboard('', utils.translate(30320), True)
    k.doModal()
    if not k.isConfirmed():
        return False
    password = k.getText()

    if not aa.login(username, password):
        if xbmcgui.Dialog().yesno(utils.translate(30309),
                                  utils.translate(30310)):
            return setup(False, update_cache)
        return False

    ADDON.setSetting('aa.email', username)

    utils.notify(utils.translate(30304), utils.translate(30305))
    if not aa.is_premium:
        utils.go_premium()
        ADDON.setSettingInt('addon.last_premium_prompt', int(time.time()))

    if update_cache:
        update_networks()

    return True
Beispiel #29
0
def list_shows(network, facet='All', page=1):
    aa = addict.AudioAddict.get(PROFILE_DIR, network)
    xbmcplugin.setPluginCategory(HANDLE, aa.name)

    per_page = ADDON.getSettingInt('aa.shows_per_page')
    shows = aa.get_shows(facet, page=page, per_page=per_page)

    items = []
    for show in shows:
        item = utils.build_show_item(network, show)
        items.append((item.getPath(), item, True))

    if len(items) >= per_page:
        items.append((
            utils.build_path('shows', network, 'followed', page=page + 1),
            xbmcgui.ListItem(utils.translate(30318)),
            True,
        ))

    utils.list_items(items)
Beispiel #30
0
def search_history():
    history = _get_search_history()

    # Add "New Search" to the list
    item = xbmcgui.ListItem(utils.translate(30053))
    item.setArt({'thumb': thumbs.IMG_SEARCH, 'poster': thumbs.IMG_SEARCH})

    items = [(utils.build_url(url=URL,
                              paths=['search', 'new'],
                              r_path=True,
                              r_query=True), item, True)]

    for hist in history:
        item = xbmcgui.ListItem(hist)
        item.setArt({'thumb': thumbs.IMG_SEARCH, 'poster': thumbs.IMG_SEARCH})

        items.append((utils.build_url(url=URL,
                                      paths=['search', hist],
                                      r_path=True,
                                      r_query=True), item, True))

    listing.list_items(items)