Resident PRIVATE Proxy от 0.049$ (Pia / ABC / 922 / 9) https://lolz.live/threads/6517233/
*** Configs (WireGuard / Outline / Vless)
https://lolz.live/threads/6751972/
IPv4 Proxy (Socks5 / HTTPS)
https://lolz.live/threads/6946368/
Аренда +888
https://lolz.live/threads/7800339/
t.me/snegirshop_botВсех с наступающим 2025 годом
И хочу поделится как можно заливать на ютуб видео автоматически
------------------------------------------------------------------------------------------------------
У нас будет разделен гайд на несколько частей, а именно получение API ключа и залива ютуб.
===============================================================================================
1. Мы переходим в Google Developers Console
Переходим по ссылке на Google Developers Console
И если у вас нет проектов, мы создаем его, нажимая на кнопку Select a project слева сверху.
После открывается у нас окно и нажимаем на New Project и называем наш проект как хотим и ожидаем пока создается у нас наш проект
Далее переходим снова на Select a project
Далее просто переходим по нашему проекту.
Сейчас мы должны включить сам апи ютуба мы переходим в
APIs & Services
И создаем API Сервис Мы должны пролистать ниже и найти YouTube Data API v3Как перешли мы должны включить его нажав на кнопку ENABLE (Это у нас займет некоторое время)
2. Создание учетных данных
Переходим в раздел Credentials
И нажимаем на Create credentials
Выбираем OAuth client ID
Настройка согласия (OAuth consent screen)
1. Выбираем External
2. Дальше нас требует указать App name и User Support email и Developer contact information (указываем свой)
3. Нажимаем Save AND Continue
=====================================================================
В Scopes Мы должны включить наш YouTube Shorts
По этому мы нажимаем на Add OR Remove Scopes
И у нас повялвется справа фильтры мы должны найти тамhttps://www.googleapis.com/auth/youtube.upload
Для этого мы в поиске вписываем youtube.upload и у нас выходит YouTube Data API v3
Нажимаем на UPDATE
И уже в Scopes Мы снова нажимаем на Save And Continue
Далше в Test User мы тут просто скипаем так же Save And Continue
В Summary в нажимаем на BackToDashBoard
3. ПОлучение Json
3.1 Мы переходим снова в credentials
нажимаем на Create Credentials
3.2 Выбераем Create OAuth client ID
3.3 выбераем в нем "Desktop application"
3.4 Нажимаем на Create
3.5 Нажимаем на Download JSON
Все мы успешно получили JSON
----------------------------------------------------------------------------------------------------
4. Залив На >>Yotube Shorts<<
4.1 Для начала нам потеруется установить Python думаю у всех он есть а если нету то не составит труда вам его скачать
Дальше мы создаем папку где будет хранится наш скрипт
Мы создаем там main.py и вписываем данный код
from os import getenv, path, listdir
import json
import google_auth_oauthlib.flow
import googleapiclient.discovery
import googleapiclient.errors
from googleapiclient.http import MediaFileUpload
from dotenv import load_dotenv
load_dotenv()
def find_credentials_file():
script_dir = path.dirname(path.abspath(__file__))
for file in listdir(script_dir):
if file.endswith('.json'):
file_path = path.join(script_dir, file)
try:
with open(file_path, 'r') as f:
data = json.load(f)
if 'installed' in data or 'web' in data:
return file_path
except json.JSONDecodeError:
continue
raise FileNotFoundError('Не найден JSON файл с учетными данными OAuth в директории скрипта')
CLIENT_SECRETS_FILE = find_credentials_file()
VIDEOS_FOLDER = getenv('VIDEOS_FOLDER', 'videos')
class YouTubeShortsUploader:
def __init__(self, client_secrets_file, videos_folder):
self.videos_folder = videos_folder
self.scopes = ["https://www.googleapis.com/auth/youtube.upload"]
flow = google_auth_oauthlib.flow.InstalledAppFlow.from_client_secrets_file(
client_secrets_file, self.scopes)
credentials = flow.run_local_server(port=0)
self.youtube = googleapiclient.discovery.build(
"youtube", "v3", credentials=credentials)
def get_video_details(self, video_path):
title = path.splitext(path.basename(video_path))[0]
description = "Uploaded"
return title, description
def upload_short(self, video_path):
try:
title, description = self.get_video_details(video_path)
body = {
'snippet': {
'title': title,
'description': description,
'categoryId': '22'
},
'status': {
'privacyStatus': 'public'
}
}
media = MediaFileUpload(
video_path,
resumable=True,
chunksize=1024*1024
)
request = self.youtube.videos().insert(
part=",".join(body.keys()),
body=body,
media_body=media
)
response = request.execute()
print(f"Видео {title} успешно загружено. ID: [URL='https://www.youtube.com/shorts/{response['id']}']https://www.youtube.com/shorts/{response['id']}")[/URL]
return response['id']
except googleapiclient.errors.HttpError as e:
print(f"Ошибка при загрузке видео {video_path}: {e}")
return None
def upload_all_shorts(self):
video_extensions = ['.mp4', '.mov', '.avi', '.mkv']
for filename in listdir(self.videos_folder):
if any(filename.lower().endswith(ext) for ext in video_extensions):
video_path = path.join(self.videos_folder, filename)
self.upload_short(video_path)
def main():
uploader = YouTubeShortsUploader(CLIENT_SECRETS_FILE, VIDEOS_FOLDER)
uploader.upload_all_shorts()
if __name__ == "__main__":
main()
Pythonfrom os import getenv, path, listdir
import json
import google_auth_oauthlib.flow
import googleapiclient.discovery
import googleapiclient.errors
from googleapiclient.http import MediaFileUpload
from dotenv import load_dotenv
load_dotenv()
def find_credentials_file():
script_dir = path.dirname(path.abspath(__file__))
for file in listdir(script_dir):
if file.endswith('.json'):
file_path = path.join(script_dir, file)
try:
with open(file_path, 'r') as f:
data = json.load(f)
if 'installed' in data or 'web' in data:
return file_path
except json.JSONDecodeError:
continue
raise FileNotFoundError('Не найден JSON файл с учетными данными OAuth в директории скрипта')
CLIENT_SECRETS_FILE = find_credentials_file()
VIDEOS_FOLDER = getenv('VIDEOS_FOLDER', 'videos')
class YouTubeShortsUploader:
def __init__(self, client_secrets_file, videos_folder):
self.videos_folder = videos_folder
self.scopes = ["https://www.googleapis.com/auth/youtube.upload"]
flow = google_auth_oauthlib.flow.InstalledAppFlow.from_client_secrets_file(
client_secrets_file, self.scopes)
credentials = flow.run_local_server(port=0)
self.youtube = googleapiclient.discovery.build(
"youtube", "v3", credentials=credentials)
def get_video_details(self, video_path):
title = path.splitext(path.basename(video_path))[0]
description = "Uploaded"
return title, description
def upload_short(self, video_path):
try:
title, description = self.get_video_details(video_path)
body = {
'snippet': {
'title': title,
'description': description,
'categoryId': '22'
},
'status': {
'privacyStatus': 'public'
}
}
media = MediaFileUpload(
video_path,
resumable=True,
chunksize=1024*1024
)
request = self.youtube.videos().insert(
part=",".join(body.keys()),
body=body,
media_body=media
)
response = request.execute()
print(f"Видео {title} успешно загружено. ID: [URL='https://www.youtube.com/shorts/{response['id']}']https://www.youtube.com/shorts/{response['id']}")[/URL]
return response['id']
except googleapiclient.errors.HttpError as e:
print(f"Ошибка при загрузке видео {video_path}: {e}")
return None
def upload_all_shorts(self):
video_extensions = ['.mp4', '.mov', '.avi', '.mkv']
for filename in listdir(self.videos_folder):
if any(filename.lower().endswith(ext) for ext in video_extensions):
video_path = path.join(self.videos_folder, filename)
self.upload_short(video_path)
def main():
uploader = YouTubeShortsUploader(CLIENT_SECRETS_FILE, VIDEOS_FOLDER)
uploader.upload_all_shorts()
if __name__ == "__main__":
main()
и рядом с скриптом закидываем наш json файл
И создаем файйл .env и вписываем где хранятся у нас видеоVIDEOS_FOLDER= тут укзаываем путь
У меня хранится в E:\statia значит будет такVIDEOS_FOLDER=E:\statia
видео должны хранится там
Дальше в консоли с скриптом прописываемpip install google-api-python-client google-auth-oauthlib python-dotenv
Эту команду вписываем только 1 раз
И все просто запускаем скриптpy main.py
( нас потребует авторизоваться в браузере 1 раз (указываем свой канал) )
у вас на экране появится в браузере что успешно и смотрите в свою консоль видео начали загружаться
(название ролика берет с название файла)
Всем удачного пролива и еще раз с наступающим
Загрузка...
Скопировать BBCode