|
|
@@ -0,0 +1,36 @@
|
|
|
+from google_auth_oauthlib.flow import InstalledAppFlow
|
|
|
+from google.auth.transport.requests import Request
|
|
|
+import os
|
|
|
+import pickle
|
|
|
+
|
|
|
+# OAuth 2.0 scopes
|
|
|
+SCOPES = ["https://www.googleapis.com/auth/youtube.readonly"]
|
|
|
+
|
|
|
+def get_token():
|
|
|
+ """Perform OAuth authentication and save the token."""
|
|
|
+ creds = None
|
|
|
+ # The token file to save credentials
|
|
|
+ token_file = "youtube_token.pickle"
|
|
|
+
|
|
|
+ # Check if token file exists
|
|
|
+ if os.path.exists(token_file):
|
|
|
+ with open(token_file, "rb") as token:
|
|
|
+ creds = pickle.load(token)
|
|
|
+
|
|
|
+ # If no valid credentials, authenticate user
|
|
|
+ if not creds or not creds.valid:
|
|
|
+ if creds and creds.expired and creds.refresh_token:
|
|
|
+ creds.refresh(Request())
|
|
|
+ else:
|
|
|
+ flow = InstalledAppFlow.from_client_secrets_file("client_secret.json", SCOPES)
|
|
|
+ creds = flow.run_local_server(port=0)
|
|
|
+ # Save the credentials to a file
|
|
|
+ with open(token_file, "wb") as token:
|
|
|
+ pickle.dump(creds, token)
|
|
|
+ print(f"Token saved to {token_file}")
|
|
|
+ else:
|
|
|
+ print("Token already exists and is valid.")
|
|
|
+
|
|
|
+if __name__ == "__main__":
|
|
|
+ get_token()
|
|
|
+
|