예제 #1
0
def search_results_keyboard(results, page, per_page=5):
    kb = InlineKeyboardMarkup(2)
    total_pages = ceil(len(results) / per_page)
    start = (page - 1) * per_page
    stop = start + per_page
    last_page = page == total_pages
    for i, result in enumerate(results[start:stop], start=start):
        kb.insert(
            InlineKeyboardButton(
                f'{i+1}. {result.artist.name} - {result.title}',
                callback_data=new_callback('track_deezer', result.id, 'send')))
        kb.row()
    if page != 1:
        kb.insert(
            InlineKeyboardButton('◀️',
                                 callback_data=new_callback('page', page - 1)))
    if not last_page:
        kb.insert(
            InlineKeyboardButton('️️▶️',
                                 callback_data=new_callback('page', page + 1)))
    kb.row(
        InlineKeyboardButton(text='Deezer ✅',
                             callback_data=new_callback('page', 1)),
        InlineKeyboardButton(text='SoundCloud ☑️',
                             callback_data=new_callback('sc_page', 1)))
    return kb
예제 #2
0
def sc_artist_keyboard(artist):
    kb = InlineKeyboardMarkup(2)
    kb.insert(InlineKeyboardButton('Tracks', callback_data=new_callback('sc_artist', artist.id, 'tracks')))
    kb.insert(InlineKeyboardButton('Playlists', callback_data=new_callback('sc_artist', artist.id, 'playlists')))
    kb.insert(InlineKeyboardButton('Likes', callback_data=new_callback('sc_artist', artist.id, 'likes')))
    kb.insert(InlineKeyboardButton('Search on Last.Fm', url=str(URL(f'https://www.last.fm/search?q={artist.username}'))))
    return kb
예제 #3
0
def artist_keyboard(artist):
    kb = InlineKeyboardMarkup(2)
    kb.insert(
        InlineKeyboardButton('Top 10 Tracks',
                             callback_data=new_callback(
                                 'dz_artist', artist.id, 'top10')))
    kb.insert(
        InlineKeyboardButton('Albums',
                             callback_data=new_callback(
                                 'dz_artist', artist.id, 'albums')))
    kb.insert(
        InlineKeyboardButton('Related artists',
                             callback_data=new_callback(
                                 'dz_artist', artist.id, 'related')))
    kb.insert(
        InlineKeyboardButton('Radio',
                             callback_data=new_callback(
                                 'dz_artist', artist.id, 'radio')))
    kb.insert(
        InlineKeyboardButton('Wikipedia',
                             callback_data=new_callback(
                                 'dz_artist', artist.id, 'wiki')))
    kb.insert(
        InlineKeyboardButton(
            'Search on Last.Fm',
            url=str(URL(f'https://www.last.fm/search?q={artist.name}'))))
    kb.insert(InlineKeyboardButton(text='Close', callback_data='delete'))

    return kb
예제 #4
0
def profile_keyboard(tracks, profile_id, page, per_page=7):
    kb = InlineKeyboardMarkup(2)
    total_pages = ceil(len(tracks) / per_page)
    start = (page - 1) * per_page
    stop = start + per_page
    last_page = page == total_pages

    for i, track in enumerate(tracks[start:stop], start=start):
        kb.row(
            InlineKeyboardButton(f'{i+1}. {track.artist} - {track.title}',
                                 callback_data=new_callback(
                                     'vk_track', track.full_id, 'send')))
    kb.row()
    if page != 1:
        kb.insert(
            InlineKeyboardButton('◀️',
                                 callback_data=new_callback(
                                     'vk_profile_audio_page', profile_id,
                                     page - 1)))
    if not last_page:
        kb.insert(
            InlineKeyboardButton('️️▶️',
                                 callback_data=new_callback(
                                     'vk_profile_audio_page', profile_id,
                                     page + 1)))
    return kb
예제 #5
0
def playlist_keyboard(playlist, show_artists=False, post=False):
    kb = InlineKeyboardMarkup(1)
    for i, track in enumerate(playlist.tracks[:97], start=1):
        if show_artists:
            kb.insert(
                InlineKeyboardButton(f'{i}.{track.artist} - {track.title}',
                                     callback_data=new_callback(
                                         'vk_track', track.full_id, 'send')))
        else:
            kb.insert(
                InlineKeyboardButton(f'{i}. {track.title}',
                                     callback_data=new_callback(
                                         'vk_track', track.full_id, 'send')))

    kb.insert(
        InlineKeyboardButton('Get all tracks',
                             callback_data=new_callback(
                                 'vk_playlist', playlist.full_id, 'download')))
    if post:
        kb.insert(
            InlineKeyboardButton('Post',
                                 callback_data=new_callback(
                                     'vk_playlist', playlist.full_id, 'post')))
    kb.insert(InlineKeyboardButton(text='Close', callback_data='close'))
    return kb
예제 #6
0
def albums_keyboard(artist, albums):
    kb = InlineKeyboardMarkup(1)
    for album in albums:
        year = album.release_date.split('-')[0]
        kb.insert(InlineKeyboardButton(f'{album.title} ({year})', callback_data=new_callback('album', album.id, 'send')))
    kb.insert(InlineKeyboardButton('Go back', callback_data=new_callback('artist', artist.id, 'main')))
    return kb
예제 #7
0
def album_keyboard(album, tracks, post=False):
    kb = InlineKeyboardMarkup(1)
    for i, track in enumerate(tracks, start=1):
        kb.insert(InlineKeyboardButton(f'{i}. {track.title}', callback_data=new_callback('track', track.id, 'send')))
    kb.insert(InlineKeyboardButton('Get all tracks', callback_data=new_callback('album', album.id, 'download')))
    if post:
        kb.insert(InlineKeyboardButton('Post', callback_data=new_callback('album', album.id, 'post')))
    return kb
예제 #8
0
def sc_artist_playlists_keyboard(playlists, artist_id):
    kb = InlineKeyboardMarkup(1)
    for i, playlist in enumerate(playlists, start=1):
        kb.insert(InlineKeyboardButton(
            f'{i}. {playlist.title}',
            callback_data=new_callback('playlist_soundcloud', playlist.id, 'send')))
    kb.insert(InlineKeyboardButton('Go back', callback_data=new_callback('sc_artist', artist_id, 'main')))
    return kb
예제 #9
0
def sc_artist_tracks_keyboard(tracks, artist_id):
    kb = InlineKeyboardMarkup(1)
    for i, track in enumerate(tracks[:97], start=1):
        kb.insert(InlineKeyboardButton(
            f'{i}. {track.title}',
            callback_data=new_callback('track_soundcloud', track.id, 'send')))
    kb.insert(InlineKeyboardButton('Get all tracks', callback_data=new_callback('sc_artist', artist_id, 'download')))
    kb.insert(InlineKeyboardButton('Go back', callback_data=new_callback('sc_artist', artist_id, 'main')))
    return kb
예제 #10
0
def sc_playlist_keyboard(playlist, post):
    kb = InlineKeyboardMarkup(1)
    for i, track in enumerate(playlist.tracks, start=1):
        kb.insert(InlineKeyboardButton(
            f'{i+1}. {track.artist} \u2013 {track.title}',
            callback_data=new_callback('track_soundcloud', playlist.id, 'send')))
    kb.insert(InlineKeyboardButton('Get all tracks', callback_data=new_callback('playlist_soundcloud', playlist.id, 'download')))
    if post:
        kb.insert(InlineKeyboardButton('Post', callback_data=new_callback('playlist_soundcloud', playlist.id, 'post')))
    return kb
예제 #11
0
def top5_keyboard(artist, top):
    kb = InlineKeyboardMarkup(1)
    for i, track in enumerate(top, start=1):
        kb.insert(
            InlineKeyboardButton(f'{i}. {track.title}',
                                 callback_data=new_callback(
                                     'track', track.id, 'send')))
    kb.insert(
        InlineKeyboardButton('Go back',
                             callback_data=new_callback(
                                 'artist', artist.id, 'main')))
    return kb
예제 #12
0
def artist_radio_keyboard(radio, artist_id):
    kb = InlineKeyboardMarkup(1)
    for i, track in enumerate(radio, start=1):
        kb.insert(
            InlineKeyboardButton(
                f'{i}. {track.artist.name} \u2013 {track.title}',
                callback_data=new_callback('dz_track', track.id, 'send')))
    kb.insert(
        InlineKeyboardButton('Go back',
                             callback_data=new_callback(
                                 'dz_artist', artist_id, 'main')))
    return kb
예제 #13
0
def related_artists_keyboard(related, main_artist_id):
    kb = InlineKeyboardMarkup(1)
    for i, artist in enumerate(related[:10], start=1):
        kb.insert(
            InlineKeyboardButton(f'{i}. {artist.name}',
                                 callback_data=new_callback(
                                     'dz_artist', artist.id, 'send')))
    kb.insert(
        InlineKeyboardButton('Go back',
                             callback_data=new_callback(
                                 'dz_artist', main_artist_id, 'main')))
    return kb
예제 #14
0
def playlist_keyboard(tracks, playlist_id):
    kb = InlineKeyboardMarkup(1)
    for i, track in enumerate(tracks[:80], start=1):
        kb.insert(
            InlineKeyboardButton(f'{i}. {track.title}',
                                 callback_data=new_callback(
                                     'dz_track', track.id, 'send')))
    kb.insert(
        InlineKeyboardButton(text='Get all tracks',
                             callback_data=new_callback(
                                 'dz_playlist', playlist_id, 'download')))
    return kb
예제 #15
0
def likes_keyboard(likes, artist_id):
    kb = InlineKeyboardMarkup(1)
    for i, track in enumerate(likes[:95], start=1):
        kb.insert(
            InlineKeyboardButton(f'{i}. {track.artist} \u2013 {track.title}',
                                 callback_data=new_callback(
                                     'sc_track', track.id, 'send')))
    kb.insert(
        InlineKeyboardButton('Get all tracks',
                             callback_data=new_callback(
                                 'sc_artist', artist_id, 'likes_download')))
    kb.insert(
        InlineKeyboardButton('Go back',
                             callback_data=new_callback(
                                 'sc_artist', artist_id, 'main')))
    return kb
예제 #16
0
def playlist_keyboard(playlist, post):
    kb = InlineKeyboardMarkup(1)
    for i, track in enumerate(playlist.tracks[:95], start=1):
        kb.insert(
            InlineKeyboardButton(f'{i}. {track.artist} \u2013 {track.title}',
                                 callback_data=new_callback(
                                     'sc_track', track.id, 'send')))
    kb.insert(
        InlineKeyboardButton('Get all tracks',
                             callback_data=new_callback(
                                 'sc_playlist', playlist.id, 'download')))
    if post:
        kb.insert(
            InlineKeyboardButton('Post',
                                 callback_data=new_callback(
                                     'sc_playlist', playlist.id, 'post')))
    kb.insert(InlineKeyboardButton(text='Close', callback_data='close'))
    return kb
예제 #17
0
def soundcloud_keyboard(results, page, per_page=5):
    kb = InlineKeyboardMarkup(2)
    total_pages = ceil(len(results) / per_page)
    start = (page-1) * per_page
    stop = start + per_page
    last_page = page == total_pages
    for i, result in enumerate(results[start : stop], start=start):
        kb.insert(InlineKeyboardButton(
            f'{i+1}. {result.user.username} - {result.title}',
            callback_data=new_callback('sc_track', result.id, 'send')))
        kb.row()
    if page != 1:
        kb.insert(InlineKeyboardButton(
            '◀️', callback_data=new_callback('sc_page', page-1)))
    if not last_page:
        kb.insert(InlineKeyboardButton(
            '️️▶️', callback_data=new_callback('sc_page', page+1)))
    return kb