From 2ff32152dd41415b6bbdc0e3960ec0d18b997185 Mon Sep 17 00:00:00 2001 From: bipinkrish Date: Fri, 24 Feb 2023 16:16:01 +0530 Subject: [PATCH] Abilty to specify output file name --- .github/workflows/main.yml | 20 +++++++++---------- DeGourou.py | 31 +++++++++++++++++++--------- README.md | 41 +++++++++++++++++++------------------- setup/fulfill.py | 10 ++++++---- 4 files changed, 59 insertions(+), 43 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 986c485..775ac2a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -67,6 +67,16 @@ jobs: env: GITHUB_TOKEN: ${{ github.token }} + - name: upload windows artifact + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ github.token }} + with: + upload_url: ${{ steps.create_release.outputs.upload_url }} + asset_path: ./Windows Build/DeGourou.exe + asset_name: DeGourou-windows.exe + asset_content_type: application/zip + - name: upload linux artifact uses: actions/upload-release-asset@v1 env: @@ -86,13 +96,3 @@ jobs: asset_path: ./macOS Build/DeGourou.bin asset_name: DeGourou-macOS.bin asset_content_type: application/gzip - - - name: upload windows artifact - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ github.token }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./Windows Build/DeGourou.exe - asset_name: DeGourou-windows.exe - asset_content_type: application/zip diff --git a/DeGourou.py b/DeGourou.py index b119012..b953db0 100644 --- a/DeGourou.py +++ b/DeGourou.py @@ -7,12 +7,13 @@ from decrypt.decodeEPUB import decryptEPUB import argparse from os import mkdir, remove, rename from os.path import exists +from sys import exit from setup.params import FILE_DEVICEKEY, FILE_DEVICEXML, FILE_ACTIVATIONXML from decrypt.params import KEYPATH from setup.data import createDefaultFiles -def main(acsmFile, login): +def main(acsmFile, login, outputFilename): # user login if login: @@ -27,6 +28,8 @@ def main(acsmFile, login): mkdir("account") createDefaultFiles() + print() + # cheek for file existance if not exists(acsmFile): print(f"{acsmFile} file does not exist") @@ -49,18 +52,28 @@ def main(acsmFile, login): exit(1) remove(encryptedFile) - rename(decryptedFile, encryptedFile) - decryptedFile = encryptedFile - print(decryptedFile) + if outputFilename is None: + tempName = encryptedFile + else: + tempName = outputFilename + rename(decryptedFile, tempName) + print(tempName) print() 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") - parser.add_argument("file", type=str, nargs='?', default="URLLink.acsm", help="Path to the ACSM file") + parser.add_argument("file", type=str, nargs='?', default=None, help="Path to the ACSM file") parser.add_argument("-l", "--login", action="store_true", help="Login to your ADE account. (optional)") + parser.add_argument("-o", "--output", type=str, default=None, help="Output file name. (optional)") args = parser.parse_args() - if args.file == "URLLink.acsm" and not exists(args.file): - parser.print_help() - else: - main(args.file, args.login) + + # 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) diff --git a/README.md b/README.md index c8896e7..5e28f9b 100644 --- a/README.md +++ b/README.md @@ -12,15 +12,33 @@ --- +## Usage + +``` +usage: DeGourou.xxx [-h] [-l] [-o OUTPUT] [file] + +Download and Decrypt an encrypted PDF or EPUB file. It uses Dummy account for ADE, you can overide using --login + +positional arguments: + file Path to the ACSM file + +optional arguments: + -h, --help show this help message and exit + -l, --login Login to your ADE account. (optional) + -o OUTPUT Output file name. (optional) +``` + +--- + ## Guide -*It uses dummy account for ADE, you can also use your own account* +*By default it uses dummy account for ADE, you can also use your own account* ### For Normal Users 1. Download binary file according to your operating system from [Releases Section](https://github.com/bipinkrish/DeGourou/releases) 2. Run the binary according to operating system - A. Windows user's can just simply run the DeGourou-windows.exe + A. Windows user's can just open Command Prompt and use based on the [USAGE](https://github.com/bipinkrish/DeGourou#usage) B. Linux user's need to change the file permission and then can run @@ -29,7 +47,7 @@ ./DeGourou-linux ``` - C. MacOS user's accordingly + C. MacOS user's accordingly with name ```DeGourou.bin``` ### For Developers @@ -47,23 +65,6 @@ python DeGourou.py --- -## Usage - -``` -usage: DeGourou [-h] [-l] [file] - -Download and Decrypt an encrypted PDF or EPUB file. It uses Dummy account for ADE, you can overide using --login - -positional arguments: - file Path to the ACSM file - -optional arguments: - -h, --help show this help message and exit - -l, --login Login to your ADE account. (optional) -``` - ---- - ## Credits This project is highly inspired from these projects, thanks to them diff --git a/setup/fulfill.py b/setup/fulfill.py index 82ea3f9..9758773 100644 --- a/setup/fulfill.py +++ b/setup/fulfill.py @@ -58,6 +58,7 @@ def download(replyData): dl_start_time = int(time.time() * 1000) ret = sendHTTPRequest_DL2FILE(download_url, filename_tmp) dl_end_time = int(time.time() * 1000) + print() print("Download took %d milliseconds" % (dl_end_time - dl_start_time)) if (ret != 200): @@ -84,7 +85,7 @@ def download(replyData): zf = zipfile.ZipFile(filename, "a") zf.writestr("META-INF/rights.xml", rights_xml_str) zf.close() - + print() print("File successfully fulfilled") return filename @@ -100,6 +101,7 @@ def download(replyData): ret = patch_drm_into_pdf("tmp_" + filename, rights_xml_str, filename, resource) os.remove("tmp_" + filename) if (ret): + print() print("File successfully fulfilled") return filename else: @@ -116,14 +118,14 @@ def downloadFile(file="URLLink.acsm"): print("Fulfilling book '" + file + "' ...") success, replyData = fulfill(file) if (success is False): + print() print("Hey, that didn't work!") print(replyData) else: - print("Downloading book '" + file + "' ...") + print() + print("Downloading book '" + file + "' with download link") success = download(replyData) if (success is False): print("That didn't work!") else: return success - -