diff --git a/migrate.py b/migrate.py new file mode 100644 index 0000000..48cc25f --- /dev/null +++ b/migrate.py @@ -0,0 +1,56 @@ +import sys +from typing import Tuple, List + +from pyrogram_rockserver_storage import RockServerStorage +import asyncio +import json + +slaveId = sys.argv[1] + +async def main(): + await storage.open() + + # Reading from a JSON Lines file + with open(f"pyrogram_session_dtg-slave-{slaveId}.json", 'r') as file: + for line in file: + data_entry = json.loads(line) + # Process each data_entry as a Python dict + print(data_entry) + await storage.dc_id(data_entry['dc_id']) + await storage.api_id(data_entry['api_id']) + await storage.test_mode(data_entry['test_mode']) + await storage.auth_key(bytes.fromhex(data_entry['auth_key'][2:])) + await storage.date(data_entry['date']) + await storage.user_id(data_entry['user_id']) + await storage.is_bot(data_entry['is_bot']) + progress = 0 + def f() -> List[Tuple[int, int, str, str, str]]: + return [] + def ff(a: int, b: int, c: str, d: str, e: str, f: int) -> Tuple[int, int, str, str, str]: + return (a, b, c, d, e, f) + # Reading from a JSON Lines file + with open(f"peers_dtg-slave-{slaveId}.json", 'r') as file: + buf: List[Tuple[int, int, str, str, str]] = f() + for line in file: + progress += 1 + data_entry = json.loads(line) + buf.append(ff(data_entry['id'], data_entry['access_hash'], + data_entry['type'], data_entry['username'], + data_entry['phone_number'], data_entry['last_update_on'])) + if (len(buf) > 10000): + await storage.update_peers(buf) + buf.clear() + if progress % 10000 == 0: + print(f"Progress: {progress}") + if (len(buf) > 0): + await storage.update_peers(buf) + buf.clear() + exit(1) + + +print("initializing rockserver storage") +storage = RockServerStorage(save_user_peers=False, hostname="db.local", port=5332, session_unique_name=f"dtg-slave-{slaveId}") +print("initialized rockserver storage") +loop = asyncio.get_event_loop() +loop.run_until_complete(main()) +print("done")