Yapf default formatting

This commit is contained in:
Baruch Odem 2020-05-24 18:32:29 +03:00
parent 7996dfdeaf
commit 92cba7798e
2 changed files with 56 additions and 17 deletions

View file

@ -5,8 +5,10 @@ TELEGRAM_DAEMON_SESSION_PATH = getenv("TELEGRAM_DAEMON_SESSION_PATH")
sessionName = "DownloadDaemon" sessionName = "DownloadDaemon"
stringSessionFilename = f"{sessionName}.session" stringSessionFilename = f"{sessionName}.session"
def _getStringSessionIfExists(): def _getStringSessionIfExists():
sessionPath = path.join(TELEGRAM_DAEMON_SESSION_PATH, stringSessionFilename) sessionPath = path.join(TELEGRAM_DAEMON_SESSION_PATH,
stringSessionFilename)
if path.isfile(sessionPath): if path.isfile(sessionPath):
with open(sessionPath, 'r') as file: with open(sessionPath, 'r') as file:
session = file.read() session = file.read()
@ -14,15 +16,18 @@ def _getStringSessionIfExists():
return session return session
return None return None
def getSession(): def getSession():
if TELEGRAM_DAEMON_SESSION_PATH == None: if TELEGRAM_DAEMON_SESSION_PATH == None:
return sessionName return sessionName
return StringSession(_getStringSessionIfExists()) return StringSession(_getStringSessionIfExists())
def saveSession(session): def saveSession(session):
if TELEGRAM_DAEMON_SESSION_PATH != None: if TELEGRAM_DAEMON_SESSION_PATH != None:
sessionPath = path.join(TELEGRAM_DAEMON_SESSION_PATH, stringSessionFilename) sessionPath = path.join(TELEGRAM_DAEMON_SESSION_PATH,
stringSessionFilename)
with open(sessionPath, 'w') as file: with open(sessionPath, 'w') as file:
file.write(StringSession.save(session)) file.write(StringSession.save(session))
print(f"Session saved in {sessionPath}") print(f"Session saved in {sessionPath}")

View file

@ -11,7 +11,8 @@ from telethon import TelegramClient, events
from telethon.tl.types import PeerChannel from telethon.tl.types import PeerChannel
import logging import logging
logging.basicConfig(format='[%(levelname) 5s/%(asctime)s]%(name)s:%(message)s',level=logging.WARNING) logging.basicConfig(format='[%(levelname) 5s/%(asctime)s]%(name)s:%(message)s',
level=logging.WARNING)
import argparse import argparse
import asyncio import asyncio
@ -22,11 +23,38 @@ TELEGRAM_DAEMON_CHANNEL = getenv("TELEGRAM_DAEMON_CHANNEL")
TELEGRAM_DAEMON_SESSION_PATH = getenv("TELEGRAM_DAEMON_SESSION_PATH") TELEGRAM_DAEMON_SESSION_PATH = getenv("TELEGRAM_DAEMON_SESSION_PATH")
parser = argparse.ArgumentParser(description="Script to download files from Telegram Channel.") parser = argparse.ArgumentParser(
parser.add_argument("--api-id", required=TELEGRAM_DAEMON_API_ID == None, type=int, default=TELEGRAM_DAEMON_API_ID, help='api_id from https://core.telegram.org/api/obtaining_api_id (default is TELEGRAM_DAEMON_API_ID env var)') description="Script to download files from Telegram Channel.")
parser.add_argument("--api-hash", required=TELEGRAM_DAEMON_API_HASH == None, type=str, default=TELEGRAM_DAEMON_API_HASH, help='api_hash from https://core.telegram.org/api/obtaining_api_id (default is TELEGRAM_DAEMON_API_HASH env var)') parser.add_argument(
parser.add_argument("--dest", type=str, default=getenv("TELEGRAM_DAEMON_DEST", "/telegram-downloads"), help='Destenation path for downloading files (default is /telegram-downloads).') "--api-id",
parser.add_argument("--channel", required=TELEGRAM_DAEMON_CHANNEL == None, type=int, default=TELEGRAM_DAEMON_CHANNEL, help='Channel id to download from it (default is TELEGRAM_DAEMON_CHANNEL env var') required=TELEGRAM_DAEMON_API_ID == None,
type=int,
default=TELEGRAM_DAEMON_API_ID,
help=
'api_id from https://core.telegram.org/api/obtaining_api_id (default is TELEGRAM_DAEMON_API_ID env var)'
)
parser.add_argument(
"--api-hash",
required=TELEGRAM_DAEMON_API_HASH == None,
type=str,
default=TELEGRAM_DAEMON_API_HASH,
help=
'api_hash from https://core.telegram.org/api/obtaining_api_id (default is TELEGRAM_DAEMON_API_HASH env var)'
)
parser.add_argument(
"--dest",
type=str,
default=getenv("TELEGRAM_DAEMON_DEST", "/telegram-downloads"),
help=
'Destenation path for downloading files (default is /telegram-downloads).')
parser.add_argument(
"--channel",
required=TELEGRAM_DAEMON_CHANNEL == None,
type=int,
default=TELEGRAM_DAEMON_CHANNEL,
help=
'Channel id to download from it (default is TELEGRAM_DAEMON_CHANNEL env var'
)
args = parser.parse_args() args = parser.parse_args()
api_id = args.api_id api_id = args.api_id
@ -36,18 +64,21 @@ downloadFolder = args.dest
# Edit these lines: # Edit these lines:
proxy = None proxy = None
# End of interesting parameters
# End of interesting parameters
async def sendHelloMessage(client, peerChannel): async def sendHelloMessage(client, peerChannel):
entity = await client.get_entity(peerChannel) entity = await client.get_entity(peerChannel)
await client.send_message(entity, "Hi! Ready for you files!") await client.send_message(entity, "Hi! Ready for you files!")
async def log_respond(event, respond): async def log_respond(event, respond):
print(respond) print(respond)
await event.respond(respond) await event.respond(respond)
with TelegramClient(getSession(), api_id, api_hash, proxy=proxy).start() as client: with TelegramClient(getSession(), api_id, api_hash,
proxy=proxy).start() as client:
saveSession(client.session) saveSession(client.session)
@ -58,18 +89,21 @@ with TelegramClient(getSession(), api_id, api_hash, proxy=proxy).start() as clie
if event.to_id != peerChannel: if event.to_id != peerChannel:
return return
print(event) print(event)
if event.media: if event.media:
filename=event.media.document.attributes[0].file_name filename = event.media.document.attributes[0].file_name
await log_respond(event, f"Downloading file {filename} ({event.media.document.size} bytes)") await log_respond(
event,
f"Downloading file {filename} ({event.media.document.size} bytes)"
)
await client.download_media(event.message, downloadFolder) await client.download_media(event.message, downloadFolder)
await log_respond(event, f"{filename} ready") await log_respond(event, f"{filename} ready")
async def start(): async def start():
await sendHelloMessage(client, peerChannel) await sendHelloMessage(client, peerChannel)
await client.run_until_disconnected() await client.run_until_disconnected()
client.loop.run_until_complete(start()) client.loop.run_until_complete(start())