-
Автор темы
- #1
Бот для нахождения конкурсов Neverlose на Youtube V2
В config.py вставте токен и токен телеграмма
Пожалуйста, авторизуйтесь для просмотра ссылки.
Пожалуйста, авторизуйтесь для просмотра ссылки.
Зайдите на
В верхнем правом углу экрана нажмите на название текущего проекта, затем выберите нужный проект из списка или создайте новый проект, если необходимо.
После выбора проекта в левом верхнем углу экрана нажмите на иконку "Навигация по меню" (три горизонтальные полосы).
В боковом меню выберите "API и услуги".
В разделе "API и услуги" нажмите на "Учетные данные".
Теперь на странице "Учетные данные" для выбранного проекта. Здесь вы можете создать новый ключ API
А как получить токен Телеграмм не буду объяснять потому что это легче легкого
Пожалуйста, авторизуйтесь для просмотра ссылки.
.(Не реклама)В верхнем правом углу экрана нажмите на название текущего проекта, затем выберите нужный проект из списка или создайте новый проект, если необходимо.
После выбора проекта в левом верхнем углу экрана нажмите на иконку "Навигация по меню" (три горизонтальные полосы).
В боковом меню выберите "API и услуги".
В разделе "API и услуги" нажмите на "Учетные данные".
Теперь на странице "Учетные данные" для выбранного проекта. Здесь вы можете создать новый ключ API
А как получить токен Телеграмм не буду объяснять потому что это легче легкого
открывает cmd переходим в папку и прописываем: main.py
1.Почему я указал 10 вышло только 6? потому что бот ищет актуальные и только с розыгрышами и их может быть меньше
2.Бот не запускается если бот не запускается то попробуйте прописать pip install pycryptodome
2.Бот не запускается если бот не запускается то попробуйте прописать pip install pycryptodome
даже у меня выходят апдейты быстрее чем у neverlose
Для просмотра содержимого вам необходимо авторизоваться.
Python:
import googleapiclient.discovery
from datetime import datetime, timedelta
from googleapiclient.discovery import *
from telegram import Update, InlineKeyboardButton, InlineKeyboardMarkup
from telegram.ext import Updater, CommandHandler, CallbackContext, MessageHandler, Filters
from config import TOKEN, YOUTUBE_API_KEY
api_version = "v3"
query = "NEVERLOSE SUB GIVEAWAY"
def search_youtube_videos(query, max_results):
youtube = googleapiclient.discovery.build("youtube", api_version, developerKey=YOUTUBE_API_KEY)
three_days_ago = datetime.utcnow() - timedelta(days=3)
three_days_ago_iso = three_days_ago.isoformat("T") + "Z"
request = youtube.search().list(
part="id,snippet",
type="video",
q=query,
videoDefinition="any",
maxResults=50,
publishedAfter=three_days_ago_iso,
fields="items(id(videoId),snippet(title,channelTitle))"
)
response = request.execute()
video_links = []
query_words = query.upper().split()
for item in response["items"]:
title = item["snippet"]["title"].upper()
if all(word in title for word in query_words):
video_id = item["id"]["videoId"]
video_url = f"https://www.youtube.com/watch?v={video_id}"
video_links.append(video_url)
if len(video_links) == max_results:
break
return video_links
def start(update: Update, context: CallbackContext) -> None:
update.message.reply_text("Введите количество каналов, которые вы хотите получить (например, 20):")
def get_channels(update: Update, context: CallbackContext) -> None:
try:
max_results = int(update.message.text)
if max_results < 1 or max_results > 50:
update.message.reply_text("Введите число от 1 до 50:")
return
video_links = search_youtube_videos(query, max_results)
keyboard = []
for link in video_links:
link = link.strip()
keyboard.append([InlineKeyboardButton("Канал", url=link)])
reply_markup = InlineKeyboardMarkup(keyboard)
update.message.reply_text("Ниже представлены найденные каналы:", reply_markup=reply_markup)
except ValueError:
update.message.reply_text("Введите корректное число:")
def main():
updater = Updater(TOKEN)
dispatcher = updater.dispatcher
dispatcher.add_handler(CommandHandler("start", start))
dispatcher.add_handler(MessageHandler(Filters.text & ~Filters.command, get_channels))
updater.start_polling()
updater.idle()
if __name__ == "__main__":
main()
Последнее редактирование: