add '--items' option
this allows to specify which manga-chapters/comic-issues to download when using gallery-dl on a manga/comic URL
This commit is contained in:
47
gallery_dl/util.py
Normal file
47
gallery_dl/util.py
Normal file
@@ -0,0 +1,47 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2017 Mike Fährmann
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License version 2 as
|
||||
# published by the Free Software Foundation.
|
||||
|
||||
"""Utility functions"""
|
||||
|
||||
|
||||
def apply_range(iterable, rangespec):
|
||||
"""Return a new iterable containing only the items specified in the given
|
||||
integer range
|
||||
"""
|
||||
try:
|
||||
maxval = len(iterable)
|
||||
except TypeError:
|
||||
maxval = 0
|
||||
rset = parse_range(rangespec, maxval)
|
||||
return (
|
||||
item
|
||||
for index, item in enumerate(iterable, 1)
|
||||
if index in rset
|
||||
)
|
||||
|
||||
|
||||
def parse_range(rangespec, maxval=0):
|
||||
"""Parse an integer range and return the resulting set
|
||||
|
||||
Examples
|
||||
parse_range("-2,4,6-8,10-", 12) -> set(1, 2, 4, 6, 7, 8, 10, 11, 12)
|
||||
parse_range(" - 3 , 4- 4, 6-2") -> set(1, 2, 3, 4)
|
||||
"""
|
||||
result = set()
|
||||
for group in rangespec.split(","):
|
||||
parts = group.split("-", maxsplit=1)
|
||||
try:
|
||||
if len(parts) == 1:
|
||||
result.add(int(parts[0]))
|
||||
else:
|
||||
beg = int(parts[0]) if parts[0].strip() else 1
|
||||
end = int(parts[1]) if parts[1].strip() else maxval
|
||||
result.update(range(beg, end+1))
|
||||
except ValueError:
|
||||
pass
|
||||
return result
|
||||
Reference in New Issue
Block a user