checking that the returned file is an epub
This commit is contained in:
parent
00db033981
commit
ea8790084d
2 changed files with 12 additions and 5 deletions
|
@ -20,7 +20,10 @@
|
||||||
version = "0.0.0";
|
version = "0.0.0";
|
||||||
src = self;
|
src = self;
|
||||||
nativeBuildInputs = [ nixpkgs.makeWrapper ];
|
nativeBuildInputs = [ nixpkgs.makeWrapper ];
|
||||||
buildInputs = [ nixpkgs.python3 libgourou-utils inept-epub ];
|
buildInputs = [
|
||||||
|
(nixpkgs.python3.withPackages(python3Packages: [ python3Packages.python_magic ]))
|
||||||
|
libgourou-utils inept-epub
|
||||||
|
];
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p $out/bin
|
mkdir -p $out/bin
|
||||||
chmod +x knock
|
chmod +x knock
|
||||||
|
|
12
knock
12
knock
|
@ -1,6 +1,6 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
import os, sys, argparse, subprocess
|
import os, sys, argparse, subprocess, magic
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from getpass import getpass
|
from getpass import getpass
|
||||||
|
|
||||||
|
@ -10,15 +10,15 @@ args = parser.parse_args()
|
||||||
|
|
||||||
# these are all Path objects: https://docs.python.org/3/library/pathlib.html
|
# these are all Path objects: https://docs.python.org/3/library/pathlib.html
|
||||||
args.acsm_file = Path(args.acsm_file).expanduser()
|
args.acsm_file = Path(args.acsm_file).expanduser()
|
||||||
args.drm_file = args.acsm_file.with_suffix('.drm.epub')
|
args.drm_file = args.acsm_file.with_suffix('.drm')
|
||||||
args.epub_file = args.acsm_file.with_suffix('.epub')
|
args.epub_file = args.acsm_file.with_suffix('.epub')
|
||||||
args.adobe_dir = Path('~/.config/knock').expanduser()
|
args.adobe_dir = Path('~/.config/knock').expanduser()
|
||||||
|
|
||||||
if not args.acsm_file.exists():
|
if not args.acsm_file.exists():
|
||||||
raise Exception(f'{str(args.acsm_file)} does not exist.')
|
sys.exit(f'{str(args.acsm_file)} does not exist.')
|
||||||
|
|
||||||
if args.epub_file.exists():
|
if args.epub_file.exists():
|
||||||
raise Exception(f'{str(args.epub_file)} already exists.')
|
sys.exit(f'{str(args.epub_file)} already exists.')
|
||||||
|
|
||||||
if not args.adobe_dir.exists():
|
if not args.adobe_dir.exists():
|
||||||
print('This device is not registered with Adobe.')
|
print('This device is not registered with Adobe.')
|
||||||
|
@ -44,6 +44,10 @@ subprocess.check_call([
|
||||||
'-f', str(args.acsm_file)
|
'-f', str(args.acsm_file)
|
||||||
])
|
])
|
||||||
|
|
||||||
|
drm_file_type = magic.from_file(str(args.drm_file), mime=True)
|
||||||
|
if drm_file_type != 'application/epub+zip':
|
||||||
|
sys.exit(f'Received a file of type:\n{drm_file_type}\nKnock only supports EPUB files.')
|
||||||
|
|
||||||
print('Decrypting the file...')
|
print('Decrypting the file...')
|
||||||
|
|
||||||
subprocess.check_call([
|
subprocess.check_call([
|
||||||
|
|
Loading…
Reference in a new issue