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))
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))