I have a python/html file that uses the YouTube api to run a few simple searches. It runs completely fine when I have it on a local server but whenever I upload it to Replit, I get the following error whenever I press the "reccomend" button.
This is the code python code:
from flask import Flask, jsonify, request, render_templatefrom googleapiclient.discovery import buildapp = Flask(__name__)@app.route('/')def index(): return render_template('index.html')@app.route('/recommend', methods=['GET'])def recommend(): # Get the YouTube link from the query parameter youtube_link = request.args.get('link') # Parse the video ID from the link video_id = youtube_link.split('v=')[-1] # Initialize the YouTube API client youtube = build('youtube','v3', developerKey='AIzaSy...') # Get the details of the video video_response = youtube.videos().list(part='snippet', id=video_id).execute() # Extract the video title and channel ID video_title = video_response['items'][0]['snippet']['title'] channel_id = video_response['items'][0]['snippet']['channelId'] # Get the details of the channel channel_response = youtube.channels().list(part='snippet,statistics', id=channel_id).execute() # Extract the channel title and subscriber count channel_title = channel_response['items'][0]['snippet']['title'] subscriber_count = channel_response['items'][0]['statistics']['subscriberCount'] # Get the related videos for the video related_response = youtube.search().list( part='id,snippet', type='video', relatedToVideoId=video_id).execute() # Filter the related videos to only include videos from channels with less than 1000 subscribers recommendations = [] for item in related_response['items']: channel_id = item['snippet']['channelId'] video_id = item['id']['videoId'] channel_response = youtube.channels().list(part='statistics', id=channel_id).execute() subscriber_count = int( channel_response['items'][0]['statistics']['subscriberCount']) if subscriber_count < 1000: recommendations.append({'id': video_id,'title': item['snippet']['title'] }) return jsonify(recommendations)if __name__ == '__main__': app.run(host='0.0.0.0', port=5000, debug=True)
and this is the error i'm getting:
File "/home/runner/SmallChannelReccomender/venv/lib/python3.10/site-packages/flask/app.py", line 2548, in __call__ return self.wsgi_app(environ, start_response) File "/home/runner/SmallChannelReccomender/venv/lib/python3.10/site-packages/flask/app.py", line 2528, in wsgi_app response = self.handle_exception(e) File "/home/runner/SmallChannelReccomender/venv/lib/python3.10/site-packages/flask/app.py", line 2525, in wsgi_app response = self.full_dispatch_request() File "/home/runner/SmallChannelReccomender/venv/lib/python3.10/site-packages/flask/app.py", line 1822, in full_dispatch_request rv = self.handle_user_exception(e) File "/home/runner/SmallChannelReccomender/venv/lib/python3.10/site-packages/flask/app.py", line 1820, in full_dispatch_request rv = self.dispatch_request() File "/home/runner/SmallChannelReccomender/venv/lib/python3.10/site-packages/flask/app.py", line 1796, in dispatch_request return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) File "/home/runner/SmallChannelReccomender/main.py", line 21, in recommend youtube = build('youtube', File "/home/runner/SmallChannelReccomender/venv/lib/python3.10/site-packages/googleapiclient/_helpers.py", line 130, in positional_wrapper return wrapped(*args, **kwargs) File "/home/runner/SmallChannelReccomender/venv/lib/python3.10/site-packages/googleapiclient/discovery.py", line 287, in build content = _retrieve_discovery_doc( File "/home/runner/SmallChannelReccomender/venv/lib/python3.10/site-packages/googleapiclient/discovery.py", line 404, in _retrieve_discovery_doc raise UnknownApiNameOrVersion(googleapiclient.errors.UnknownApiNameOrVersion: name: youtube version: v3
Have changing API key, tried changing the API version but none of this seems to be making a difference. I even ran it through ChatGPT but this just told me the API version was wrong which I know is not the case. I have the package installed for the APi as well.