Skip to content

Commit 8b2edbe

Browse files
committed
Ask for category during search
1 parent 43ddcba commit 8b2edbe

File tree

4 files changed

+51
-7
lines changed

4 files changed

+51
-7
lines changed

app/plugins/functions/keyboards.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,33 @@ def language(self, welcome=False):
5454
self.client.misc.split_list(results, 2),
5555
)
5656

57+
def categories(self, query):
58+
category_map = {
59+
"movies": "🎬 Movies",
60+
"tv": "📺 TV",
61+
"games": "🎮 Games",
62+
"music": "🎵 Music",
63+
"apps": "🖥️ Apps",
64+
"anime": "🎎 Anime",
65+
"documentaries": "🎥 Documentaries",
66+
"xxx": "📦 Other",
67+
}
68+
69+
# Truncate query to the max safe length to avoid hitting Telegram's limit
70+
truncated_query = query[:46]
71+
72+
buttons = [
73+
types.InlineKeyboardButton(
74+
text=display_text,
75+
callback_data=f"cat_{category_name}_{truncated_query}",
76+
)
77+
for category_name, display_text in category_map.items()
78+
]
79+
80+
return types.InlineKeyboardMarkup(
81+
self.client.misc.split_list(buttons, 2),
82+
)
83+
5784
def torrent_info(self, user_lang, hash, bookmarked=False):
5885
if bookmarked:
5986
results = [

app/plugins/groups/search.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,4 @@ async def search(Client, message):
99
text=Client.language.STR("queryToSearch", user_lang),
1010
reply_to_message_id=message.id,
1111
reply_markup=types.ForceReply(selective=True),
12-
)
12+
)

app/plugins/py1337x/search.py

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,32 @@
1111
async def search(Client: Client, message):
1212
user_lang = await Client.misc.user_lang(message)
1313

14-
msg = await Client.send_message(
14+
await Client.send_message(
1515
chat_id=message.chat.id,
16-
text=Client.language.STR("searchingQuery", user_lang).format(message.text),
16+
text=Client.language.STR("selectCategory", user_lang),
1717
reply_to_message_id=message.id,
18+
reply_markup=Client.keyboard.categories(message.text),
1819
)
1920

20-
response = await Client.py1337x.search(message.text)
21+
22+
@Client.on_callback_query(filters.regex(r"cat_"))
23+
async def search_category(Client, callback_query):
24+
_, category, query = callback_query.data.split("_", 2)
25+
user_lang = await Client.misc.user_lang(callback_query)
26+
27+
await Client.edit_message_text(
28+
chat_id=callback_query.message.chat.id,
29+
message_id=callback_query.message.id,
30+
text=Client.language.STR("searchingQuery", user_lang).format(query),
31+
)
32+
33+
response = await Client.py1337x.search(query, category=category)
2134

2235
text = Client.struct.search_message(response.to_dict(), user_lang)
2336

2437
await Client.edit_message_text(
25-
chat_id=message.chat.id,
26-
message_id=msg.id,
38+
chat_id=callback_query.message.chat.id,
39+
message_id=callback_query.message.id,
2740
text=text,
28-
reply_markup=Client.keyboard.sites(message.text),
41+
reply_markup=Client.keyboard.sites(query),
2942
)

app/torrenthunt.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33
import asyncio
44
from os import environ
55
from sys import argv
6+
from dotenv import load_dotenv
7+
8+
# It's crucial to load the environment variables before other imports
9+
load_dotenv() # noqa
610

711
import sentry_sdk
812
import uvloop

0 commit comments

Comments
 (0)