refactor: command invocation now avoiding chdir

using subprocess instead of os.system
This commit is contained in:
eneller
2025-03-03 22:14:08 +01:00
parent 4d8cd00298
commit 967f97f381

View File

@@ -6,7 +6,7 @@ from urllib.request import urlparse
from tqdm import tqdm from tqdm import tqdm
from pyfzf.pyfzf import FzfPrompt from pyfzf.pyfzf import FzfPrompt
import os, sys import os, sys, subprocess, shlex
import importlib.resources as pkg_resources import importlib.resources as pkg_resources
@@ -52,7 +52,6 @@ class GBConvert():
def create_epub(self, filename='out.epub'): def create_epub(self, filename='out.epub'):
os.chdir(self.output)
command = f'''pandoc -f html -t epub \ command = f'''pandoc -f html -t epub \
-o "{filename}" \ -o "{filename}" \
--reference-location=section \ --reference-location=section \
@@ -61,7 +60,7 @@ class GBConvert():
--metadata author="{self.author}" \ --metadata author="{self.author}" \
--epub-title-page=false \ --epub-title-page=false \
{" ".join(self.chapters)} '''#TODO --epub-cover-image {" ".join(self.chapters)} '''#TODO --epub-cover-image
os.system(command) return subprocess.Popen(shlex.split(command), cwd=self.output)
def save_page(self, url): def save_page(self, url):
# https://superuser.com/questions/970323/using-wget-to-copy-website-with-proper-layout-for-offline-browsing # https://superuser.com/questions/970323/using-wget-to-copy-website-with-proper-layout-for-offline-browsing
@@ -85,9 +84,9 @@ class GBConvert():
self.parse_page(filepath) self.parse_page(filepath)
self.chapters.append(os.path.basename(item_url)) self.chapters.append(os.path.basename(item_url))
self.create_epub(f'{self.title} - {self.author}.epub') return self.create_epub(f'{self.title} - {self.author}.epub')
# Methods used to get a list of all books for interactive selection or scraping # get a list of all books for interactive selection or scraping
def get_all_books() -> list: def get_all_books() -> list:
response = requests.get(allbooks_url) response = requests.get(allbooks_url)
response.raise_for_status() response.raise_for_status()