Skip to content
This repository was archived by the owner on Feb 7, 2024. It is now read-only.

Commit b835b6c

Browse files
committed
Merge branch 'main' of https://github.com/cicalese/NewWikiApiary into main
2 parents ba1f112 + 3060fee commit b835b6c

File tree

2 files changed

+41
-31
lines changed

2 files changed

+41
-31
lines changed

scripts/create_pages_from_file.py

Lines changed: 32 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from argparse import ArgumentParser
22
import requests
33
import pywikibot
4+
from pywikibot.exceptions import InvalidTitleError, PageRelatedError
45
from sqlalchemy.orm import Session
56
from sqlalchemy import select
67
import time
@@ -77,31 +78,38 @@ def run():
7778
url = line.strip()
7879
sitename = get_sitename(url, args, errors, session)
7980
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}'
10285
)
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)
105113
except KeyboardInterrupt:
106114
pass
107115
finally:

scripts/lib/models.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
import os
2+
from sqlalchemy import engine as sa_engine
23
from sqlalchemy import create_engine
34
from sqlalchemy.ext.declarative import declarative_base
45

5-
username = os.environ['WIKIAPIARY_DB_USERNAME']
6-
password = os.environ['WIKIAPIARY_DB_PASSWORD']
7-
host = os.environ['WIKIAPIARY_DB_HOST']
8-
port = os.environ['WIKIAPIARY_DB_PORT']
9-
db_schema = os.environ['WIKIAPIARY_DB_SCHEMA']
10-
engine = create_engine(
11-
f'mysql+pymysql://{username}:{password}@{host}:{port}/{db_schema}'
6+
url = sa_engine.URL.create(
7+
drivername = "mysql+pymysql",
8+
username = os.environ['WIKIAPIARY_DB_USERNAME'],
9+
password = os.environ['WIKIAPIARY_DB_PASSWORD'],
10+
host = os.environ['WIKIAPIARY_DB_HOST'],
11+
port = os.environ['WIKIAPIARY_DB_PORT'],
12+
database = os.environ['WIKIAPIARY_DB_SCHEMA']
1213
)
14+
engine = create_engine(url)
1315

1416
Base = declarative_base()
1517
Base.metadata.reflect(engine)

0 commit comments

Comments
 (0)