aboutsummaryrefslogtreecommitdiff
path: root/src/wikiget
diff options
context:
space:
mode:
authorCody Logan <cody@lokken.dev>2023-10-20 16:23:28 -0700
committerCody Logan <cody@lokken.dev>2023-10-20 16:23:28 -0700
commit05457af0d73ff3a820c0b465e6607fc5832a6e74 (patch)
treecc1a6e13d2a651c4048c5092c4f7891bb982c676 /src/wikiget
parent59b97c7bef21cf68935b68fa7de6fd67653e21af (diff)
downloadwikiget-05457af0d73ff3a820c0b465e6607fc5832a6e74.tar.gz
wikiget-05457af0d73ff3a820c0b465e6607fc5832a6e74.zip
Reorganize File class
Diffstat (limited to 'src/wikiget')
-rw-r--r--src/wikiget/dl.py19
-rw-r--r--src/wikiget/file.py12
-rw-r--r--src/wikiget/parse.py4
-rw-r--r--src/wikiget/wikiget.py4
4 files changed, 22 insertions, 17 deletions
diff --git a/src/wikiget/dl.py b/src/wikiget/dl.py
index 4521b72..171b017 100644
--- a/src/wikiget/dl.py
+++ b/src/wikiget/dl.py
@@ -30,10 +30,8 @@ from wikiget.validations import verify_hash
def query_api(filename, site_name, args):
- logging.debug(f"User agent: {wikiget.USER_AGENT}")
-
# connect to site and identify ourselves
- logging.info(f"Site name: {site_name}")
+ logging.info(f"Connecting to {site_name}")
try:
site = Site(site_name, path=args.path, clients_useragent=wikiget.USER_AGENT)
if args.username and args.password:
@@ -60,7 +58,7 @@ def query_api(filename, site_name, args):
# get info about the target file
try:
- file = site.images[filename]
+ image = site.images[filename]
except APIError as e:
# an API error at this point likely means access is denied, which could happen
# with a private wiki
@@ -71,23 +69,22 @@ def query_api(filename, site_name, args):
logging.debug(i)
raise
- return file, site
+ return image
def prep_download(dl, args):
- filename, dest, site_name = get_dest(dl, args)
- file = File(filename, dest)
- file.object, file.site = query_api(file.name, site_name, args)
+ file = get_dest(dl, args)
+ file.image = query_api(file.name, file.site, args)
return file
def download(f, args):
- file = f.object
+ file = f.image
filename = f.name
- site = f.site
dest = f.dest
+ site = file.site
- if file.imageinfo != {}:
+ if file.exists:
# file exists either locally or at a common repository, like Wikimedia Commons
file_url = file.imageinfo["url"]
file_size = file.imageinfo["size"]
diff --git a/src/wikiget/file.py b/src/wikiget/file.py
index c1b9ae6..b890e63 100644
--- a/src/wikiget/file.py
+++ b/src/wikiget/file.py
@@ -15,9 +15,13 @@
# You should have received a copy of the GNU General Public License
# along with Wikiget. If not, see <https://www.gnu.org/licenses/>.
+from mwclient.image import Image
+
+from wikiget import DEFAULT_SITE
+
class File:
- def __init__(self, name, dest=""):
+ def __init__(self, name: str, dest: str = "", site: str = "") -> None:
"""
Initializes a new file with the specified name and an optional destination name.
@@ -26,8 +30,10 @@ class File:
:param dest: destination of the file, if different from the name; if not
specified, defaults to the name
:type dest: str, optional
+ :param site: name of the site hosting the file; if not specified, defaults to
+ the global default site
"""
- self.object = None
- self.site = None
+ self.image: Image = None
self.name = name
self.dest = dest if dest else name
+ self.site = site if site else DEFAULT_SITE
diff --git a/src/wikiget/parse.py b/src/wikiget/parse.py
index f5c221d..4e9b195 100644
--- a/src/wikiget/parse.py
+++ b/src/wikiget/parse.py
@@ -52,4 +52,6 @@ def get_dest(dl, args):
dest = args.output or filename
- return filename, dest, site_name
+ file = File(filename, dest, site_name)
+
+ return file
diff --git a/src/wikiget/wikiget.py b/src/wikiget/wikiget.py
index af13bc8..90078e1 100644
--- a/src/wikiget/wikiget.py
+++ b/src/wikiget/wikiget.py
@@ -195,15 +195,15 @@ def batch_download(args):
def main():
- # setup
+ # setup our environment
parser = construct_parser()
args = parser.parse_args()
-
configure_logging(args)
# log events are appended to the file if it already exists, so note the start of a
# new download session
logging.info(f"Starting download session using wikiget {wikiget.wikiget_version}")
+ logging.debug(f"User agent: {wikiget.USER_AGENT}")
if args.batch:
# batch download mode