■ ■ ■ ■ ■ ■
src/telepathy/telepathy.py
skipped 13 lines 14 14 import configparser 15 15 import asyncio 16 16 17 - from utils import ( 17 + from src . telepathy . utils import ( 18 18 print_banner, 19 19 color_print_green, 20 20 populate_user, skipped 27 lines 48 48 from telethon.utils import get_display_name, get_message_id 49 49 from alive_progress import alive_bar 50 50 from colorama import Fore, Style 51 - from const import telepathy_file 51 + from src . telepathy . const import telepathy_file 52 52 53 53 """ 54 54 try: skipped 47 lines 102 102 comprehensive, 103 103 media, 104 104 json, 105 - translate, 106 - alphanumeric, 105 + translate 107 106 ): 108 107 self.client = client 109 108 self._target = target skipped 69 lines 179 178 current_entity = None 180 179 try: 181 180 current_entity = await self.client.get_entity(_target) 182 - except: 181 + except Exception as exx : 183 182 pass 184 183 if not current_entity: 185 184 try: 186 185 current_entity = await self.client.get_entity(PeerChannel(_target)) 187 - except: 186 + except Exception as exx : 188 187 pass 189 188 if not current_entity: 190 189 try: 191 190 current_entity = await self.client.get_entity(PeerChat(_target)) 192 - except: 191 + except Exception as exx : 193 192 pass 194 193 return current_entity 195 194 skipped 99 lines 295 294 else: 296 295 _result["chat_type"] = "Chat" 297 296 298 - if _result["entity.username" ] : 299 - _result["group_url"] = "http://t.me/" + self . _entity .username 297 + if _result["entity" ] .username: 298 + _result["group_url"] = "http://t.me/" + _result [ " entity " ] .username 300 299 _result["group_username"] = _result["entity"].username 301 300 web_req = parse_html_page(_result["group_url"]) 302 301 elif "https://t.me/" in _handle: skipped 28 lines 331 330 _result["datepost"] = parse_tg_date(message.date) 332 331 _result["date"] = _result["date"] 333 332 _result["mtime"] = _result["mtime"] 334 - _result["first_post"] = _result["timestamp"] 333 + _result["first_post"] = _result["datepost " ] [ " timestamp"] 335 334 break 336 335 337 336 if _result["entity"].restriction_reason is not None: skipped 54 lines 392 391 web_req = parse_html_page(self._group_url) 393 392 self._group_username = "Private group" 394 393 else: 394 + web_req = None 395 395 self._group_url, self._group_username = "Private group", "Private group" 396 396 397 397 if web_req: skipped 16 lines 414 414 415 415 async for message in self.client.iter_messages(_handle, reverse=True): 416 416 self._datepost = parse_tg_date(message.date) 417 - self._date = self.datepost ["date"] 418 - self._mtime = self.datepost ["mtime"] 419 - self._first_post = self.datepost ["timestamp"] 417 + self._date = self._datepost ["date"] 418 + self._mtime = self._datepost ["mtime"] 419 + self._first_post = self._datepost ["timestamp"] 420 420 break 421 421 422 422 if self._entity.restriction_reason is not None: skipped 108 lines 531 531 if not _target: 532 532 _target = self._target 533 533 _target = clean_private_invite(_target) 534 + self._found_participants = 0 534 535 await self.retrieve_chat_group_entity(_target) 535 536 536 537 if self.basic and not self.comp_check: skipped 129 lines 666 667 except AttributeError: 667 668 pass 668 669 669 - async def retrieve_history(self): 670 + async def retrieve_self_history(self,_target): 671 + if not _target: 672 + _target = self._target 673 + _target = clean_private_invite(_target) 674 + await self.retrieve_chat_group_entity(_target) 675 + 670 676 get_history = GetHistoryRequest( 671 677 peer=self._entity, 672 678 offset_id=0, skipped 2 lines 675 681 limit=1, 676 682 max_id=0, 677 683 min_id=0, 684 + hash=0 678 685 ) 679 - history = self.client(get_history) 686 + history = await self.client(get_history) 680 687 if isinstance(history, Messages): 681 688 count = len(history.messages) 682 689 else: skipped 88 lines 771 778 772 779 except Exception as e: 773 780 if e is ChannelPrivateError: 781 + private_count += 1 774 782 print("Private channel") 775 783 continue 776 784 skipped 745 lines 1522 1530 1523 1531 alt = None 1524 1532 target_type = None 1533 + export = False 1534 + 1525 1535 1526 1536 def __init__( 1527 1537 self, skipped 25 lines 1553 1563 self.translate_check = True if translate else False 1554 1564 self.last_date, self.chunk_size, self.user_language = None, 1000, "en" 1555 1565 self.bot = bot is not None 1556 - self.alt = alt 1557 - 1566 + self.alt = 0 if alt is None else int ( alt ) 1558 1567 self.filetime = datetime.datetime.now().strftime("%Y_%m_%d-%H_%M") 1559 1568 self.filetime_clean = str(self.filetime) 1560 1569 skipped 15 lines 1576 1585 self.t = " " 1577 1586 1578 1587 self.triangulate = True if triangulate_membership else False 1579 - self.telepathy_file = self.config_p["telepathy"]["telepathy_files"] 1580 - self.json_file = os.path.join( 1581 - self.telepathy_file, self.config_p["telepathy"]["json_file "] 1582 - ) 1583 - self.login = os.path.join( 1584 - self.telepathy_file, self.config_p["telepathy"]["login"] 1585 - ) 1586 - self.log_file = os.path.join( 1587 - self.telepathy_file, self.config_p["telepathy"]["log_file"] 1588 - ) 1589 - self.export_file = os.path.join( 1590 - self.telepathy_file, self.config_p["telepathy"]["export_file"] 1591 - ) 1588 + 1589 + if "telepathy" in self.config_p.keys(): 1590 + self.telepathy_file = self.config_p["telepathy"]["telepathy_files "] 1591 + self.json_file = os.path.join( 1592 + self.telepathy_file, self.config_p["telepathy"]["json_file"] 1593 + ) 1594 + self.login = os.path.join( 1595 + self.telepathy_file, self.config_p["telepathy"]["login"] 1596 + ) 1597 + self.log_file = os.path.join( 1598 + self.telepathy_file, self.config_p["telepathy"]["log_file"] 1599 + ) 1600 + self.export_file = os.path.join( 1601 + self.telepathy_file, self.config_p["telepathy"]["export_file"] 1602 + ) 1603 + else: 1604 + self.telepathy_file = os.path.join("..","src","telepathy","telepathy_files") 1605 + self.json_file = os.path.join(self.telepathy_file,"json_files") 1606 + self.login = os.path.join(self.telepathy_file,"login.txt") 1607 + self.log_file = os.path.join(self.telepathy_file,"log.csv") 1608 + self.export_file = os.path.join(self.telepathy_file,"export.csv") 1609 + 1592 1610 self.create_path(self.telepathy_file) 1593 1611 self.target = target 1594 1612 self.create_tg_client() 1613 + 1595 1614 1596 1615 @staticmethod 1597 1616 def create_path(path_d): skipped 38 lines 1636 1655 else: 1637 1656 self.api_id, self.api_hash, self.phone_number = self.retrieve_alt() 1638 1657 """End of API details""" 1639 - self.client = TelegramClient(self.phone_number, self.api_id, self.api_hash) 1658 + self.client = TelegramClient(os . path . join ( self . telepathy_file , " { } . session " . format ( self.phone_number) ) , self.api_id, self.api_hash) 1640 1659 1641 1660 async def connect_tg_client_and_run(self): 1642 1661 await self.client.connect() skipped 317 lines 1960 1979 translate, 1961 1980 triangulate_membership, 1962 1981 ) 1963 - loop = asyncio.get_event_loop () 1982 + loop = asyncio.new_event_loop () 1983 + asyncio.set_event_loop(loop) 1964 1984 loop.run_until_complete(telepathy_cli.connect_tg_client_and_run()) 1965 1985 1966 1986 skipped 3 lines