Beispiel #1
0
def emit(request, event, data):
    if request is None:
        uprint("Not emitting {0}".format(event))
        return

    for ws in request.app['sockets']:
        ws.send_str(json.dumps({'eventName': event, 'eventData': data}))
Beispiel #2
0
def emit(request, event, data):
    if request is None:
        uprint("Not emitting {0}".format(event))
        return

    for ws in request.app['sockets']:
        ws.send_str(json.dumps({'eventName': event, 'eventData': data}))
Beispiel #3
0
def start():

    sslcontext = ssl.create_default_context(cafile=certifi.where())
    conn = aiohttp.TCPConnector(ssl_context=sslcontext)

    with ClientSession(connector=conn) as session:

        google_email = input("Enter Google email address: ")
        google_pass = getpass("Enter Google password: "******"Invalid Google username/password")
            sys.exit(1)

        user_id = input("Enter Hypem username: "******"Enter Hypem password: "******"Enter Y if you want to include explicit songs: ")
        if explicit == 'Y':
            content_type = 'E'
        else:
            content_type = 'R'

        h = HypemClient(session, user_id, password)
        
        # now fetch the json for the hypem popular top 50
        playlist = yield from h.fetch_popular()
#        uprint("playlist", playlist)
        yield from app.transfer_hypem_playlist(None, h, g, playlist, content_type)
Beispiel #4
0
def setup(loop):
    app1 = web.Application(loop=loop, middlewares=[IndexMiddleware()])
    app1['sockets'] = []
    app1.router.add_route('POST', '/google/login', google_login)
    app1.router.add_route('POST', '/spotify/login', spotify_login)
    app1.router.add_route('POST', '/portify/transfer/start', transfer_start)
    app1.router.add_route('GET', '/spotify/playlists', spotify_playlists)
    app1.router.add_route('GET', '/ws/', wshandler)
    app1.router.add_static('/', STATIC_ROOT)

    handler1 = app1.make_handler()

    yield from loop.create_server(handler1, '0.0.0.0', 3132)

    uprint("Listening on http://0.0.0.0:3132")
    uprint("Please open your browser window to http://localhost:3132")

    return handler1
Beispiel #5
0
async def transfer_playlists(request, s, g, sp_playlist_uris):
    for sp_playlist_uri in sp_playlist_uris:
        sp_playlist = await s.fetch_playlist(sp_playlist_uri)
        sp_playlist_tracks = await s.fetch_playlist_tracks(sp_playlist_uri)

        track_count = len(sp_playlist_tracks)
        if track_count == 0:
            uprint("Skipping empty playlist %s" % (sp_playlist['name']))
            continue

        uprint("Gathering tracks for playlist %s (%s)" %
               (sp_playlist['name'], track_count))
        playlist_json = {
            "playlist": {
                "uri": sp_playlist_uri,
                "name": sp_playlist['name']
            },
            "name": sp_playlist['name'],
        }

        await emit_playlist_length(request, track_count)
        await emit_playlist_started(request, playlist_json)

        if not sp_playlist_tracks:
            await emit_playlist_ended(request, playlist_json)
            return

        tasks = []
        for i, sp_track in enumerate(sp_playlist_tracks):
            query = SpotifyQuery(i, sp_playlist_uri, sp_track, track_count)
            future = search_gm_track(request, g, query)
            tasks.append(future)

        done = await asyncio.gather(*tasks)
        gm_track_ids = [i for i in done if i is not None]

        # Once we have all the gm_trackids, add them
        if len(gm_track_ids) > 0:
            uprint("Creating in Google Music... ", end='')
            sys.stdout.flush()
            for i, sub_gm_track_ids in enumerate(grouper(gm_track_ids, 1000)):
                name = sp_playlist['name']
                if i > 0:
                    name = "{} ({})".format(name, i + 1)
                playlist_id = await g.create_playlist(name)
                await \
                    g.add_songs_to_playlist(playlist_id, sub_gm_track_ids)
            uprint("Done")

        await emit_playlist_ended(request, playlist_json)
    await emit_all_done(request)
Beispiel #6
0
def start():

    sslcontext = ssl.create_default_context(cafile=certifi.where())
    conn = aiohttp.TCPConnector(ssl_context=sslcontext)

    with ClientSession(connector=conn) as session:

        google_email = input("Enter Google email address: ")
        google_pass = getpass("Enter Google password: "******"Invalid Google username/password")
            sys.exit(1)

        uprint("Go to {0} and get an oauth token".format(OAUTH_URL))
        spotify_token = input("Enter Spotify oauth token: ")

        s = SpotifyClient(session, spotify_token)

        logged_in = yield from s.loggedin()
        if not logged_in:
            uprint("Invalid Spotify token")
            sys.exit(1)

        playlists = yield from s.fetch_spotify_playlists()
        playlists = [l['uri'] for l in playlists]
        yield from app.transfer_playlists(None, s, g, playlists)
Beispiel #7
0
def start():

    sslcontext = ssl.create_default_context(cafile=certifi.where())
    conn = aiohttp.TCPConnector(ssl_context=sslcontext)

    with ClientSession(connector=conn) as session:

        google_email = input("Enter Google email address: ")
        google_pass = getpass("Enter Google password: "******"Invalid Google username/password")
            sys.exit(1)

        uprint("Go to {0} and get an oauth token".format(OAUTH_URL))
        spotify_token = input("Enter Spotify oauth token: ")

        s = SpotifyClient(session, spotify_token)

        logged_in = yield from s.loggedin()
        if not logged_in:
            uprint("Invalid Spotify token")
            sys.exit(1)

        playlists = yield from s.fetch_spotify_playlists()
        yield from app.transfer_playlists(None, s, g, playlists)
Beispiel #8
0
def setup(loop):
    app1 = web.Application(loop=loop)
    app1['sockets'] = []
    app1.router.add_route('POST', '/google/login', google_login)
    app1.router.add_route('POST', '/spotify/login', spotify_login)
    app1.router.add_route('POST', '/portify/transfer/start', transfer_start)
    app1.router.add_route('GET', '/spotify/playlists', spotify_playlists)
    app1.router.add_route('GET', '/ws/', wshandler)
    app1.router.add_route(
        'GET',
        r'/{url_path:.*}',
        dispatcher.static_factory('/', STATIC_ROOT),
    )

    handler1 = app1.make_handler()

    yield from loop.create_server(handler1, '0.0.0.0', 3132)

    uprint("Listening on http://0.0.0.0:3132")
    uprint("Please open your browser window to http://localhost:3132")

    return handler1
async def start():

    sslcontext = ssl.create_default_context(cafile=certifi.where())
    conn = aiohttp.TCPConnector(ssl_context=sslcontext)

    with ClientSession(connector=conn) as session:

        g = Mobileclient(session)
        logged_in = await g.login(google_email, google_pass)
        if not logged_in:
            uprint("Invalid Google username/password")
            sys.exit(1)

        s = SpotifyClient(session, spotify_token)

        logged_in = await s.loggedin()
        if not logged_in:
            uprint("Invalid Spotify token")
            sys.exit(1)

        await test_percent_search(g)
        await test_playlist(s, g)
        return

        # di = await g.fetch_playlists()
        # import pprint
        # pprint.pprint(di['data']['items'])
        #
        # # playlist_id = await g.create_playlist("Test Playlist")
        # playlist_id = "2c02eca1-429e-4ce0-a4a8-819415cdee3a"
        # await g.add_songs_to_playlist(
        #     playlist_id,
        #     ['Twqujxontbfftlzi7hextragxyu'],
        #     # ['ba3a473e-6309-3814-8c05-b8b6619f38f3'],
        # )
        playlists = await s.fetch_spotify_playlists()
        playlists = [l['uri'] for l in playlists]
        await app.transfer_playlists(None, s, g, playlists)
Beispiel #10
0
def transfer_playlists(request, s, g, sp_playlist_uris):
    for sp_playlist_uri in sp_playlist_uris:
        sp_playlist = yield from s.fetch_playlist(sp_playlist_uri)
        sp_playlist_tracks = yield from s.fetch_playlist_tracks(
            sp_playlist_uri)

        track_count = len(sp_playlist_tracks)
        uprint(
            "Gathering tracks for playlist %s (%s)" %
            (sp_playlist['name'], track_count)
        )
        playlist_json = {
            "playlist": {
                "uri": sp_playlist_uri,
                "name": sp_playlist['name'],
            },
            "name": sp_playlist['name'],
        }

        yield from emit_playlist_length(request, track_count)
        yield from emit_playlist_started(request, playlist_json)

        if not sp_playlist_tracks:
            yield from emit_playlist_ended(request, playlist_json)
            return

        tasks = []
        for i, sp_track in enumerate(sp_playlist_tracks):
            query = SpotifyQuery(i, sp_playlist_uri, sp_track, track_count)
            future = search_gm_track(request, g, query)
            tasks.append(future)

        done = yield from asyncio.gather(*tasks)
        gm_track_ids = [i for i in done if i is not None]

        # Once we have all the gm_trackids, add them
        if len(gm_track_ids) > 0:
            uprint("Creating in Google Music... ", end='')
            sys.stdout.flush()
            gm_track_ids_without_duplicated = list(OrderedDict.fromkeys(gm_track_ids))
            tracks_lists = list(chunks(gm_track_ids_without_duplicated, 999))
            # Creates a playlist for each 999 tracks (GM has a 1000 tracks playlist limit)
            for key, track_list in enumerate(tracks_lists):
                playlist_title = sp_playlist['name']
                if len(tracks_lists) > 1:
                    playlist_title = '{0} {1}/{2}'.format(playlist_title, str(key+1), str(len(tracks_lists)))
                playlist_id = yield from g.create_playlist(playlist_title)
                created = yield from g.add_songs_to_playlist(playlist_id, track_list)
            uprint("Done")

        yield from emit_playlist_ended(request, playlist_json)
    yield from emit_all_done(request)
Beispiel #11
0
def transfer_playlists(request, s, g, playlist, content_type,
                       sp_playlist_uris):
    for sp_playlist_uri in sp_playlist_uris:
        sp_playlist = yield from s.fetch_playlist(sp_playlist_uri['uri'])
        if sp_playlist['name'] != playlist:
            continue
        sp_playlist_tracks = yield from s.fetch_playlist_tracks(
            sp_playlist_uri['uri'])

        track_count = len(sp_playlist_tracks)
        uprint("Gathering tracks for playlist %s (%s)" %
               (sp_playlist['name'], track_count))
        playlist_json = {
            "playlist": {
                "uri": sp_playlist_uri['uri'],
                "name": sp_playlist['name'],
            },
            "name": sp_playlist['name'],
        }

        yield from emit_playlist_length(request, track_count)
        yield from emit_playlist_started(request, playlist_json)

        if not sp_playlist_tracks:
            yield from emit_playlist_ended(request, playlist_json)
            return

        tasks = []
        for i, sp_track in enumerate(sp_playlist_tracks):
            query = SpotifyQuery(i, sp_playlist_uri['uri'], sp_track,
                                 track_count)
            future = search_gm_track(request, g, query, content_type)
            tasks.append(future)

        done, _ = yield from asyncio.wait(tasks)
        track_ids = [i.result() for i in done if i.result() is not None]
        gm_track_ids = [x[1] for x in sorted(track_ids)]

        # Once we have all the gm_trackids, add them
        if len(gm_track_ids) > 0:
            uprint("Creating in Google Music...", end='')
            sys.stdout.flush()
            playlist_id = yield from g.create_playlist(sp_playlist['name'])
            yield from g.add_songs_to_playlist(playlist_id, gm_track_ids)
            uprint("Done")

        yield from emit_playlist_ended(request, playlist_json)
    yield from emit_all_done(request)
Beispiel #12
0
def transfer_playlists(request, s, g, sp_playlist_uris):
    for sp_playlist_uri in sp_playlist_uris:
        sp_playlist = yield from s.fetch_playlist(sp_playlist_uri)
        sp_playlist_tracks = yield from s.fetch_playlist_tracks(
            sp_playlist_uri)

        track_count = len(sp_playlist_tracks)
        uprint(
            "Gathering tracks for playlist %s (%s)" %
            (sp_playlist['name'], track_count)
        )
        playlist_json = {
            "playlist": {
                "uri": sp_playlist_uri,
                "name": sp_playlist['name'],
            },
            "name": sp_playlist['name'],
        }

        yield from emit_playlist_length(request, track_count)
        yield from emit_playlist_started(request, playlist_json)

        if not sp_playlist_tracks:
            yield from emit_playlist_ended(request, playlist_json)
            return

        tasks = []
        for i, sp_track in enumerate(sp_playlist_tracks):
            query = SpotifyQuery(i, sp_playlist_uri, sp_track, track_count)
            future = search_gm_track(request, g, query)
            tasks.append(future)

        done, _ = yield from asyncio.wait(tasks)
        gm_track_ids = [i.result() for i in done if i.result() is not None]

        # Once we have all the gm_trackids, add them
        if len(gm_track_ids) > 0:
            uprint("Creating in Google Music... ", end='')
            sys.stdout.flush()
            playlist_id = yield from g.create_playlist(sp_playlist['name'])
            yield from g.add_songs_to_playlist(playlist_id, gm_track_ids)
            uprint("Done")

        yield from emit_playlist_ended(request, playlist_json)
    yield from emit_all_done(request)
Beispiel #13
0
def start():

    sslcontext = ssl.create_default_context(cafile=certifi.where())
    conn = aiohttp.TCPConnector(ssl_context=sslcontext)

    with ClientSession(connector=conn) as session:

        google_email = input("Enter Google email address: ")
        google_pass = getpass("Enter Google password: "******"Invalid Google username/password")
            sys.exit(1)

        user_id = input("Enter Spotify User to copy playlist from: ")
        playlist = input(
            "Enter the User's Spotify playlist you want to copy: ")
        explicit = input("Enter Y if you want to include explicit songs: ")
        if explicit == 'Y':
            content_type = 'E'
        else:
            content_type = 'R'

        uprint("Go to {0} and get an oauth token".format(OAUTH_URL))
        spotify_token = input("Enter Spotify oauth token: ")

        s = SpotifyClient(session, spotify_token, user_id)

        logged_in = yield from s.loggedin()
        if not logged_in:
            uprint("Invalid Spotify token")
            sys.exit(1)

        playlists = yield from s.fetch_spotify_playlists()
        yield from app.transfer_playlists(None, s, g, playlist, content_type,
                                          playlists)
Beispiel #14
0
def start():

    sslcontext = ssl.create_default_context(cafile=certifi.where())
    conn = aiohttp.TCPConnector(ssl_context=sslcontext)

    with ClientSession(connector=conn) as session:

        google_email = input("Enter Google email address: ")
        google_pass = getpass("Enter Google password: "******"Invalid Google username/password")
            sys.exit(1)

        user_id = input("Enter Spotify User to copy playlist from: ")
        playlist = input("Enter the User's Spotify playlist you want to copy: ")
        explicit = input("Enter Y if you want to include explicit songs: ")
        if explicit == 'Y':
            content_type = 'E'
        else:
            content_type = 'R'

        uprint("Go to {0} and get an oauth token".format(OAUTH_URL))
        spotify_token = input("Enter Spotify oauth token: ")

        s = SpotifyClient(session, spotify_token, user_id)

        logged_in = yield from s.loggedin()
        if not logged_in:
            uprint("Invalid Spotify token")
            sys.exit(1)

        playlists = yield from s.fetch_spotify_playlists()
        yield from app.transfer_playlists(None, s, g, playlist, content_type, playlists)
Beispiel #15
0
def gm_log_not_found(sp_query):
    uprint("({0}/{1}) No match found for '{2}' in Google Music".format(
           sp_query.i+1, sp_query.track_count, sp_query.search_query()))
Beispiel #16
0
def gm_log_not_found(sp_query):
    uprint("({0}/{1}) No match found for '{2}' in Google Music".format(
           sp_query.i+1, sp_query.track_count, sp_query.search_query()))