-
Notifications
You must be signed in to change notification settings - Fork 36
/
Copy pathutils.py
49 lines (34 loc) · 1.31 KB
/
utils.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import os, json, re
from shutil import which
def get_or_read_json(book_json_or_file):
if type(book_json_or_file) is dict:
return book_json_or_file
else:
with open(book_json_or_file) as f:
return json.load(f)
def sanitize_name(name):
return re.sub(r'[\\/*?:"<>|.]', "", name).strip()
def sanitize_amazon_id(amazon_url):
amazon_url = amazon_url.replace("https://www.amazon.de/dp/", "")
amazon_url = amazon_url.replace("https://www.amazon.com/dp/", "")
amazon_id = amazon_url.split('?tag=')[0].replace("/","")
return amazon_id
def get_book_dump_filename(book_json_or_url):
if "blinkist.com" in book_json_or_url:
return os.path.join("dump", book_json_or_url.split("/")[-1] + ".json")
else:
return os.path.join("dump", book_json_or_url["slug"] + ".json")
def get_book_pretty_filepath(book_json):
path = os.path.join(
"books", book_json["category"], get_book_pretty_filename(book_json)
)
if len(path) >= 260:
return "\\\\?\\" + path.replace("/", "\\")
else:
return path
def get_book_pretty_filename(book_json, extension=""):
author = sanitize_name(book_json["author"])
title = sanitize_name(book_json["title"])
return f"{author} - {title}" + extension
def is_installed(tool):
return which(tool)