pmrony commited on
Commit
199b5af
Β·
verified Β·
1 Parent(s): 78c0d08

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +85 -84
app.py CHANGED
@@ -643,6 +643,91 @@ async def send_to_specific_group(client, message):
643
  except Exception as e:
644
  await status.edit_text(f"❌ <b>Failed to send!</b>\nError: {e}", parse_mode=enums.ParseMode.HTML)
645
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
646
  async def clone_videos_background(client, source_id, dest_id, status_msg):
647
  try:
648
  progress_res = await db_query(lambda: supabase.table('clone_progress').select('last_copied_id').eq('source_id', source_id).eq('dest_id', dest_id).execute())
@@ -732,90 +817,6 @@ async def start_cloning(client, message):
732
  asyncio.create_task(clone_videos_background(client, source_id, dest_id, status_msg))
733
 
734
 
735
- # ================= MASS CLONE FROM ALL GROUPS =================
736
- async def clone_all_background(client, dest_id, status_msg):
737
- try:
738
- groups_res = await db_query(lambda: supabase.table('groups').select('group_id').execute())
739
- if not groups_res.data:
740
- return await status_msg.edit_text("❌ <b>No groups found in database.</b>", parse_mode=enums.ParseMode.HTML)
741
-
742
- groups = [g['group_id'] for g in groups_res.data]
743
- total_groups = len(groups)
744
-
745
- await status_msg.edit_text(f"βœ… Found <b>{total_groups}</b> groups.\nπŸš€ Starting mass cloning from oldest videos...", parse_mode=enums.ParseMode.HTML)
746
-
747
- total_copied = 0
748
-
749
- for index, source_id in enumerate(groups, 1):
750
- if source_id == dest_id or source_id == STORAGE_CHANNEL_ID or source_id == PREMIUM_CHANNEL_ID:
751
- continue
752
-
753
- try:
754
- await status_msg.edit_text(f"⏳ <b>Cloning Group {index}/{total_groups}</b>\nID: <code>{source_id}</code>\nTotal Copied So Far: <b>{total_copied}</b>", parse_mode=enums.ParseMode.HTML)
755
- except Exception: pass
756
-
757
- progress_res = await db_query(lambda: supabase.table('clone_progress').select('last_copied_id').eq('source_id', source_id).eq('dest_id', dest_id).execute())
758
- last_copied_id = progress_res.data[0]['last_copied_id'] if progress_res.data else None
759
-
760
- video_ids = []
761
- retries = 3
762
- while retries > 0:
763
- try:
764
- async for msg in client.search_messages(source_id, filter=enums.MessagesFilter.VIDEO):
765
- if last_copied_id and msg.id <= last_copied_id: continue
766
- video_ids.append(msg.id)
767
- if len(video_ids) % 100 == 0: await asyncio.sleep(0.1)
768
- break
769
- except FloodWait as e:
770
- await asyncio.sleep(e.value + 1)
771
- except Exception as e:
772
- err_msg = str(e).lower()
773
- if "disconnect" in err_msg or "connection" in err_msg or "timeout" in err_msg:
774
- retries -= 1
775
- video_ids = []
776
- await asyncio.sleep(5)
777
- else:
778
- break
779
-
780
- if not video_ids:
781
- continue
782
-
783
- video_ids.reverse()
784
-
785
- for msg_id in video_ids:
786
- copy_retries = 3
787
- copy_success = False
788
- while copy_retries > 0:
789
- try:
790
- await client.copy_message(chat_id=dest_id, from_chat_id=source_id, message_id=msg_id)
791
- total_copied += 1
792
- await save_progress(source_id, dest_id, msg_id)
793
- copy_success = True
794
- break
795
- except FloodWait as e:
796
- await asyncio.sleep(e.value + 2)
797
- except Exception as e:
798
- err_msg = str(e).lower()
799
- if "disconnect" in err_msg or "connection" in err_msg or "timeout" in err_msg:
800
- copy_retries -= 1
801
- await asyncio.sleep(3)
802
- else:
803
- break
804
- await asyncio.sleep(2.5)
805
-
806
- await status_msg.edit_text(f"πŸŽ‰ <b>Mass Cloning Completely Finished!</b>\n\nTotal Videos Copied from all groups: <b>{total_copied}</b>", parse_mode=enums.ParseMode.HTML)
807
-
808
- except Exception as e:
809
- try: await status_msg.edit_text(f"❌ <b>Cloning Error:</b> {e}", parse_mode=enums.ParseMode.HTML)
810
- except: pass
811
-
812
- @bot.on_message(filters.command("cloneall") & filters.private & filters.user(ADMIN_IDS))
813
- async def start_mass_cloning(client, message):
814
- dest_id = -1003798479478
815
- status_msg = await message.reply(f"⏳ <b>Initializing mass cloning task to <code>{dest_id}</code>...</b>", parse_mode=enums.ParseMode.HTML)
816
- asyncio.create_task(clone_all_background(client, dest_id, status_msg))
817
-
818
-
819
  @bot.on_message(filters.command("upload") & filters.private & filters.user(ADMIN_IDS))
820
  async def set_upload_mode(client, message):
821
  global upload_mode
 
643
  except Exception as e:
644
  await status.edit_text(f"❌ <b>Failed to send!</b>\nError: {e}", parse_mode=enums.ParseMode.HTML)
645
 
646
+
647
+ # ================= MASS CLONE FROM ALL GROUPS =================
648
+ async def clone_all_background(client, dest_id, status_msg):
649
+ try:
650
+ groups_res = await db_query(lambda: supabase.table('groups').select('group_id').execute())
651
+ if not groups_res.data:
652
+ return await status_msg.edit_text("❌ <b>No groups found in database.</b>", parse_mode=enums.ParseMode.HTML)
653
+
654
+ groups = [g['group_id'] for g in groups_res.data]
655
+ total_groups = len(groups)
656
+
657
+ await status_msg.edit_text(f"βœ… Found <b>{total_groups}</b> groups.\nπŸš€ Starting mass cloning from oldest videos...", parse_mode=enums.ParseMode.HTML)
658
+
659
+ total_copied = 0
660
+
661
+ for index, source_id in enumerate(groups, 1):
662
+ if source_id == dest_id or source_id == STORAGE_CHANNEL_ID or source_id == PREMIUM_CHANNEL_ID:
663
+ continue
664
+
665
+ try:
666
+ await status_msg.edit_text(f"⏳ <b>Cloning Group {index}/{total_groups}</b>\nID: <code>{source_id}</code>\nTotal Copied So Far: <b>{total_copied}</b>", parse_mode=enums.ParseMode.HTML)
667
+ except Exception: pass
668
+
669
+ progress_res = await db_query(lambda: supabase.table('clone_progress').select('last_copied_id').eq('source_id', source_id).eq('dest_id', dest_id).execute())
670
+ last_copied_id = progress_res.data[0]['last_copied_id'] if progress_res.data else None
671
+
672
+ video_ids = []
673
+ retries = 3
674
+ while retries > 0:
675
+ try:
676
+ async for msg in client.search_messages(source_id, filter=enums.MessagesFilter.VIDEO):
677
+ if last_copied_id and msg.id <= last_copied_id: continue
678
+ video_ids.append(msg.id)
679
+ if len(video_ids) % 100 == 0: await asyncio.sleep(0.1)
680
+ break
681
+ except FloodWait as e:
682
+ await asyncio.sleep(e.value + 1)
683
+ except Exception as e:
684
+ err_msg = str(e).lower()
685
+ if "disconnect" in err_msg or "connection" in err_msg or "timeout" in err_msg:
686
+ retries -= 1
687
+ video_ids = []
688
+ await asyncio.sleep(5)
689
+ else:
690
+ break
691
+
692
+ if not video_ids:
693
+ continue
694
+
695
+ video_ids.reverse()
696
+
697
+ for msg_id in video_ids:
698
+ copy_retries = 3
699
+ copy_success = False
700
+ while copy_retries > 0:
701
+ try:
702
+ await client.copy_message(chat_id=dest_id, from_chat_id=source_id, message_id=msg_id)
703
+ total_copied += 1
704
+ await save_progress(source_id, dest_id, msg_id)
705
+ copy_success = True
706
+ break
707
+ except FloodWait as e:
708
+ await asyncio.sleep(e.value + 2)
709
+ except Exception as e:
710
+ err_msg = str(e).lower()
711
+ if "disconnect" in err_msg or "connection" in err_msg or "timeout" in err_msg:
712
+ copy_retries -= 1
713
+ await asyncio.sleep(3)
714
+ else:
715
+ break
716
+ await asyncio.sleep(2.5)
717
+
718
+ await status_msg.edit_text(f"πŸŽ‰ <b>Mass Cloning Completely Finished!</b>\n\nTotal Videos Copied from all groups: <b>{total_copied}</b>", parse_mode=enums.ParseMode.HTML)
719
+
720
+ except Exception as e:
721
+ try: await status_msg.edit_text(f"❌ <b>Cloning Error:</b> {e}", parse_mode=enums.ParseMode.HTML)
722
+ except: pass
723
+
724
+ @bot.on_message(filters.command("cloneall") & filters.private & filters.user(ADMIN_IDS))
725
+ async def start_mass_cloning(client, message):
726
+ dest_id = -1003798479478
727
+ status_msg = await message.reply(f"⏳ <b>Initializing mass cloning task to <code>{dest_id}</code>...</b>", parse_mode=enums.ParseMode.HTML)
728
+ asyncio.create_task(clone_all_background(client, dest_id, status_msg))
729
+
730
+
731
  async def clone_videos_background(client, source_id, dest_id, status_msg):
732
  try:
733
  progress_res = await db_query(lambda: supabase.table('clone_progress').select('last_copied_id').eq('source_id', source_id).eq('dest_id', dest_id).execute())
 
817
  asyncio.create_task(clone_videos_background(client, source_id, dest_id, status_msg))
818
 
819
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
820
  @bot.on_message(filters.command("upload") & filters.private & filters.user(ADMIN_IDS))
821
  async def set_upload_mode(client, message):
822
  global upload_mode