From a1a2ced4a128d67be16ea064c96253be3bc0c213 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dan=20Michael=20O=2E=20Hegg=C3=B8?= <danmichaelo@gmail.com>
Date: Sat, 28 Jul 2012 00:22:54 +0200
Subject: [PATCH] [gist 2983401] Support for getting pages by pageid as well,
 not just pagename

---
 listing.py | 14 +++++++-------
 page.py    |  8 ++++++--
 2 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/listing.py b/listing.py
index 363f8d7..98dc32e 100644
--- a/listing.py
+++ b/listing.py
@@ -163,13 +163,13 @@ class PageList(GeneratorList):
 			return page.Page(self.site, self.site.namespaces[self.namespace] + ':' + name, info)
 		else:
 			# Guessing page class
-			namespace = self.guess_namespace(name)
-			if namespace == 14:
-				return Category(self.site, name, info)
-			elif namespace == 6:
-				return page.Image(self.site, name, info)
-			else:
-				return page.Page(self.site, name, info)
+			if type(name) is not int:
+				namespace = self.guess_namespace(name)
+				if namespace == 14:
+					return Category(self.site, name, info)
+				elif namespace == 6:
+					return page.Image(self.site, name, info)
+			return page.Page(self.site, name, info)
 		
 	def guess_namespace(self, name):
 		normal_name = page.Page.normalize_title(name)
diff --git a/page.py b/page.py
index 5e0c2ac..9031fcd 100644
--- a/page.py
+++ b/page.py
@@ -21,8 +21,12 @@ class Page(object):
 				prop = 'info'
 				extra_props = ()
 			
-			info = self.site.api('query', prop = prop, titles = name, 
-				inprop = 'protection', *extra_props)
+			if type(name) is int:
+				info = self.site.api('query', prop = prop, pageids = name,
+					inprop = 'protection', *extra_props)
+			else:
+				info = self.site.api('query', prop = prop, titles = name,
+					inprop = 'protection', *extra_props)
 			info = info['query']['pages'].itervalues().next()
 		self._info = info
 				
-- 
GitLab