Alide21 commited on
Commit
2e922e6
·
verified ·
1 Parent(s): 990a754

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +37 -13
main.py CHANGED
@@ -4,6 +4,7 @@ import subprocess
4
  from datetime import datetime
5
  from flask import Flask
6
  import threading
 
7
 
8
  # 1. إعداد سيرفر ويب وهمي لمنع وضع النوم
9
  app = Flask(__name__)
@@ -16,21 +17,38 @@ def run_flask():
16
 
17
  # 2. إعدادات البث (يوتيوب)
18
  STREAM_URL = "rtmp://a.rtmp.youtube.com/live2/"
19
- import os
20
-
21
- # قراءة مفتاح البث من الـ Secrets بأمان
22
  STREAM_KEY = os.environ.get("STREAM_KEY")
23
 
24
- # تأكد من أن المفتاح موجود لتجنب الأخطاء
25
- if not STREAM_KEY:
26
- print("Error: STREAM_KEY not found in Secrets!")
27
-
28
  # موعد رمضان المتوقع (20 مارس 2026)
29
  RAMADAN_DATE = datetime(2026, 3, 20, 0, 0, 0)
30
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  def start_stream():
32
- # فلتر FFmpeg ذكي يحسب الأيام والساعات والدقائق لحظياً
33
- # الخلفية سوداء، والنص في المنتصف
 
 
 
34
  ffmpeg_cmd = [
35
  'ffmpeg',
36
  '-re', '-f', 'lavfi', '-i', 'color=c=black:s=1280x720:r=30',
@@ -41,16 +59,22 @@ def start_stream():
41
  f"{STREAM_URL}{STREAM_KEY}"
42
  ]
43
 
44
- subprocess.run(ffmpeg_cmd)
 
45
 
46
  if __name__ == "__main__":
47
- # تشغيل سيرفر الويب في خيط منفصل
48
  threading.Thread(target=run_flask, daemon=True).start()
49
 
50
- print("Starting Stream...")
 
 
 
 
 
51
  while True:
52
  try:
53
  start_stream()
54
  except Exception as e:
55
- print(f"Error: {e}")
56
  time.sleep(10)
 
4
  from datetime import datetime
5
  from flask import Flask
6
  import threading
7
+ import sys
8
 
9
  # 1. إعداد سيرفر ويب وهمي لمنع وضع النوم
10
  app = Flask(__name__)
 
17
 
18
  # 2. إعدادات البث (يوتيوب)
19
  STREAM_URL = "rtmp://a.rtmp.youtube.com/live2/"
 
 
 
20
  STREAM_KEY = os.environ.get("STREAM_KEY")
21
 
 
 
 
 
22
  # موعد رمضان المتوقع (20 مارس 2026)
23
  RAMADAN_DATE = datetime(2026, 3, 20, 0, 0, 0)
24
 
25
+ # --- وظيفة عداد الشاشة ---
26
+ def print_console_countdown():
27
+ while True:
28
+ now = datetime.now()
29
+ remaining = RAMADAN_DATE - now
30
+
31
+ if remaining.total_seconds() > 0:
32
+ # حساب الأيام، الساعات، الدقائق، والثواني
33
+ days = remaining.days
34
+ hours, rem = divmod(remaining.seconds, 3600)
35
+ minutes, seconds = divmod(rem, 60)
36
+
37
+ # طباعة العداد في سطر واحد يتحدث باستمرار (\r تعيد المؤشر لأول السطر)
38
+ sys.stdout.write(f"\r[Live Monitor] Remaining: {days} Days {hours:02}:{minutes:02}:{seconds:02} | Press Ctrl+C to stop")
39
+ sys.stdout.flush()
40
+ else:
41
+ sys.stdout.write("\r[!!!] RAMADAN HAS STARTED! Mubarak! ")
42
+ sys.stdout.flush()
43
+
44
+ time.sleep(1)
45
+
46
  def start_stream():
47
+ if not STREAM_KEY:
48
+ print("\nError: STREAM_KEY not found in Secrets!")
49
+ return
50
+
51
+ # فلتر FFmpeg ذكي يحسب الوقت للبث
52
  ffmpeg_cmd = [
53
  'ffmpeg',
54
  '-re', '-f', 'lavfi', '-i', 'color=c=black:s=1280x720:r=30',
 
59
  f"{STREAM_URL}{STREAM_KEY}"
60
  ]
61
 
62
+ # تشغيل البث وإخفاء رسائل FFmpeg المزعجة لنرى العداد بوضوح
63
+ subprocess.run(ffmpeg_cmd, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
64
 
65
  if __name__ == "__main__":
66
+ # 1. تشغيل سيرفر الويب (للمنصة)
67
  threading.Thread(target=run_flask, daemon=True).start()
68
 
69
+ # 2. تشغيل عداد الشاشة (للمراقبة)
70
+ threading.Thread(target=print_console_countdown, daemon=True).start()
71
+
72
+ print("--- Ramadan Stream System Started ---")
73
+ print(f"Target Date: {RAMADAN_DATE}")
74
+
75
  while True:
76
  try:
77
  start_stream()
78
  except Exception as e:
79
+ print(f"\nStream Error: {e}")
80
  time.sleep(10)