Skip to content

Commit 89f2062

Browse files
committed
2.5.003
1 parent f6d21ea commit 89f2062

12 files changed

+52
-53
lines changed

.github/README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ To stop playing press Ctrl+C in either the terminal or mpv
9595
<details><summary>List all subcommands</summary>
9696

9797
$ library
98-
xk media library subcommands (v2.5.002)
98+
xk media library subcommands (v2.5.003)
9999

100100
Create database subcommands:
101101
╭───────────────┬────────────────────────────────────────────────────╮

pdm.lock

+9-9
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

xklb/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "2.5.002"
1+
__version__ = "2.5.003"

xklb/db_media.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -382,7 +382,7 @@ def get_sibling_media(args, media):
382382
new_media.append(d)
383383
media = new_media
384384

385-
# TODO: all-if>10, each-if=10
385+
# TODO: all-if>10, each-if=10 --lower --upper functionality could be replicated here
386386

387387
return media
388388

xklb/dl_extract.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,9 @@ def parse_args():
7171
parser.add_argument("--subtitle-languages", "--subtitle-language", "--sl", action=arg_utils.ArgparseList)
7272

7373
parser.add_argument("--prefix", default=os.getcwd(), help=argparse.SUPPRESS)
74-
parser.add_argument("--relative", action="store_true", help="Replicate website file tree")
74+
parser.add_argument(
75+
"--no-relative", dest="relative", action="store_false", help="Do not replicate website file tree"
76+
)
7577
parser.add_argument("--ext")
7678

7779
parser.add_argument("--print", "-p", default="", const="p", nargs="?", help=argparse.SUPPRESS)

xklb/media/dedupe.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414

1515
def parse_args() -> argparse.Namespace:
16-
parser = argparse.ArgumentParser(prog="library dedupe", usage=usage.dedupe)
16+
parser = argparse.ArgumentParser(prog="library dedupe-media", usage=usage.dedupe_media)
1717

1818
profile = parser.add_mutually_exclusive_group()
1919
profile.add_argument(

xklb/play_actions.py

+7-4
Original file line numberDiff line numberDiff line change
@@ -516,13 +516,16 @@ def process_playqueue(args) -> None:
516516
if args.folder_glob:
517517
media = [{"path": s} for s in file_utils.fast_glob(p)]
518518
elif args.action in SC.watch:
519-
media = [{"path": s} for s in file_utils.get_video_files(p)]
519+
media = [{"path": s} for s in file_utils.rglob(str(p), consts.VIDEO_EXTENSIONS)[0]]
520520
elif args.action == SC.listen:
521-
media = [{"path": s} for s in file_utils.get_audio_files(p)]
521+
media = [
522+
{"path": s}
523+
for s in file_utils.rglob(str(p), consts.VIDEO_EXTENSIONS | consts.AUDIO_ONLY_EXTENSIONS)[0]
524+
]
522525
elif args.action in SC.view:
523-
media = [{"path": s} for s in file_utils.get_image_files(p)]
526+
media = [{"path": s} for s in file_utils.rglob(str(p), consts.IMAGE_EXTENSIONS)[0]]
524527
elif args.action in SC.read:
525-
media = [{"path": s} for s in file_utils.get_text_files(p)]
528+
media = [{"path": s} for s in file_utils.rglob(str(p), consts.TEXTRACT_EXTENSIONS)[0]]
526529
else:
527530
media = [{"path": s} for s in file_utils.rglob(str(p))[0]]
528531
else:

xklb/scratch/mam_search.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def parse_args():
2323
parser.add_argument("--musicology", action="store_true")
2424
parser.add_argument("--radio", action="store_true")
2525

26-
parser.add_argument("--search-in", default='torrents')
26+
parser.add_argument("--search-in", default="torrents")
2727

2828
parser.add_argument("--cookie", required=True)
2929
parser.add_argument("--cookies", help="path to a Netscape formatted cookies file")
@@ -38,6 +38,7 @@ def parse_args():
3838
log.info(objects.dict_filter_bool(args.__dict__))
3939
return args
4040

41+
4142
def get_page(args, query_data):
4243
import pandas as pd
4344

xklb/scripts/web_add.py

+4-20
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import argparse, json, random, re, sys, time
1+
import argparse, json, random, sys, time
22
from pathlib import Path
33
from typing import Set
44
from urllib.parse import urlparse
@@ -204,22 +204,6 @@ def add_media(args, media):
204204
args.db["media"].insert_all(media, pk="id", alter=True, replace=True)
205205

206206

207-
def is_web_dir(path):
208-
if path.endswith("/"):
209-
return True
210-
211-
patterns = [
212-
r"/index\.php\?dir=",
213-
r"/index\.php$",
214-
r"/index\.html?$",
215-
]
216-
for pattern in patterns:
217-
if re.search(pattern, path, re.IGNORECASE):
218-
return True
219-
220-
return False
221-
222-
223207
def spider(args, paths: Set):
224208
get_urls = iterables.return_unique(extract_links.get_inner_urls)
225209

@@ -236,7 +220,7 @@ def spider(args, paths: Set):
236220
f"Pages to scan {len(paths)} link scan: {new_media_count} new [{len(known_paths)} known]"
237221
)
238222

239-
if is_web_dir(path):
223+
if web.is_index(path):
240224
for a_ref in get_urls(args, path):
241225
if a_ref is None:
242226
break
@@ -247,7 +231,7 @@ def spider(args, paths: Set):
247231

248232
if link in (paths | traversed_paths):
249233
continue
250-
if is_web_dir(link):
234+
if web.is_index(link):
251235
if web.is_subpath(path, link):
252236
paths.add(link)
253237
continue
@@ -339,7 +323,7 @@ def web_add(args=None) -> None:
339323
try:
340324
for playlist_path in arg_utils.gen_paths(args):
341325
spider(args, {playlist_path})
342-
if is_web_dir(playlist_path):
326+
if web.is_index(playlist_path):
343327
add_playlist(args, playlist_path)
344328

345329
finally:

xklb/utils/arg_utils.py

+4-11
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
import operator
2-
import argparse, random, sys
1+
import argparse, operator, random, sys
32
from ast import literal_eval
43
from pathlib import Path
54

@@ -220,16 +219,10 @@ def override_config(parser, extractor_config, args):
220219
args_env = argparse.Namespace(**{**default_args, **extractor_config, **overridden_args})
221220
return args_env
222221

223-
ops = {
224-
'<': operator.lt,
225-
'<=': operator.le,
226-
'==': operator.eq,
227-
'!=': operator.ne,
228-
'>=': operator.ge,
229-
'>': operator.gt
230-
}
222+
223+
ops = {"<": operator.lt, "<=": operator.le, "==": operator.eq, "!=": operator.ne, ">=": operator.ge, ">": operator.gt}
224+
231225

232226
def cmp(arg1, op, arg2):
233227
operation = ops.get(op)
234228
return operation(arg1, arg2)
235-

xklb/utils/consts.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ def reddit_frequency(frequency) -> str:
128128
return mapper[frequency]
129129

130130

131-
SKIP_MEDIA_CHECK = [".iso", ".vob"]
131+
SKIP_MEDIA_CHECK = [".iso", ".img", ".vob"]
132132

133133
SPEECH_RECOGNITION_EXTENSIONS = set("mp3|ogg|wav".split("|"))
134134
OCR_EXTENSIONS = set("gif|jpg|jpeg|png|tif|tff|tiff".split("|"))
@@ -139,9 +139,9 @@ def reddit_frequency(frequency) -> str:
139139
"|mac|aptx|aptxhd|aqt|ast|obu|avi|avr|avs|avs2|avs3|bfstm|bcstm|binka"
140140
"|bit|bmv|brstm|cdg|cdxl|xl|c2|302|daud|str|adp|dav|dss|dts|dtshd|dv"
141141
"|dif|divx|cdata|eac3|paf|fap|flm|flv|fsb|fwse|g722|722|tco|rco"
142-
"|g723_1|g729|genh|gsm|h261|h26l|h264|264|avc|mts|hca|hevc|h265|265|idf"
142+
"|g723_1|g729|genh|gsm|h261|h26l|h264|264|avc|mts|m2ts|hca|hevc|h265|265|idf"
143143
"|ifv|cgi|ipu|sf|ircam|ivr|kux|669|abc|amf|ams|dbm|dmf|dsm|far|it|mdl"
144-
"|med|mod|mt2|mtm|okt|psm|ptm|s3m|stm|ult|umx|xm|itgz|itr|itz|iso"
144+
"|med|mod|mt2|mtm|okt|psm|ptm|s3m|stm|ult|umx|xm|itgz|itr|itz|iso|img"
145145
"|mdgz|mdr|mdz|s3gz|s3r|s3z|xmgz|xmr|xmz|669|amf|ams|dbm|digi|dmf"
146146
"|dsm|dtm|far|gdm|ice|imf|it|j2b|m15|mdl|med|mmcmp|mms|mo3|mod|mptm"
147147
"|mt2|mtm|nst|okt|ogm|ogv|plm|ppm|psm|pt36|ptm|s3m|sfx|sfx2|st26|stk|stm"

xklb/utils/web.py

+16
Original file line numberDiff line numberDiff line change
@@ -603,6 +603,22 @@ def construct_absolute_url(base_url, href):
603603
return href
604604

605605

606+
def is_index(url):
607+
if url.endswith("/"):
608+
return True
609+
610+
patterns = [
611+
r"/index\.php\?dir=",
612+
r"/index\.php$",
613+
r"/index\.html?$",
614+
]
615+
for pattern in patterns:
616+
if re.search(pattern, url, re.IGNORECASE):
617+
return True
618+
619+
return False
620+
621+
606622
def is_subpath(parent_url, child_url):
607623
child = urlparse(child_url)
608624
parent = urlparse(parent_url)

0 commit comments

Comments
 (0)