degourou/DeGourou.py

80 lines
2.3 KiB
Python
Raw Normal View History

2023-02-23 02:41:48 -05:00
from setup.login_account import loginAndGetKey
from setup.fulfill import downloadFile
from decrypt.decodePDF import decryptPDF
from decrypt.decodeEPUB import decryptEPUB
2023-02-23 13:42:15 -05:00
import argparse
from os import mkdir, remove, rename
from os.path import exists
2023-02-24 05:46:01 -05:00
from sys import exit
2023-02-23 13:42:15 -05:00
from setup.params import FILE_DEVICEKEY, FILE_DEVICEXML, FILE_ACTIVATIONXML
from decrypt.params import KEYPATH
from setup.data import createDefaultFiles
2023-02-24 05:46:01 -05:00
def main(acsmFile, login, outputFilename):
2023-02-23 13:42:15 -05:00
# user login
if login:
if not exists("account"):
mkdir("account")
loginAndGetKey()
exit(0)
# setting up the account and keys
if not (exists(FILE_ACTIVATIONXML) and exists(FILE_DEVICEXML) and exists(FILE_DEVICEKEY) and exists(KEYPATH)):
if not exists("account"):
mkdir("account")
createDefaultFiles()
2023-02-24 05:46:01 -05:00
print()
2023-02-23 13:42:15 -05:00
# cheek for file existance
if not exists(acsmFile):
print(f"{acsmFile} file does not exist")
print()
exit(1)
# download
encryptedFile = downloadFile(acsmFile)
print(encryptedFile)
print()
# decrypt
if encryptedFile.endswith(".pdf"):
decryptedFile = decryptPDF(encryptedFile)
elif encryptedFile.endswith(".epub"):
decryptedFile = decryptEPUB(encryptedFile)
2023-02-23 02:41:48 -05:00
else:
2023-02-23 13:42:15 -05:00
print("File format not supported")
2023-02-23 02:41:48 -05:00
print()
exit(1)
2023-02-23 13:42:15 -05:00
remove(encryptedFile)
2023-02-24 05:46:01 -05:00
if outputFilename is None:
tempName = encryptedFile
else:
tempName = outputFilename
rename(decryptedFile, tempName)
print(tempName)
2023-02-23 02:41:48 -05:00
print()
2023-02-23 13:42:15 -05:00
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Download and Decrypt an encrypted PDF or EPUB file. It uses Dummy account for ADE, you can overide using --login")
2023-02-24 05:46:01 -05:00
parser.add_argument("file", type=str, nargs='?', default=None, help="Path to the ACSM file")
2023-02-23 13:42:15 -05:00
parser.add_argument("-l", "--login", action="store_true", help="Login to your ADE account. (optional)")
2023-02-24 05:46:01 -05:00
parser.add_argument("-o", "--output", type=str, default=None, help="Output file name. (optional)")
2023-02-23 13:42:15 -05:00
args = parser.parse_args()
2023-02-24 05:46:01 -05:00
# check for default value
if args.file == None:
if exists("URLLink.acsm"):
args.file = "URLLink.acsm"
else:
parser.print_help()
exit(0)
main(args.file, args.login, args.output)