Created
July 8, 2019 19:45
-
-
Save zztopper/6f35627acca669e0982c09dd5b23192d to your computer and use it in GitHub Desktop.
Telethon telegram users scraper
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| from telethon.sync import TelegramClient | |
| from telethon.tl.functions.messages import GetDialogsRequest | |
| from telethon.tl.types import InputPeerEmpty | |
| import csv | |
| api_id = 123456 | |
| api_hash = 'YOUR_API_HASH' | |
| phone = '+111111111111' | |
| client = TelegramClient(phone, api_id, api_hash) | |
| client.connect() | |
| if not client.is_user_authorized(): | |
| client.send_code_request(phone) | |
| client.sign_in(phone, input('Enter the code: ')) | |
| chats = [] | |
| last_date = None | |
| chunk_size = 200 | |
| groups=[] | |
| result = client(GetDialogsRequest( | |
| offset_date=last_date, | |
| offset_id=0, | |
| offset_peer=InputPeerEmpty(), | |
| limit=chunk_size, | |
| hash = 0 | |
| )) | |
| chats.extend(result.chats) | |
| for chat in chats: | |
| try: | |
| if chat.megagroup== True: | |
| groups.append(chat) | |
| except: | |
| continue | |
| print('Choose a group to scrape members from:') | |
| i=0 | |
| for g in groups: | |
| print(str(i) + '- ' + g.title) | |
| i+=1 | |
| g_index = input("Enter a Number: ") | |
| target_group=groups[int(g_index)] | |
| print('Fetching Members...') | |
| all_participants = [] | |
| all_participants = client.get_participants(target_group, aggressive=True) | |
| print('Saving In file...') | |
| with open("members.csv","w",encoding='UTF-8') as f: | |
| writer = csv.writer(f,delimiter=",",lineterminator="\n") | |
| writer.writerow(['username','user id', 'access hash','name','group', 'group id']) | |
| for user in all_participants: | |
| if user.username: | |
| username= user.username | |
| else: | |
| username= "" | |
| if user.first_name: | |
| first_name= user.first_name | |
| else: | |
| first_name= "" | |
| if user.last_name: | |
| last_name= user.last_name | |
| else: | |
| last_name= "" | |
| name= (first_name + ' ' + last_name).strip() | |
| writer.writerow([username,user.id,user.access_hash,name,target_group.title, target_group.id]) | |
| print('Members scraped successfully.') | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment