0 / 0 / 0
Регистрация: 16.05.2023
Сообщений: 20

Как исправить ошибку API key?

21.07.2023, 19:56. Показов 1543. Ответов 14

Студворк — интернет-сервис помощи студентам
Здравствуйте, подскажите пожалуйста, как исправить ошибку: Please pass a valid API key.". Details: "[{'message': 'API key not valid. Please pass a valid API key.', 'domain': 'global', 'reason': 'badRequest'}]"

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from datetime import datetime, timedelta
 
API_KEY = '[AIzaSyCqOqXWF9NdUU9AYuiFbBWKDz26oqW4jFs]'
 
def поиск_каналов():
    youtube = build('youtube', 'v3', developerKey=API_KEY)
    каналы = []
    
    try:
        next_page_token = None
        while True:
            запрос = youtube.search().list(
                part='snippet',
                type='channel',
                order='relevance',
                maxResults=50,
                pageToken=next_page_token,
                q='',
                videoCategoryId='',
            )
            ответ = запрос.execute()
        
            for элемент in ответ['items']:
                название_канала = элемент['snippet']['channelTitle']
                идентификатор_канала = элемент['snippet']['channelId']
            
                if is_eligible_channel(идентификатор_канала):
                    каналы.append(название_канала)
            
            next_page_token = ответ.get('nextPageToken')
            if not next_page_token:
                break
                
    except HttpError as e:
        print(f'Произошла ошибка HTTP: {e}')
    
    return каналы
 
def is_eligible_channel(идентификатор_канала):
    youtube = build('youtube', 'v3', developerKey=API_KEY)
    
    try:
        запрос = youtube.channels().list(
            part='status',
            id=идентификатор_канала,
            fields='items(status/privacyStatus)',
        )
        ответ = запрос.execute()
    
        if ответ['items'][0]['status']['privacyStatus'] == 'public':
            return is_channel_monetized(идентификатор_канала)
    
    except HttpError as e:
        print(f'Произошла ошибка HTTP: {e}')
    
    return False
 
def is_channel_monetized(идентификатор_канала):
    youtube = build('youtube', 'v3', developerKey=API_KEY)
    
    try:
        запрос = youtube.channels().list(
            part='monetizationDetails',
            id=идентификатор_канала,
            fields='items(monetizationDetails/monetizationStatus)',
        )
        ответ = запрос.execute()
    
        if ответ['items'][0]['monetizationDetails']['monetizationStatus'] == 'enabled':
            return is_recent_video(идентификатор_канала)
    
    except HttpError as e:
        print(f'Произошла ошибка HTTP: {e}')
    
    return False
 
def is_recent_video(идентификатор_канала):
    youtube = build('youtube', 'v3', developerKey=API_KEY)
    
    try:
        запрос = youtube.search().list(
            part='snippet',
            channelId=идентификатор_канала,
            maxResults=1,
            order='date',
            type='video',
        )
        ответ = запрос.execute()
        
        if 'items' in ответ:
            дата_публикации = ответ['items'][0]['snippet']['publishedAt']
            дата_видео = datetime.strptime(дата_публикации, '%Y-%m-%dT%H:%M:%SZ').date()
            год_назад = datetime.now().date() - timedelta(days=365)
            return дата_видео >= год_назад
        
    except HttpError as e:
        print(f'Произошла ошибка HTTP: {e}')
    
    return False
 
def записать_в_txt(каналы):
    with open('youtube_channels.txt', 'w') as файл:
        for канал in каналы:
            файл.write(f'https://www.youtube.com/channel/{канал}\n')
 
if __name__ == '__main__':
    каналы = поиск_каналов()
    записать_в_txt(каналы)
Миниатюры
Как исправить ошибку API key?  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.07.2023, 19:56
Ответы с готовыми решениями:

Исправить ошибку в запросе api vk
Всем привет. Я скачал эту библиотеку, но у меня возникла проблема с запросом wall.getById с единственным аргументом в формате %d_%d....

Как исправить ошибку: NTLDR is missing Press any key to restart
Запускаю комп а там сразу же NTLDR is missing Press any key to restart Если честно то на компе вирусы есть просто поставил...

Как исправить ошибку Error Code 1215, cannot add foreign key constraint?
здравствуйте,создал базу данных по жильцам дома и оказываемым им услугам но почему то выдает ошибку в связующей таблице которую я не могу...

14
 Аватар для TimutGin
515 / 339 / 146
Регистрация: 16.02.2021
Сообщений: 626
21.07.2023, 21:06
Цитата Сообщение от GrenkA_with_Tea Посмотреть сообщение
API_KEY = '[AIzaSyCqOqXWF9NdUU9AYuiFbBWKDz26oqW4jFs]'
скорей всего скобки [] лишние
0
0 / 0 / 0
Регистрация: 16.05.2023
Сообщений: 20
22.07.2023, 15:24  [ТС]
TimutGin, Я попробовал переписать код, но появляется новая ошибка (показана на скриншоте).

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import requests
 
def search_channels():
    # Параметры для поиска каналов в YouTube Data API
    params = {
        'part': 'snippet',
        'q': '',
        'type': 'channel',
        'order': 'viewCount',
        'maxResults': 50,  # Максимальное количество результатов (максимум 50)
        'key': 'AIzaSyCqOqXWF9NdUU9AYuiFbBWKDz26oqW4jFs'  # Замените на ваш API ключ, полученный от YouTube Data API
    }
 
    # Поиск каналов по заданным параметрам
    response = requests.get('https://www.googleapis.com/youtube/v3/search', params=params)
    data = response.json()
 
    # Фильтрация каналов по количеству подписчиков и дате последнего видео
    channels = []
    for item in data['items']:
        channel_id = item['snippet']['channelId']
        channel_title = item['snippet']['title']
 
        # Запрос информации о канале
        channel_params = {
            'part': 'snippet,statistics',
            'id': channel_id,
            'key': 'AIzaSyCqOqXWF9NdUU9AYuiFbBWKDz26oqW4jFs'  # Замените на ваш API ключ, полученный от YouTube Data API
        }
        channel_response = requests.get('https://www.googleapis.com/youtube/v3/channels', params=channel_params)
        channel_data = channel_response.json()
 
        # Проверка условий и добавление канала в список
        if 'items' in channel_data and len(channel_data['items']) > 0:
            channel = channel_data['items'][0]
            subscribers_count = int(channel['statistics']['subscriberCount'])
            last_video_date = channel['snippet']['publishedAt']
 
            # Проверка условий
            if subscribers_count >= 1000 and last_video_date >= '2021-01-01T00:00:00Z' and channel['monetizationDetails']['monetizationStatus'] == 'enabled':
                channels.append((channel_title, f'https://www.youtube.com/channel/{channel_id}'))
 
    return channels
 
def save_channels_to_file(channels):
    # Запись ссылок на каналы в текстовый документ
    with open('channels.txt', 'w') as file:
        for channel_title, channel_link in channels:
            file.write(f'{channel_title}: {channel_link}\n')
 
# Вызов функций для поиска и сохранения каналов
found_channels = search_channels()
save_channels_to_file(found_channels)
Миниатюры
Как исправить ошибку API key?  
0
 Аватар для TimutGin
515 / 339 / 146
Регистрация: 16.02.2021
Сообщений: 626
22.07.2023, 15:35
GrenkA_with_Tea, значит ключ с таким именем отсутствует
0
0 / 0 / 0
Регистрация: 16.05.2023
Сообщений: 20
22.07.2023, 16:02  [ТС]
TimutGin, Я уже несколько ключей поменял, ничего не помогает
0
 Аватар для TimutGin
515 / 339 / 146
Регистрация: 16.02.2021
Сообщений: 626
22.07.2023, 16:24
Цитата Сообщение от GrenkA_with_Tea Посмотреть сообщение
Я уже несколько ключей поменял, ничего не помогает
я имею ввиду ключ monetizationDetails в словаре channel отсутствует. В документации нужно смотреть.
0
0 / 0 / 0
Регистрация: 16.05.2023
Сообщений: 20
22.07.2023, 16:40  [ТС]
TimutGin,
Цитата Сообщение от TimutGin Посмотреть сообщение
я имею ввиду ключ monetizationDetails в словаре channel отсутствует. В документации нужно смотреть.
Можно это как-то исправить?

Добавлено через 4 минуты
TimutGin, пробовал делать так.
Python
1
if subscribers_count >= 1000 and last_video_date >= '2021-01-01T00:00:00Z' and 'monetizationDetails' in channel and channel['monetizationDetails']['monetizationStatus'] == 'enabled':
Компилируется без ошибок, но не создаётся txt файл
0
 Аватар для TimutGin
515 / 339 / 146
Регистрация: 16.02.2021
Сообщений: 626
22.07.2023, 17:25
Цитата Сообщение от GrenkA_with_Tea Посмотреть сообщение
TimutGin, пробовал делать так.
проблема в том что
Цитата Сообщение от TimutGin Посмотреть сообщение
ключ monetizationDetails в словаре channel отсутствует.
достаточно после 35 строки вставить print(channel)
нет там monetizationDetails
в документации тоже не нашёл данного параметра
0
0 / 0 / 0
Регистрация: 16.05.2023
Сообщений: 20
22.07.2023, 18:21  [ТС]
TimutGin, По прежнему ничего не поменялось. Я так понимаю, что txt файл должен создастся в одной папке с py файлом?
0
 Аватар для TimutGin
515 / 339 / 146
Регистрация: 16.02.2021
Сообщений: 626
22.07.2023, 22:40
Цитата Сообщение от GrenkA_with_Tea Посмотреть сообщение
Я так понимаю, что txt файл должен создастся в одной папке с py файлом?
Правильно txt файл создастся,если убрать это ошибочное условие "and channel['monetizationDetails']['monetizationStatus'] == 'enabled'"
0
0 / 0 / 0
Регистрация: 16.05.2023
Сообщений: 20
23.07.2023, 16:17  [ТС]
TimutGin, Надо ли это условие заменять другим?
0
0 / 0 / 0
Регистрация: 16.05.2023
Сообщений: 20
24.07.2023, 15:23  [ТС]
TimutGin, создаётся текстовый файл, но почему-то он пустой.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import requests
 
def search_channels():
    # Параметры для поиска каналов в YouTube Data API
    params = {
        'part': 'snippet',
        'q': '',
        'type': 'channel',
        'order': 'viewCount',
        'maxResults': 50,  # Максимальное количество результатов (максимум 50)
        'key': 'AIzaSyDqwP9xgncITVtZ4oWuh8bcaALyA5o12eA'  # Замените на ваш API ключ, полученный от YouTube Data API
    }
 
    # Поиск каналов по заданным параметрам
    response = requests.get('https://www.googleapis.com/youtube/v3/search', params=params)
    data = response.json()
 
    # Фильтрация каналов по количеству подписчиков и дате последнего видео
    channels = []
    for item in data['items']:
        channel_id = item['snippet']['channelId']
        channel_title = item['snippet']['title']
 
        # Запрос информации о канале
        channel_params = {
            'part': 'snippet,statistics',
            'id': channel_id,
            'key': 'AIzaSyDqwP9xgncITVtZ4oWuh8bcaALyA5o12eA'  # Замените на ваш API ключ, полученный от YouTube Data API
        }
        channel_response = requests.get('https://www.googleapis.com/youtube/v3/channels', params=channel_params)
        channel_data = channel_response.json()
 
        # Проверка условий и добавление канала в список
        if 'items' in channel_data and len(channel_data['items']) > 0:
            channel = channel_data['items'][0]
            subscribers_count = int(channel['statistics']['subscriberCount'])
            last_video_date = channel['snippet']['publishedAt']
 
            # Проверка наличия информации о монетизации
            if 'monetizationDetails' in channel and channel['monetizationDetails']['monetizationStatus'] == 'enabled':
                # Проверка условий
                if subscribers_count >= 1000 and last_video_date >= '2021-01-01T00:00:00Z':
                    channels.append((channel_title, f'https://www.youtube.com/channel/{channel_id}'))
 
    return channels
 
def save_channels_to_file(channels):
    # Запись ссылок на каналы в текстовый документ
    with open('C:/Users/GREEN/Desktop/abc/channels.txt', 'w') as file:
        for channel_title, channel_link in channels:
            file.write(f'{channel_title}: {channel_link}\n')
 
# Вызов функций для поиска и сохранения каналов
found_channels = search_channels()
save_channels_to_file(found_channels)
0
 Аватар для TimutGin
515 / 339 / 146
Регистрация: 16.02.2021
Сообщений: 626
24.07.2023, 15:44
Вместо этого
# Проверка наличия информации о монетизации
if 'monetizationDetails' in channel and channel['monetizationDetails']['monetizationStatus'] == 'enabled':
# Проверка условий
if subscribers_count >= 1000 and last_video_date >= '2021-01-01T00:00:00Z':
channels.append((channel_title, f'https://www.youtube.com/channel/{channel_id}'))
Python
1
2
if subscribers_count >= 1000 and last_video_date >= '2021-01-01T00:00:00Z':
    channels.append((channel_title, f'https://www.youtube.com/channel/{channel_id}'))
0
0 / 0 / 0
Регистрация: 16.05.2023
Сообщений: 20
24.07.2023, 17:20  [ТС]
TimutGin, Всё вроде работает
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import requests
 
def search_channels():
    # Параметры для поиска каналов в YouTube Data API
    params = {
        'part': 'snippet',
        'q': '',
        'type': 'channel',
        'order': 'viewCount',
        'maxResults': 50,  # Максимальное количество результатов (максимум 50)
        'key': 'AIzaSyDqwP9xgncITVtZ4oWuh8bcaALyA5o12eA'  # Замените на ваш API ключ, полученный от YouTube Data API
    }
 
    # Поиск каналов по заданным параметрам
    response = requests.get('https://www.googleapis.com/youtube/v3/search', params=params)
    data = response.json()
 
    # Фильтрация каналов по количеству подписчиков и дате последнего видео
    channels = []
    for item in data['items']:
        channel_id = item['snippet']['channelId']
        channel_title = item['snippet']['title']
 
        # Запрос информации о канале
        channel_params = {
            'part': 'snippet,statistics',
            'id': channel_id,
            'key': 'AIzaSyDqwP9xgncITVtZ4oWuh8bcaALyA5o12eA'  # Замените на ваш API ключ, полученный от YouTube Data API
        }
        channel_response = requests.get('https://www.googleapis.com/youtube/v3/channels', params=channel_params)
        channel_data = channel_response.json()
 
        # Проверка условий и добавление канала в список
        if 'items' in channel_data and len(channel_data['items']) > 0:
            channel = channel_data['items'][0]
            subscribers_count = int(channel['statistics']['subscriberCount'])
            last_video_date = channel['snippet']['publishedAt']
 
            if subscribers_count >= 1000 and last_video_date >= '2023-01-01T00:00:00Z':
                channels.append((channel_title, f'https://www.youtube.com/channel/{channel_id}'))
 
    return channels
 
def save_channels_to_file(channels):
    # Запись ссылок на каналы в текстовый документ с кодировкой UTF-8
    with open('C:/Users/GREEN/Desktop/abc/channels.txt', 'w', encoding='utf-8') as file:
        for channel_title, channel_link in channels:
            file.write(f'{channel_title}: {channel_link}\n')
 
# Вызов функций для поиска и сохранения каналов
found_channels = search_channels()
save_channels_to_file(found_channels)
 
print('\nСсылки на каналы успешно записаны в файл channels.txt')
Но не работает это условие
Python
1
last_video_date >= '2023-01-01T00:00:00Z':
0
 Аватар для TimutGin
515 / 339 / 146
Регистрация: 16.02.2021
Сообщений: 626
24.07.2023, 17:44
Цитата Сообщение от GrenkA_with_Tea Посмотреть сообщение
Но не работает это условие
last_video_date >= '2023-01-01T00:00:00Z':
Оно работает, но в данном случае оно проверяет дату создания канала,чтоб она была не познее 01.01.2023. Как проверить дату последнего загруженого видео я незнаю, нужно изучать документацию.Создайте новую тему,возможно кто-нибудь подскажет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.07.2023, 17:44
Помогаю со студенческими работами здесь

Как исправить ошибку при импорте базы данных MySQL (Cannot add foreign key constraint)?
При импорте базы данных из бэкапа возникает ошибка: Подскажите, пожалуйста, как её исправить? И что нужно исправить в БД, чтобы она не...

Как исправить ошибку в api запросе?
Написал запрос на открытие маркет ордера для сайта Huobi по документации(https://huobiapi.github.io/docs/spot/v1/en/#introduction-7).Запрос...

VK API выдает ошибку, как исправить?
VK API выдает ошибку, как исправить? Сама ошибка: {"error":{"error_code":5,"error_msg":"User authorization failed: You should specify...

Как исправить ошибку The type 'JFrame' is not API ?
Description Resource Path Location Type Access restriction: The type 'JFrame' is not API (restriction on required library 'C:\Program...

Как исправить ошибку "An item with the same key has already been added"?
У меня есть код: using System; using System.Collections.Generic; namespace Проверка { class Program { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru