Exemplo n.º 1
0
def get_session():
    access_token = pynder_config['access_token']
    try:
        access_token = get_token()
    except:
        pass
    session = pynder.Session(pynder_config['id'], access_token)
    return session
Exemplo n.º 2
0
def get_session():
    access_token = pynder_config['access_token']
    try:
        access_token = get_token()
    except:
        pass
    session = pynder.Session(pynder_config['id'], access_token)
    return session
Exemplo n.º 3
0
from timeline import home_operation
from collections import deque
from help import func_help

cf = configparser.ConfigParser()
cf.read("ConfigParser.conf")

if __name__ == '__main__':
    user = cf.get('user', 'user')
    password = cf.get('user', 'password')

    # 设置一个op队列用于存储命令
    deque_home = deque(maxlen=1)
    deque_detail = deque(maxlen=1)

    token = get_token(user=user, password=password)

    # 设计一个全局变量position 来标记当前所在位置
    global position, home_arg
    position = 'home'

    while True:
        op = input(remind_color("Operate$ "))
        if op.startswith('home') or op == '\n':
            # 将position 置位为home
            position = 'home'
            deque_home.append(op)
            home_arg = home_operation(token, op)

        elif op == 'clear':
            os.system('clear')
Exemplo n.º 4
0
def get_token():
    json = login.get_token(client_id, client_secret, state, code)
    global access_token, refresh_token
    access_token = json['access_token']
    refresh_token = json['refresh_token']
    redirect('/write')
Exemplo n.º 5
0
    def start(self):
        if setproctitle:
            setproctitle('vkplayer')

        self.ipc.start()
        self.ipc.broadcast('state_changed', [
            self.player.is_downloading, self.player.is_playing,
            self.current_title_string
        ])

        self.window = Gtk.Window()
        self.window.resize(600, 400)
        self.window.set_title('VK audio player')

        self.window.set_icon_from_file(os.path.join(DIR, 'icons/icon128.png'))

        self.accels = Gtk.AccelGroup()

        self.vbox = Gtk.VBox()
        self.window.add(self.vbox)

        # self.window.modify_bg(Gtk.StateFlags.NORMAL, Gdk.color_parse('#CCCCCC'))

        self.header = Gtk.HBox()
        # self.header.override_background_color(Gtk.StateFlags.NORMAL | Gtk.StateFlags.ACTIVE | Gtk.StateFlags.INSENSITIVE, color)
        self.header_left = Gtk.HBox()
        self.header_right = Gtk.VBox()
        self.header.pack_start(self.header_left, False, True, 0)
        self.header.pack_start(self.header_right, True, True, 0)
        self.vbox.pack_start(self.header, False, True, 0)

        self.controls = Gtk.HBox(spacing=8)
        self.controls.set_border_width(8)
        self.header_right.pack_start(self.controls, False, True, 0)

        img = Gtk.Image()
        img.set_from_pixbuf(
            GdkPixbuf.Pixbuf.new_from_file_at_scale(
                os.path.join(DIR, 'icons/icon-play-128.png'),
                width=48,
                height=48,
                preserve_aspect_ratio=False))

        self.play = Gtk.Button('', image=img)
        self.play.set_always_show_image(True)
        self.play.set_relief(Gtk.ReliefStyle.NONE)
        self.play.connect('clicked', self._on_play_clicked)
        self.controls.pack_start(self.play, False, True, 0)

        img = Gtk.Image()
        img.set_from_pixbuf(
            GdkPixbuf.Pixbuf.new_from_file_at_scale(
                os.path.join(DIR, 'icons/icon-pause-128.png'),
                width=48,
                height=48,
                preserve_aspect_ratio=False))

        self.pause = Gtk.Button('', image=img)
        self.pause.set_always_show_image(True)
        self.pause.set_relief(Gtk.ReliefStyle.NONE)
        self.pause.connect('clicked', self._on_pause_clicked)
        self.controls.pack_start(self.pause, False, True, 0)

        img = Gtk.Image()
        img.set_from_pixbuf(
            GdkPixbuf.Pixbuf.new_from_file_at_scale(
                os.path.join(DIR, 'icons/icon-shuffle-128.png'),
                width=48,
                height=48,
                preserve_aspect_ratio=False))

        self.random = Gtk.Button('', image=img)
        self.random.set_always_show_image(True)
        self.random.set_relief(Gtk.ReliefStyle.NONE)
        self.random.connect('clicked', self._on_random_clicked)
        self.controls.pack_start(self.random, False, True, 0)

        self.controls.pack_start(Gtk.HSeparator(), False, True, 0)

        self.cover = Gtk.Image()
        pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale(
            os.path.join(DIR, 'icons/cover512.jpg'),
            width=144,
            height=144,
            preserve_aspect_ratio=False)
        self.cover.set_from_pixbuf(pixbuf)
        # self.cover.connect('clicked', self._on_random_clicked)
        self.cover.set_size_request(144, 144)
        self.header_left.pack_start(self.cover, False, True, 0)

        self.seek_panel = Gtk.VBox()
        self.controls.pack_start(self.seek_panel, True, True, 0)

        self.seek_labels = Gtk.HBox()
        self.seek_panel.pack_start(self.seek_labels, True, True, 10)

        self.track_title = Gtk.Label('',
                                     halign=Gtk.Align.START,
                                     valign=Gtk.Align.END)
        self.track_title.set_use_markup(True)
        self.track_title.set_markup(
            '<span font="Roboto 24" weight="300">Idle</span>')
        self.seek_labels.pack_start(self.track_title, True, True, 0)

        self.track_time = Gtk.Label('05:00',
                                    halign=Gtk.Align.END,
                                    valign=Gtk.Align.END)
        self.track_time.set_use_markup(True)
        self.track_time.set_markup(
            '<span font="Roboto 24" weight="100">05:00</span>')
        self.seek_labels.pack_start(self.track_time, True, True, 0)

        self.seek_bar = Gtk.Scale(orientation=Gtk.Orientation.HORIZONTAL,
                                  adjustment=Gtk.Adjustment(0, 0, 1, 1, 0, 0))

        self.seek_bar.set_draw_value(False)
        self.seek_bar.set_sensitive(False)
        self.seek_panel.pack_start(self.seek_bar, True, True, 0)

        self.seek_bar.connect('button-press-event', self._on_seek_start)
        self.seek_bar.connect('button-release-event', self._on_seek_end)

        self.precache_progress = Gtk.ProgressBar()
        self.seek_panel.pack_start(self.precache_progress, True, True, 0)

        self.volume_scale = Gtk.Scale(orientation=Gtk.Orientation.VERTICAL,
                                      adjustment=Gtk.Adjustment(
                                          1, 0, 1, 0.05, 0.05, 0.05),
                                      valign=Gtk.Align.CENTER)
        self.volume_scale.set_inverted(True)
        self.volume_scale.connect(
            'value_changed', lambda *args: self.player.set_volume(
                self.volume_scale.get_value()))
        self.volume_scale.set_draw_value(False)
        self.volume_scale.set_size_request(-1, 64)
        self.volume_scale.set_value(self.last_volume)
        self.controls.pack_start(self.volume_scale, False, True, 0)

        # self.vbox.pack_start(Gtk.VSeparator(), False, True, 0)

        #

        self.search_panel = Gtk.HBox(spacing=8)
        self.search_panel.set_border_width(8)
        self.header_right.pack_start(self.search_panel, False, True, 0)

        self.refresh = Gtk.Button('My audio')
        self.refresh.connect('clicked', self._on_refresh_clicked)
        accelerator = '<Ctrl>m'
        key, mod = Gtk.accelerator_parse(accelerator)
        self.refresh.add_accelerator('activate', self.accels, key, mod,
                                     Gtk.AccelFlags.VISIBLE)
        self.search_panel.pack_start(self.refresh, False, True, 0)

        self.search_panel.pack_start(Gtk.HSeparator(), False, True, 0)

        self.query = Gtk.Entry(placeholder_text='Search music')
        self.query.connect('activate', self._on_search_clicked)
        accelerator = '<Ctrl>f'
        key, mod = Gtk.accelerator_parse(accelerator)
        self.query.add_accelerator('grab-focus', self.accels, key, mod,
                                   Gtk.AccelFlags.VISIBLE)
        self.search_panel.pack_start(self.query, True, True, 0)

        self.search = Gtk.Button('Search')
        self.search.connect('clicked', self._on_search_clicked)
        self.search_panel.pack_start(self.search, False, True, 0)

        #

        self.scroll = Gtk.ScrolledWindow()
        self.scroll.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.ALWAYS)
        self.vbox.pack_start(self.scroll, True, True, 0)

        self.spinner = Gtk.Spinner()
        self.vbox.pack_start(self.spinner, True, False, 0)

        self.playlist = Gtk.TreeView()
        self.scroll.add(self.playlist)

        self.playlist.connect('row-activated', self._on_row_activated)

        self.playlist_store = Gtk.ListStore(str, str, str, str, int, int, int,
                                            bool)
        self.playlist.set_model(self.playlist_store)

        img = Gtk.Image()
        img.set_from_stock(Gtk.STOCK_MEDIA_PLAY, 32)

        col = Gtk.TreeViewColumn(
            "",
            Gtk.CellRendererPixbuf(icon_name='media-playback-start'),
            visible=7)
        col.set_expand(False)
        self.playlist.append_column(col)

        col = Gtk.TreeViewColumn("Artist",
                                 Gtk.CellRendererText(
                                     ellipsize=True,
                                     family='Roboto, DejaVu Sans',
                                     weight=500),
                                 text=1)
        # col.set_expand(True)
        col.set_sizing(Gtk.TreeViewColumnSizing.FIXED)
        col.set_fixed_width(250)
        self.playlist.append_column(col)

        col = Gtk.TreeViewColumn("Title",
                                 Gtk.CellRendererText(
                                     ellipsize=True,
                                     family='Roboto, DejaVu Sans'),
                                 text=0)
        col.set_expand(True)
        self.playlist.append_column(col)

        col = Gtk.TreeViewColumn("Duration", Gtk.CellRendererText(), text=2)
        col.set_expand(False)
        self.playlist.append_column(col)

        self.vbox.show_all()
        self.window.add_accel_group(self.accels)
        self.window.maximize()
        self.window.show_all()

        seek_height = max(self.seek_bar.get_allocation().height,
                          self.precache_progress.get_allocation().height)
        self.seek_bar.set_size_request(-1, seek_height)
        self.precache_progress.set_size_request(-1, seek_height)

        self.window.connect('delete-event', self._show_or_hide)

        get_token(self.window, self._on_token_ready)

        self.set_busy(False)

        self._update()

        self._on_download_finished()

        Keybinder.init()
        Keybinder.bind('<Ctrl><Alt>Return', self._on_random_clicked)
        Keybinder.bind(
            '<Ctrl><Alt>Backspace', lambda *args:
            (self._on_pause_clicked
             if self.player.is_playing else self._on_play_clicked)())

        self.status_icon = Gtk.StatusIcon()
        self.status_icon.set_from_file(os.path.join(DIR, 'icons/play.png'))
        self.status_icon.connect('popup-menu', self._on_popup_menu)
        self.status_icon.connect('activate', self._show_or_hide)

        Gtk.main()
        self.player.stop()
Exemplo n.º 6
0
 def _start_login_force(self):
     get_token(self.window, self._on_token_ready, True)
Exemplo n.º 7
0
import sys
import spotipy
import spotipy.util as util

from login import get_token

sp = spotipy.Spotify(auth=get_token())
sp.trace = False


def get_user():
    user = sp.current_user()
    user = user['uri'].split(':')
    return user[2]


#creates new playlit and returns id
def create_playlist(name):
    playlist = sp.user_playlist_create(get_user(), name, public=True)
    return playlist['id']


def get_playlist(id):
    return sp.user_playlist(get_user(), playlist_id=id, fields=None)


def add_to_playlist(track, playlist_id):
    sp.user_playlist_add_tracks(get_user(), playlist_id, [track])


#remove a track from playlist