-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathwiki.py
96 lines (84 loc) · 2.52 KB
/
wiki.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import requests
import os
os.environ.setdefault('PYWIKIBOT2_NO_USER_CONFIG', '1')
import pywikibot
#https://stackoverflow.com/questions/30556857/creating-a-static-class-with-no-instances
#pārbaudīt, vai šis normāli strādā, ja izsauc vairākas reizes un dažādas metodes
class WikipediaAPI(object):
@staticmethod
def getPageText(wiki, page):
wiki = wiki.replace('wiki','')#lvwiki -> lv
site_orig = pywikibot.Site(wiki, "wikipedia")
page = pywikibot.Page(site_orig,page)
if not page.exists():
return None
lvwikitext = page.get(get_redirect=True)
return lvwikitext
'''
request = requests.get("https://{}.wikipedia.org/w/api.php".format(wiki), params={
"action": "query",
"format": "json",
"prop": "revisions",
"titles": page,
"redirects": 1,
"rvprop": "content",
"rvslots": "*"
})
'''
@staticmethod
def getArticleInfo(wiki, page):
request = requests.get("https://{}.wikipedia.org/w/api.php".format(wiki), params={
"action": "query",
"format": "json",
"prop": "categories|coordinates|redirects|templates",
"titles": page,
"redirects": 1,
"cllimit": "max",
"coprimary": "primary",
"rdprop": "title",
"rdlimit": "max",
"tllimit": "max"
})
resp = request.json()
itemlist = resp['query']['pages'].keys()
for key in itemlist:
res = resp['query']['pages'][key]
return res
return None
@staticmethod
def getOtherWikiArticle(wiki, page):
request = requests.get("https://{}.wikipedia.org/w/api.php".format(wiki), params={
"action": "query",
"format": "json",
"prop": "langlinks",
"titles": page,
"redirects": 1,
"lllang": "en"
})
resp = request.json()
itemlist = resp['query']['pages'].keys()
for key in itemlist:
res = resp['query']['pages'][key]['langlinks'][0]['*'] if 'langlinks' in resp['query']['pages'][key] else None
return res
return None
@staticmethod
def getFileInfo(wiki, page):
wiki = wiki.replace('wiki','')#lvwiki -> lv
request = requests.get("https://{}.wikipedia.org/w/api.php".format(wiki), params={
"action": "query",
"format": "json",
"prop": "fileusage|imageinfo|revisions",
"titles": page,#formā File:....
"iiprop": "timestamp|user|comment|dimensions|size|url|metadata",
"iilimit": "max",
"rvprop": "timestamp|user|content",
"rvslots": "*",
"rvlimit": "1"
})
resp = request.json()
itemlist = resp['query']['pages'].keys()
for key in itemlist:
res = resp['query']['pages'][key]
return res
return None
#action='query', prop='langlinks',lllang='en', titles=article