http://www.mediawiki.org/wiki/Special:Code/pywikipedia/10683
Revision: 10683
Author: valhallasw
Date: 2012-11-10 16:26:57 +0000 (Sat, 10 Nov 2012)
Log Message:
-----------
More fool-proof generation of family files
Modified Paths:
--------------
trunk/pywikipedia/generate_family_file.py
Modified: trunk/pywikipedia/generate_family_file.py
===================================================================
--- trunk/pywikipedia/generate_family_file.py 2012-11-10 16:10:58 UTC (rev 10682)
+++ trunk/pywikipedia/generate_family_file.py 2012-11-10 16:26:57 UTC (rev 10683)
@@ -48,11 +48,12 @@
import family
class FamilyFileGenerator(object):
- def __init__(self, url=None, name=None):
+ def __init__(self, url=None, name=None, dointerwiki=None):
if url == None:
url = raw_input("Please insert URL to wiki: ")
if name == None:
name = raw_input("Please insert a short name (eg: freeciv): ")
+ self.dointerwiki = dointerwiki
self.base_url = url
self.name = name
@@ -96,25 +97,45 @@
u'prefix': w.lang,
u'url': w.iwpath})
- if len(self.langs) > 1 and \
- raw_input("\nThere are %i languages available.\nDo you want to generate interwiki links? This might take a long time. (y/N)" % len(self.langs)).lower() != "y":
- self.langs = [wiki for wiki in self.langs if wiki[u'url'] == w.iwpath]
+ if len(self.langs) > 1:
+ if self.dointerwiki is None:
+ makeiw = raw_input("\nThere are %i languages available.\nDo you want to generate interwiki links? This might take a long time. ([y]es/[N]o/[e]dit)" % len(self.langs)).lower()
+ else:
+ makeiw = self.dointerwiki
+
+ if makeiw == "y":
+ pass
+ elif makeiw == "e":
+ for wiki in self.langs:
+ print wiki['prefix'], wiki['url']
+ do_langs = raw_input("Which languages do you want: ")
+ self.langs = [wiki for wiki in self.langs if wiki['prefix'] in do_langs or wiki['url'] == w.iwpath]
+ else:
+ self.langs = [wiki for wiki in self.langs if wiki[u'url'] == w.iwpath]
def getapis(self):
print "Loading wikis... "
for lang in self.langs:
print " * %s... " % (lang[u'prefix']),
if lang[u'url'] not in self.wikis:
- self.wikis[lang[u'url']] = Wiki(lang[u'url'])
- print "downloaded"
+ try:
+ self.wikis[lang[u'url']] = Wiki(lang[u'url'])
+ print "downloaded"
+ except Exception, e:
+ print e
else:
print "in cache"
def getnamespaces(self):
print "Retrieving namespaces... ",
- for w in self.wikis.itervalues():
+ for key in self.wikis.keys():
+ w = self.wikis[key]
print "%s " % w.lang,
- self.namespaces.addfromwiki(w)
+ try:
+ self.namespaces.addfromwiki(w)
+ except Exception, e:
+ print e, (" - removing language %s" % key)
+ del self.wikis[key]
print
def writefile(self):
http://www.mediawiki.org/wiki/Special:Code/pywikipedia/10681
Revision: 10681
Author: xqt
Date: 2012-11-10 10:22:42 +0000 (Sat, 10 Nov 2012)
Log Message:
-----------
pass namespace parameter in Category.articles(),
fix for bug #3585778, patch submitted by Legoktm - thanks
Modified Paths:
--------------
branches/rewrite/pywikibot/page.py
Modified: branches/rewrite/pywikibot/page.py
===================================================================
--- branches/rewrite/pywikibot/page.py 2012-11-08 14:05:25 UTC (rev 10680)
+++ branches/rewrite/pywikibot/page.py 2012-11-10 10:22:42 UTC (rev 10681)
@@ -1723,7 +1723,7 @@
"""
if namespaces is None:
namespaces = [x for x in self.site.namespaces()
- if x>=0 and x!=14]
+ if x >= 0 and x <> 14]
for member in self.site.categorymembers(self,
namespaces=namespaces,
step=step, total=total,
@@ -1737,9 +1737,9 @@
if not isinstance(recurse, bool) and recurse:
recurse = recurse - 1
for subcat in self.subcategories(step=step):
- for article in subcat.articles(
- recurse, step=step, total=total,
- content=content):
+ for article in subcat.articles(recurse, step=step, total=total,
+ content=content,
+ namespaces=namespaces):
yield article
if total is not None:
total -= 1