Exemple #1
0
def stream():
    try:
        v = request.args.get('v')
        plist = request.args.get('list')
        playlist = request.args.get('playlist')
        if v is not None:
            video = YouTube.getVideoInfo(v)
            return render(
                'stream',
                type='video',
                core=video,
                json_core=json.dumps(video),
                relatedToVideoId=v) if video.get('status') == True else render(
                    'error', code=404, message=video['message'])
        elif plist is not None:
            playlist = YouTube.getPlaylistInfo(plist)
            return render(
                'stream',
                type='playlist',
                core=playlist,
                json_core=json.dumps(playlist),
                relatedToVideoId=playlist['videos'][0]['id']) if playlist.get(
                    'status', False) == True else render(
                        'error', code=404, message=playlist['message'])
        else:
            return render(
                'error',
                code=900,
                message=
                'Please provide the Video Id for the song to stream, or search any other song.'
            )
    except Exception as e:
        return render('error', code=500, message=str(e))
Exemple #2
0
def search():
    try:
        q = request.args.get('q', '')
        type = request.args.get('type', 'video,playlist,channel')
        pageToken = request.args.get('pageToken', '')
        duration = request.args.get('duration', '')
        maxResults = request.args.get('maxResults', '25')
        order = request.args.get('order', 'relevance')
        channelId = request.args.get('channelId', '')
        relatedToVideoId = request.args.get('relatedToVideoId', '')
        page = request.args.get('page')
        if len(q.strip()) > 0:
            if YouTube.validURL(q):
                v = YouTube.parseURL(q)
                if v is not False:
                    if YouTube.validYouTubeURL(v):
                        video = YouTube.getVideoInfo(v)
                        return render(
                            'stream',
                            type='video',
                            core=video,
                            json_core=json.dumps(video),
                            relatedToVideoId=v
                        ) if video['status'] == True else render(
                            'error', code=400, message=video['message'])
                    else:
                        return render(
                            'error',
                            code=404,
                            message="Couldn't find the YouTube video.")
                else:
                    return render(
                        'error',
                        code=400,
                        message=
                        "Couldn't find any videos related to the search.")
        options = {
            'part': 'snippet',
            'maxResults': maxResults,
            'order': order,
            'key': 'AIzaSyDkNYRbreB8JHOggvjSznMIuw6TlvkHjGQ',
            'regionCode': Repo.getRegion()['countryCode']
        }
        if len(q) > 0:
            options['q'] = str(urllib.quote_plus(q))
        if len(duration.strip()) > 0:
            options['type'] = type = 'video'
            options['duration'] = duration.strip()
        if len(pageToken) > 0:
            options['pageToken'] = pageToken
        if len(type) > 0 and len(duration) == 0:
            options['type'] = type
        if len(channelId) > 0:
            options['channelId'] = channelId
            if type == 'video,playlist,channel':
                options['type'] = type = 'video'
        if len(relatedToVideoId) > 0:
            options['relatedToVideoId'] = relatedToVideoId
            options['type'] = type = 'video'
        if options.get('channelId') is not None or options.get(
                'q') is not None or options.get(
                    'relatedToVideoId') is not None:
            search = YouTube.search(options)
            name = page if page is not None else 'list'
            return render(name,
                          search=search,
                          q=q,
                          type=type,
                          pageToken=pageToken,
                          duration=duration,
                          order=order,
                          channelId=channelId,
                          maxResults=maxResults,
                          relatedToVideoId=relatedToVideoId
                          ) if search['status'] == True else render(
                              'error', code=400, message=search['message'])
        else:
            return render('error',
                          code=900,
                          message="Please provide some input to search.")
    except Exception as e:
        return render('error', code=500, message=str(e))