From 03348d571f694d802d6afdb9595415ae664e47b5 Mon Sep 17 00:00:00 2001 From: HaoZeke Date: Fri, 22 Mar 2019 20:34:55 +0530 Subject: [PATCH] tracker: Add a file output Also update the README and the gitignore --- .gitignore | 1 + README.md | 1 + track/__main__.py | 58 ++++++++++++++++++++++++++++------------------- 3 files changed, 37 insertions(+), 23 deletions(-) diff --git a/.gitignore b/.gitignore index db58238..9bdf238 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /settings/keys.py /tracker.session __pycache__/ +trackerLogs.txt diff --git a/README.md b/README.md index 6be098b..e9d89ab 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ Example output: =2018-01-19 @ 01:46:39: User went offline after being online for short time. = means that the time is exact as returned by the Telegram server, and ~ means that the time is measured locally and can be inexact. +By default the times are saved to a file called `trackerLogs.txt` along with being printed to `STDOUT`. How to run ---------- diff --git a/track/__main__.py b/track/__main__.py index 3977c33..a3590a6 100644 --- a/track/__main__.py +++ b/track/__main__.py @@ -46,33 +46,45 @@ contact_id = argv[1] client = TelegramClient('tracker', API_ID, API_HASH) client.start() +# File IO +dataFile = open('shuTimes.txt', 'a+') + online = None last_offline = None while True: - if contact_id in ['me', 'self']: + try: + dataFile = open('trackerLogs.txt', 'a+', encoding = 'utf-8') + if contact_id in ['me', 'self']: # Workaround for the regression in Telethon that breaks get_entity('me'): # https://github.com/LonamiWebs/Telethon/issues/1024 - contact = client.get_me() - else: - contact = client.get_entity(contact_id) + contact = client.get_me() + else: + contact = client.get_entity(contact_id) - if isinstance(contact.status, UserStatusOffline): - if online != False: - online = False - print(f'={utc2localtime(contact.status.was_online).strftime(DATETIME_FORMAT)}: User went offline.') - elif last_offline != contact.status.was_online: - if last_offline is not None: - print(f'={utc2localtime(contact.status.was_online).strftime(DATETIME_FORMAT)}: User went offline after being online for short time.') - else: + if isinstance(contact.status, UserStatusOffline): + if online != False: + online = False + print(f'={utc2localtime(contact.status.was_online).strftime(DATETIME_FORMAT)}: User went offline.', file=dataFile) print(f'={utc2localtime(contact.status.was_online).strftime(DATETIME_FORMAT)}: User went offline.') - last_offline = contact.status.was_online - elif isinstance(contact.status, UserStatusOnline): - if online != True: - online = True - print(f'~{datetime.now().strftime(DATETIME_FORMAT)}: User went online.') - else: - if online != False: - online = False - print(f'~{datetime.now().strftime(DATETIME_FORMAT)}: User went offline.') - last_offline = None - sleep(15) + elif last_offline != contact.status.was_online: + if last_offline is not None: + print(f'={utc2localtime(contact.status.was_online).strftime(DATETIME_FORMAT)}: User went offline after being online for short time.', file=dataFile) + print(f'={utc2localtime(contact.status.was_online).strftime(DATETIME_FORMAT)}: User went offline after being online for short time.') + else: + print(f'={utc2localtime(contact.status.was_online).strftime(DATETIME_FORMAT)}: User went offline.', file=dataFile) + print(f'={utc2localtime(contact.status.was_online).strftime(DATETIME_FORMAT)}: User went offline.') + last_offline = contact.status.was_online + elif isinstance(contact.status, UserStatusOnline): + if online != True: + online = True + print(f'~{datetime.now().strftime(DATETIME_FORMAT)}: User went online.', file=dataFile) + print(f'~{datetime.now().strftime(DATETIME_FORMAT)}: User went online.') + else: + if online != False: + online = False + print(f'~{datetime.now().strftime(DATETIME_FORMAT)}: User went offline.', file=dataFile) + print(f'~{datetime.now().strftime(DATETIME_FORMAT)}: User went offline.') + last_offline = None + sleep(15) + finally: + dataFile.close()