Exemplo n.º 1
0
def resolve_playlist(url):
    resolve_pool = ThreadPool(processes=16)
    logger.info("Resolving YouTube-Playlist '%s'", url)
    playlist = []

    page = 'first'
    while page:
        params = {
            'playlistId': url,
            'maxResults': 50,
            'key': yt_key,
            'part': 'contentDetails'
        }
        if page and page != "first":
            logger.debug("Get YouTube-Playlist '%s' page %s", url, page)
            params['pageToken'] = page

        result = session.get(yt_api_endpoint + 'playlistItems', params=params)
        data = result.json()
        page = data.get('nextPageToken')

        for item in data["items"]:
            video_id = item['contentDetails']['videoId']
            playlist.append(video_id)

    playlist = resolve_pool.map(resolve_url, playlist)
    resolve_pool.close()
    return [item for item in playlist if item]
Exemplo n.º 2
0
def resolve_playlist(url):
    logger.info("Resolving Youtube-Playlist '%s'", url)
    playlist = []

    page = 'first'
    while page:
        params = {
            'playlistId': url,
            'maxResults': 50,
            'key': yt_key,
            'part': 'contentDetails'
        }
        if page and page != "first":
            logger.debug("Get Youtube-Playlist '%s' page %s", url, page)
            params['pageToken'] = page

        result = requests.get(yt_api_endpoint + 'playlistItems', params=params)
        data = result.json()
        page = data.get('nextPageToken')

        for item in data["items"]:
            video_id = item['contentDetails']['videoId']
            playlist.append(video_id)

    return [resolve_url(item) for item in playlist]
Exemplo n.º 3
0
def resolve_url(url, stream=False):
    try:
        video = pafy.new(url)
        if not stream:
            uri = 'youtube:video/%s.%s' % (safe_url(
                video.title), video.videoid)
        else:
            uri = video.getbestaudio()
            if not uri:  # get video url
                uri = video.getbest()
            logger.debug(
                '%s - %s %s %s' %
                (video.title, uri.bitrate, uri.mediatype, uri.extension))
            uri = uri.url
        if not uri:
            return
    except Exception as e:
        # Video is private or doesn't exist
        logger.info(e.message)
        return

    track = Track(name=video.title,
                  comment=video.videoid,
                  length=video.length * 1000,
                  album=Album(name='YouTube',
                              images=[video.bigthumb, video.bigthumbhd]),
                  uri=uri)
    return track
Exemplo n.º 4
0
def resolve_url(url, stream=False):
    video = pafy.new(url)
    if not stream:
        uri = 'youtube:video/%s.%s' % (safe_url(video.title), video.videoid)
    else:
        uri = video.getbestaudio()
        if not uri:  # get video url
            uri = video.getbest()
        logger.debug('%s - %s %s %s' %
                     (video.title, uri.bitrate, uri.mediatype, uri.extension))
        uri = uri.url
    if not uri:
        return

    if '-' in video.title:
        title = video.title.split('-')
        track = Track(name=title[1].strip(),
                      comment=video.videoid,
                      length=video.length * 1000,
                      artists=[Artist(name=title[0].strip())],
                      album=Album(name='Youtube',
                                  images=[video.bigthumb, video.bigthumbhd]),
                      uri=uri)
    else:
        track = Track(name=video.title,
                      comment=video.videoid,
                      length=video.length * 1000,
                      album=Album(name='Youtube',
                                  images=[video.bigthumb, video.bigthumbhd]),
                      uri=uri)
    return track
Exemplo n.º 5
0
def resolve_playlist(url):
    resolve_pool = ThreadPool(processes=16)
    logger.info("Resolving YouTube-Playlist '%s'", url)
    playlist = []

    page = 'first'
    while page:
        params = {
            'playlistId': url,
            'maxResults': 50,
            'key': yt_key,
            'part': 'contentDetails'
        }
        if page and page != "first":
            logger.debug("Get YouTube-Playlist '%s' page %s", url, page)
            params['pageToken'] = page

        result = session.get(yt_api_endpoint+'playlistItems', params=params)
        data = result.json()
        page = data.get('nextPageToken')

        for item in data["items"]:
            video_id = item['contentDetails']['videoId']
            playlist.append(video_id)

    playlist = resolve_pool.map(resolve_url, playlist)
    resolve_pool.close()
    return [item for item in playlist if item]
Exemplo n.º 6
0
def resolve_url(url, stream=False):
    try:
        video = pafy.new(url)
        if not stream:
            uri = 'youtube:video/%s.%s' % (
                safe_url(video.title), video.videoid
            )
        else:
            uri = video.getbestaudio()
            if not uri:  # get video url
                uri = video.getbest()
            logger.debug('%s - %s %s %s' % (
                video.title, uri.bitrate, uri.mediatype, uri.extension))
            uri = uri.url
        if not uri:
            return
    except Exception as e:
        # Video is private or doesn't exist
        logger.info(e.message)
        return

    track = Track(
        name=video.title,
        comment=video.videoid,
        length=video.length * 1000,
        album=Album(
            name='YouTube',
            images=[video.bigthumb, video.bigthumbhd]
        ),
        uri=uri
    )
    return track
Exemplo n.º 7
0
def resolve_url(url, stream=False):
    video = pafy.new(url)
    if not stream:
        uri = 'youtube:video/%s.%s' % (
            safe_url(video.title), video.videoid
        )
    else:
        uri = video.getbestaudio()
        if not uri:  # get video url
            uri = video.getbest()
        logger.debug('%s - %s %s %s' % (
            video.title, uri.bitrate, uri.mediatype, uri.extension))
        uri = uri.url
    if not uri:
        return

    if '-' in video.title:
        title = video.title.split('-')
        track = Track(
            name=title[1].strip(),
            comment=video.videoid,
            length=video.length*1000,
            artists=[Artist(name=title[0].strip())],
            album=Album(
                name='Youtube',
                images=[video.bigthumb, video.bigthumbhd]
            ),
            uri=uri
        )
    else:
        track = Track(
            name=video.title,
            comment=video.videoid,
            length=video.length*1000,
            album=Album(
                name='Youtube',
                images=[video.bigthumb, video.bigthumbhd]
            ),
            uri=uri
        )
    return track
Exemplo n.º 8
0
def resolve_track(track, stream=False):
    logger.debug("Resolving Youtube for track '%s'", track)
    if hasattr(track, 'uri'):
        return resolve_url(track.comment, stream)
    else:
        return resolve_url(track.split('.')[-1], stream)
Exemplo n.º 9
0
def resolve_track(track, stream=False):
    logger.debug("Resolving YouTube for track '%s'", track)
    if hasattr(track, 'uri'):
        return resolve_url(track.comment, stream)
    else:
        return resolve_url(track.split('.')[-1], stream)