как спарсить ют канал

Dickson

Активный
Автор темы
281
64
я хочу спарсить канал на ютубе, хочу получать информацию о выходе нового ролика, как мне это сделать ?
 
Решение
для этого тебе потребуется api ключ гугла.
переходишь сюда, в поисковике пишешь:
1705665106877.png

нажимаешь, после нужно включить api
1705665139254.png

соответственно, жмёшь "enable", после этого создаёшь проект.
после создания переходишь сюда
1705665302394.png

и жмёшь
1705665316144.png

после всех действий появится окно с ключом
1705665392228.png

ключ понадобится для получения данных с канала с помощью либы google-api-python-client
устанавливаешь либу
Python:
pip install google-api-python-client
и перейдём к коду. для примера я возьму канал overbafer1 (no ad)
1705665528846.png

как видно по скриншоту, последнее видео называется "История борьбы с атаками на мой проект: вымогательство,...". будем сравнивать результат кода с ним.
перейдём к самому...

kiaostashi

Участник
47
9
для этого тебе потребуется api ключ гугла.
переходишь сюда, в поисковике пишешь:
1705665106877.png

нажимаешь, после нужно включить api
1705665139254.png

соответственно, жмёшь "enable", после этого создаёшь проект.
после создания переходишь сюда
1705665302394.png

и жмёшь
1705665316144.png

после всех действий появится окно с ключом
1705665392228.png

ключ понадобится для получения данных с канала с помощью либы google-api-python-client
устанавливаешь либу
Python:
pip install google-api-python-client
и перейдём к коду. для примера я возьму канал overbafer1 (no ad)
1705665528846.png

как видно по скриншоту, последнее видео называется "История борьбы с атаками на мой проект: вымогательство,...". будем сравнивать результат кода с ним.
перейдём к самому коду:
Python:
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError

try:
    youtube = build('youtube', 'v3', developerKey='сюда вставляешь ключ, который получил на сайте') #подключение к api
    playlist_request = youtube.channels().list(
        part='contentDetails',
        forUsername='overbafer1' #тут заменишь на название канала, который тебе нужен
    ) #запрос для получения информации о плейлисте канала
    playlist_response = playlist_request.execute()
    playlist_id = playlist_response['items'][0]['contentDetails']['relatedPlaylists']['uploads'] #получаем id плейлиста канала
    videos_request = youtube.playlistItems().list(
        part='snippet',
        playlistId=playlist_id,
        maxResults=1
    ) #запрос для получения последнего видео на канале
    videos_response = videos_request.execute()
    video_title = videos_response['items'][0]['snippet']['title'] #извлекаем информацию о последнем видео
    video_url = 'https://www.youtube.com/watch?v=' + videos_response['items'][0]['snippet']['resourceId']['videoId'] #ссылка на последнее видео
  
    print(f'Название: {video_title}\nСсылка: {video_url}') #общий вывод

except HttpError as e:
    print(e)
получаем вывод:
1705665947759.png


бесконечный цикл, который будет сравнивать последнее видео и делать вывод, если последнее видео не совпадает с записью(костыль в виде json):
сначала создаешь json файл с любым названием, в нём прописываешь:
Код:
{
    "last_video_url": ""
}
обновлённый код для питона с циклом в 60 секунд:

Python:
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
import json
import time

def youtube():
    try:
        youtube = build('youtube', 'v3', developerKey='твой апи ключ')
        playlist_request = youtube.channels().list(
            part='contentDetails',
            forUsername='название канала'
        )
        playlist_response = playlist_request.execute()
        playlist_id = playlist_response['items'][0]['contentDetails']['relatedPlaylists']['uploads']
        videos_request = youtube.playlistItems().list(
            part='snippet',
            playlistId=playlist_id,
            maxResults=1
        )
        videos_response = videos_request.execute()
        video_title = videos_response['items'][0]['snippet']['title']
        video_url = 'https://www.youtube.com/watch?v=' + videos_response['items'][0]['snippet']['resourceId']['videoId']

        with open('название твоего жсона.json', 'r') as f:
            check_url = json.load(f)
            if check_url["last_video_url"] == video_url:
                return
            check_url["last_video_url"] = video_url
            with open('название твоего жсона.json', 'w') as f:
                json.dump(check_url, f, ensure_ascii=False, indent=4)
                print(f'Название: {video_title}\nСсылка: {video_url}')

    except HttpError as e:
        print(e)

while True:
    youtube()
    time.sleep(60)
надеюсь, что подробно описал всё. если есть вопросы - задавай
 
Последнее редактирование:
  • Вау
  • Нравится
Реакции: Dickson и AnWu

Dickson

Активный
Автор темы
281
64
для этого тебе потребуется api ключ гугла.
переходишь сюда, в поисковике пишешь:
Посмотреть вложение 229339
нажимаешь, после нужно включить api
Посмотреть вложение 229340
соответственно, жмёшь "enable", после этого создаёшь проект.
после создания переходишь сюда
Посмотреть вложение 229341
и жмёшь Посмотреть вложение 229342
после всех действий появится окно с ключом
Посмотреть вложение 229343
ключ понадобится для получения данных с канала с помощью либы google-api-python-client
устанавливаешь либу
Python:
pip install google-api-python-client
и перейдём к коду. для примера я возьму канал overbafer1 (no ad)
Посмотреть вложение 229344
как видно по скриншоту, последнее видео называется "История борьбы с атаками на мой проект: вымогательство,...". будем сравнивать результат кода с ним.
перейдём к самому коду:
Python:
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError

try:
    youtube = build('youtube', 'v3', developerKey='сюда вставляешь ключ, который получил на сайте') #подключение к api
    playlist_request = youtube.channels().list(
        part='contentDetails',
        forUsername='overbafer1' #тут заменишь на название канала, который тебе нужен
    ) #запрос для получения информации о плейлисте канала
    playlist_response = playlist_request.execute()
    playlist_id = playlist_response['items'][0]['contentDetails']['relatedPlaylists']['uploads'] #получаем id плейлиста канала
    videos_request = youtube.playlistItems().list(
        part='snippet',
        playlistId=playlist_id,
        maxResults=1
    ) #запрос для получения последнего видео на канале
    videos_response = videos_request.execute()
    video_title = videos_response['items'][0]['snippet']['title'] #извлекаем информацию о последнем видео
    video_url = 'https://www.youtube.com/watch?v=' + videos_response['items'][0]['snippet']['resourceId']['videoId'] #ссылка на последнее видео
 
    print(f'Название: {video_title}\nСсылка: {video_url}') #общий вывод

except HttpError as e:
    print(e)
получаем вывод:
Посмотреть вложение 229345

бесконечный цикл, который будет сравнивать последнее видео и делать вывод, если последнее видео не совпадает с записью(костыль в виде json):
сначала создаешь json файл с любым названием, в нём прописываешь:
Код:
{
    "last_video_url": ""
}
обновлённый код для питона с циклом в 60 секунд:

Python:
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
import json
import time

def youtube():
    try:
        youtube = build('youtube', 'v3', developerKey='твой апи ключ')
        playlist_request = youtube.channels().list(
            part='contentDetails',
            forUsername='название канала'
        )
        playlist_response = playlist_request.execute()
        playlist_id = playlist_response['items'][0]['contentDetails']['relatedPlaylists']['uploads']
        videos_request = youtube.playlistItems().list(
            part='snippet',
            playlistId=playlist_id,
            maxResults=1
        )
        videos_response = videos_request.execute()
        video_title = videos_response['items'][0]['snippet']['title']
        video_url = 'https://www.youtube.com/watch?v=' + videos_response['items'][0]['snippet']['resourceId']['videoId']

        with open('название твоего жсона.json', 'r') as f:
            check_url = json.load(f)
            if check_url["last_video_url"] == video_url:
                return
            check_url["last_video_url"] = video_url
            with open('название твоего жсона.json', 'w') as f:
                json.dump(check_url, f, ensure_ascii=False, indent=4)
                print(f'Название: {video_title}\nСсылка: {video_url}')

    except HttpError as e:
        print(e)

while True:
    youtube()
    time.sleep(60)
надеюсь, что подробно описал всё. если есть вопросы - задавай
ат души душевна в душу <3