init: kompletní struktura /dnes, vyčištěná administrativa a mpd patch

This commit is contained in:
2026-06-24 19:21:51 +02:00
parent 9ad6b15130
commit d22bfdb8cb
11 changed files with 126 additions and 4 deletions
Executable
+58
View File
@@ -0,0 +1,58 @@
#!/usr/bin/env python3
import os
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from google.api_core.retry import Retry
from googleapiclient.discovery import build
from googleapiclient.http import MediaFileUpload
SCOPES = ["https://www.googleapis.com/auth/youtube.upload"]
def authenticate():
creds = None
if os.path.exists("token.json"):
creds = Credentials.from_authorized_user_file("token.json", SCOPES)
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)
with open("token.json", "w") as token:
token.write(creds.to_json())
return creds
def upload_video(file_path, title, description, category="22", privacy="private"):
creds = authenticate()
youtube = build("youtube", "v3", credentials=creds)
body = {
"snippet": {
"title": title,
"description": description,
"tags": ["test"],
"categoryId": category
},
"status": {
"privacyStatus": privacy
}
}
media = MediaFileUpload(file_path, mimetype="video/mp4", resumable=True)
request = youtube.videos().insert(part="snippet,status", body=body, media_body=media)
response = None
while response is None:
status, response = request.next_chunk()
if status:
print(f"Upload progress: {int(status.progress() * 100)}%")
print(f"Video uploaded! Video ID: {response['id']}")
if __name__ == "__main__":
upload_video("your_video.mp4", "My Video Title", "My description", privacy="public")