Skip to content

Commit b618ede

Browse files
committed
Add dry run mode
Adding the --dry-run flag will allow to output new page content instead of posting it to the wiki. Includes allowing to specify the port in configuration to make testing possible.
1 parent 53387e7 commit b618ede

File tree

2 files changed

+23
-9
lines changed

2 files changed

+23
-9
lines changed

main.py

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,31 @@
77

88
def main ( args ):
99
wiki = args[1]
10+
dry_run = False
11+
methods = []
1012
for arg in args[2:]:
11-
print arg
12-
run = Run( wiki )
13-
method = getattr( run, str( arg ) )
13+
if arg == '--dry-run':
14+
dry_run = True
15+
else:
16+
methods.append(arg)
17+
18+
for m in methods:
19+
print( m )
20+
run = Run( wiki, dry_run )
21+
method = getattr( run, str( m ) )
1422
if not method:
1523
raise Exception( "Method not implemented" )
1624
else:
1725
method()
1826

1927
class Run:
20-
def __init__( self, wiki ):
21-
self.db = pymysql.connect( host = wiki + 'wiki.labsdb', user = credentials['user'], passwd = credentials['pass'], db = wiki + 'wiki_p' )
28+
def __init__( self, wiki, dry_run ):
29+
host = '127.0.0.1' if dry_run else wiki + 'wiki.labsdb'
30+
port = credentials.get( 'port', 3306 )
31+
self.db = pymysql.connect( host = host, user = credentials['user'], passwd = credentials['pass'], db = wiki + 'wiki_p', port = port )
2232
self.site = mwclient.Site( wiki + '.wikipedia.org' )
2333
self.site.login( cttbot['user'], cttbot['pass'] )
24-
self.rep = Reports( self.site, self.db, wiki )
34+
self.rep = Reports( self.site, self.db, wiki, dry_run )
2535

2636
def forgotten_articles( self ):
2737
self.rep.forgotten_articles()

reports.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,13 @@
99
sys.setdefaultencoding('utf8')
1010

1111
class Reports:
12-
def __init__( self, site, db, wiki ):
12+
def __init__( self, site, db, wiki, dry_run=False ):
1313
self.db = db
1414
self.site = site
1515
self.wiki = wiki
1616
# 30s is not enough
1717
self.site.requests['timeout'] = 120
18+
self.dry_run = dry_run
1819

1920
# Oldest edited articles
2021
# Run time on enwiki 5 hours 23 minutes as of 8 Sept 2015
@@ -446,8 +447,11 @@ def publish_report( self, title, content ):
446447
reports_base_url = dict_obj[ str( 'reports_base_url' ) ]
447448
report_title = dict_obj[ str( title ) ]
448449
print str( reports_base_url + report_title )
449-
page = self.site.Pages[ reports_base_url + report_title ]
450-
page.save( content, summary = dict_obj[ 'summary' ] , minor=True)
450+
if self.dry_run:
451+
print content
452+
else:
453+
page = self.site.Pages[ reports_base_url + report_title ]
454+
page.save( content, summary = dict_obj[ 'summary' ] , minor=True)
451455

452456

453457
def linkify( self, title, namespace = None ):

0 commit comments

Comments
 (0)