Skip to content

Commit

Permalink
Merge pull request #323 from re0wiki/dev
Browse files Browse the repository at this point in the history
fix(image): allpages -> allimages
  • Loading branch information
CCXXXI committed Jun 14, 2023
2 parents 2376f5b + 30ecb8b commit cbec7c2
Showing 1 changed file with 4 additions and 25 deletions.
29 changes: 4 additions & 25 deletions scripts/re0_image.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ def transfer_file(
*,
target_site: pywikibot.Site,
source_site: pywikibot.Site,
source_page: pywikibot.Page,
source_page: pywikibot.FilePage,
):
"""搬运一张图片。"""
if not target_site.logged_in():
Expand All @@ -22,7 +22,6 @@ def transfer_file(
return
target_page: pywikibot.FilePage = pywikibot.FilePage(target_site, title)

source_page: pywikibot.FilePage = get_final_redirect_target(source_page)
if source_page is None:
logging.warning("source_page is None. title=%s", title)
return
Expand Down Expand Up @@ -51,27 +50,12 @@ def transfer_file(
)


def get_final_redirect_target(page: pywikibot.Page) -> pywikibot.FilePage | None:
"""Continuously get redirect target until a non-redirect page encountered."""
try:
while page.isRedirectPage():
page = page.getRedirectTarget()
except exceptions.CircularRedirectError as e:
logging.warning(str(e))
return None
else:
if not isinstance(page, pywikibot.FilePage) or not page.exists():
logging.warning("%s is not a FilePage or does not exist.", page)
return None
return page


def transfer(*, source, target):
"""搬运图片。"""
logging.info("source=%s, target=%s", source, target)

# use allpages to include redirect pages
for page in tqdm(list(source.allpages(namespace="File"))):
for page in tqdm(list(source.allimages())):
assert isinstance(page, pywikibot.FilePage)
try:
transfer_file(target_site=target, source_site=source, source_page=page)
except (exceptions.PageRelatedError, exceptions.APIError, ValueError) as e:
Expand All @@ -81,12 +65,7 @@ def transfer(*, source, target):

if __name__ == "__main__":
logging.basicConfig(
level=logging.ERROR,
level=logging.INFO,
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
)

pywikibot.output("Transfer files")
pywiki_logger = logging.getLogger("pywiki")
pywiki_logger.setLevel(logging.ERROR)

transfer(source=pywikibot.Site("en", "re0"), target=pywikibot.Site("zh", "re0"))

0 comments on commit cbec7c2

Please sign in to comment.