Заливаем Ютуб Shorts автоматически

Заливаем Ютуб Shorts автоматически
​​

​​



Resident PRIVATE Proxy от 0.049$ (Pia / ABC / 922 / 9) https://lolz.live/threads/6517233/

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

Python

Код:
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()

и рядом с скриптом закидываем наш 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 раз (указываем свой канал) )

у вас на экране появится в браузере что успешно и смотрите в свою консоль видео начали загружаться

​​

​​

(название ролика берет с название файла)

Всем удачного пролива и еще раз с наступающим​​

Комментарии 0

Пока нет комментариев. Начните обсуждение.
Войдите, чтобы оставить комментарий.
Назад
Верх