68 lines
2.3 KiB
Python
68 lines
2.3 KiB
Python
"""
|
|
Video + Music Stream Telegram Bot
|
|
Copyright (c) 2022-present levina=lab <https://github.com/levina-lab>
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but without any warranty; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <https://www.gnu.org/licenses/licenses.html>
|
|
"""
|
|
|
|
|
|
from pyrogram import Client, errors
|
|
from pyrogram.types import (
|
|
InlineQuery,
|
|
InlineQueryResultArticle,
|
|
InputTextMessageContent,
|
|
)
|
|
from youtubesearchpython import VideosSearch
|
|
|
|
|
|
@Client.on_inline_query()
|
|
async def inline(client: Client, query: InlineQuery):
|
|
answers = []
|
|
search_query = query.query.lower().strip().rstrip()
|
|
|
|
if search_query == "":
|
|
await client.answer_inline_query(
|
|
query.id,
|
|
results=answers,
|
|
switch_pm_text="Type the YouTube video name to search !",
|
|
switch_pm_parameter="help",
|
|
cache_time=0,
|
|
)
|
|
else:
|
|
search = VideosSearch(search_query, limit=50)
|
|
|
|
for result in search.result()["result"]:
|
|
answers.append(
|
|
InlineQueryResultArticle(
|
|
title=result["title"],
|
|
description="{}, {} views.".format(
|
|
result["duration"], result["viewCount"]["short"]
|
|
),
|
|
input_message_content=InputTextMessageContent(
|
|
"🔗 https://www.youtube.com/watch?v={}".format(result["id"])
|
|
),
|
|
thumb_url=result["thumbnails"][0]["url"],
|
|
)
|
|
)
|
|
|
|
try:
|
|
await query.answer(results=answers, cache_time=0)
|
|
except errors.QueryIdInvalid:
|
|
await query.answer(
|
|
results=answers,
|
|
cache_time=0,
|
|
switch_pm_text="error: search timed out",
|
|
switch_pm_parameter="",
|
|
)
|