|
1 | 1 | from argparse import ArgumentParser |
2 | 2 | import requests |
3 | 3 | import pywikibot |
| 4 | +from pywikibot.exceptions import InvalidTitleError, PageRelatedError |
4 | 5 | from sqlalchemy.orm import Session |
5 | 6 | from sqlalchemy import select |
6 | 7 | import time |
@@ -77,31 +78,38 @@ def run(): |
77 | 78 | url = line.strip() |
78 | 79 | sitename = get_sitename(url, args, errors, session) |
79 | 80 | if sitename: |
80 | | - log_message( |
81 | | - session, |
82 | | - f'Creating/updating page for site {sitename} with URL {url}' |
83 | | - ) |
84 | | - page = pywikibot.Page(site, sitename) |
85 | | - if page.exists(): |
86 | | - comment = 'Updated page' |
87 | | - else: |
88 | | - comment = 'Created page' |
89 | | - page.text = f'{{{{Wiki|url={url}}}}}' |
90 | | - page.save(comment) |
91 | | - stmt = select(Wiki).where(Wiki.w8y_wi_page_id == page.pageid) |
92 | | - wiki = session.scalars(stmt).one_or_none() |
93 | | - if wiki: |
94 | | - wiki.w8y_wi_api_url = bytes(url, 'utf8') |
95 | | - wiki.w8y_wi_last_sr_id = None |
96 | | - else: |
97 | | - wiki = Wiki( |
98 | | - w8y_wi_page_id=page.pageid, |
99 | | - w8y_wi_api_url=bytes(url, 'utf8'), |
100 | | - w8y_wi_last_sr_id=None, |
101 | | - w8y_wi_is_defunct=False |
| 81 | + try: |
| 82 | + log_message( |
| 83 | + session, |
| 84 | + f'Creating/updating page for site {sitename} with URL {url}' |
102 | 85 | ) |
103 | | - session.add(wiki) |
104 | | - session.commit() |
| 86 | + page = pywikibot.Page(site, 'Wiki:' + sitename) |
| 87 | + if page.exists(): |
| 88 | + comment = 'Updated page' |
| 89 | + else: |
| 90 | + comment = 'Created page' |
| 91 | + page.text = f'{{{{Wiki|url={url}}}}}' |
| 92 | + page.save(comment) |
| 93 | + stmt = select(Wiki).where(Wiki.w8y_wi_page_id == page.pageid) |
| 94 | + wiki = session.scalars(stmt).one_or_none() |
| 95 | + if wiki: |
| 96 | + wiki.w8y_wi_api_url = bytes(url, 'utf8') |
| 97 | + wiki.w8y_wi_last_sr_id = None |
| 98 | + else: |
| 99 | + wiki = Wiki( |
| 100 | + w8y_wi_page_id=page.pageid, |
| 101 | + w8y_wi_api_url=bytes(url, 'utf8'), |
| 102 | + w8y_wi_last_sr_id=None, |
| 103 | + w8y_wi_is_defunct=False |
| 104 | + ) |
| 105 | + session.add(wiki) |
| 106 | + session.commit() |
| 107 | + except (InvalidTitleError, PageRelatedError): |
| 108 | + message = f'Error from {url} with {sitename}' |
| 109 | + log_message(session, message) |
| 110 | + if args.verbose: |
| 111 | + print(message) |
| 112 | + errors.append(url) |
105 | 113 | except KeyboardInterrupt: |
106 | 114 | pass |
107 | 115 | finally: |
|
0 commit comments