Arefgh-00 commited on
Commit
4f11bec
·
verified ·
1 Parent(s): 66a817d

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +90 -0
app.py ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import asyncio
3
+ from pyrogram import Client, filters
4
+ from fastapi import FastAPI, Request
5
+ from fastapi.responses import StreamingResponse
6
+ import uvicorn
7
+
8
+ # دریافت اطلاعات از بخش Secrets (تنظیم شده در Settings > Secrets)
9
+ API_ID = int(os.environ.get("API_ID"))
10
+ API_HASH = os.environ.get("API_HASH")
11
+ BOT_TOKEN = os.environ.get("BOT_TOKEN")
12
+
13
+ # ساخت اپلیکیشن سرور و ربات
14
+ app = FastAPI()
15
+ bot = Client("SwiftStreamBot", api_id=API_ID, api_hash=API_HASH, bot_token=BOT_TOKEN)
16
+
17
+ @app.on_event("startup")
18
+ async def startup():
19
+ await bot.start()
20
+ print("--- Bot is Started! ---")
21
+
22
+ @app.get("/")
23
+ async def health_check():
24
+ return {"status": "Online", "message": "SwiftStream Server is running smoothly!"}
25
+
26
+ # ۱. دستور /start (پیام خوش‌آمدگویی دوزبانه)
27
+ @bot.on_message(filters.command("start") & filters.private)
28
+ async def start_command(client, message):
29
+ welcome_text = (
30
+ "🚀 **Welcome to SwiftStream Bot**\n"
31
+ "━━━━━━━━━━━━━━━━━━━━\n"
32
+ "🇮🇷 **فارسی:**\n"
33
+ "من به شما کمک می‌کنم فایل‌های تلگرام را با **سرعت بالا** و **بدون فیلترشکن** دانلود کنید.\n\n"
34
+ "✅ **چطور استفاده کنیم؟**\n"
35
+ "۱- فایل یا ویدیو را برای من بفرستید.\n"
36
+ "۲- لینک مستقیم و پرسرعت دریافت کنید.\n"
37
+ "۳- با حداکثر سرعت دانلود کنید!\n\n"
38
+ "━━━━━━━━━━━━━━━━━━━━\n"
39
+ "🇬🇧 **English:**\n"
40
+ "I help you download Telegram files with **High Speed** and **No VPN** required.\n\n"
41
+ "✅ **How to use?**\n"
42
+ "1- Send or forward a file to me.\n"
43
+ "2- Get a direct high-speed link.\n"
44
+ "3- Download at maximum speed!\n\n"
45
+ "👇 **Send me a file to start!**\n"
46
+ "👇 **برای شروع یک فایل بفرستید!**"
47
+ )
48
+ await message.reply_text(welcome_text)
49
+
50
+ # ۲. دریافت فایل و تولید لینک
51
+ @bot.on_message(filters.private & (filters.document | filters.video | filters.audio))
52
+ async def handle_message(client, message):
53
+ # تشخیص نوع فایل و گرفتن ID آن
54
+ media = message.document or message.video or message.audio
55
+ file_id = media.file_id
56
+ file_name = getattr(media, 'file_name', 'SwiftStream_File')
57
+
58
+ # ساخت آدرس Space شما (Hugging Face به طور خودکار این متغیر را دارد)
59
+ # اگر از Cloudflare استفاده می‌کنی، می‌توانی آدرس آن را اینجا دستی جایگزین کنی
60
+ space_id = os.environ.get('SPACE_ID', 'user/repo').replace('/', '-')
61
+ base_url = f"https://{space_id}.hf.space"
62
+
63
+ download_link = f"{base_url}/download/{file_id}"
64
+
65
+ response_text = (
66
+ "✅ **File Received! / فایل دریافت شد**\n\n"
67
+ f"📄 **Name:** `{file_name}`\n"
68
+ f"🔗 **Direct Link:** [Click to Download]({download_link})\n\n"
69
+ "⚠️ **Note:** Link expires in 1 hour.\n"
70
+ "⚠️ **توجه:** لینک تا ۱ ساعت دیگر منقضی می‌شود."
71
+ )
72
+
73
+ await message.reply_text(response_text, disable_web_page_preview=True)
74
+
75
+ # ۳. عملیات استریم (انتقال مستقیم فایل از تلگرام به کاربر)
76
+ @app.get("/download/{file_id}")
77
+ async def stream_file(file_id: str):
78
+ async def file_generator():
79
+ # دانلود تکه تکه فایل از تلگرام و ارسال همزمان به کاربر
80
+ async for chunk in bot.iter_download(file_id):
81
+ yield chunk
82
+
83
+ return StreamingResponse(
84
+ file_generator(),
85
+ media_type="application/octet-stream"
86
+ )
87
+
88
+ # اجرا روی پورت مخصوص هانگینگ فیس
89
+ if __name__ == "__main__":
90
+ uvicorn.run(app, host="0.0.0.0", port=7860)