|  | 
 |  | 
 | 
												
													
														| 1 |  import json
 | 1 |  import json
 | 
												
													
														| 2 |  from requests import get
 | 2 |  from requests import get
 | 
												
													
														| 3 |  from urllib import urlencode
 | 3 |  from urllib import urlencode
 | 
												
													
														| 4 | -from datetime import datetime
 |  | 
 | 
												
													
														| 5 |  
 | 4 |  
 | 
												
													
														| 6 |  resultCount=2
 | 5 |  resultCount=2
 | 
												
													
														| 7 |  urlSearch = 'https://www.wikidata.org/w/api.php?action=query&list=search&format=json&srnamespace=0&srprop=sectiontitle&{query}'
 | 6 |  urlSearch = 'https://www.wikidata.org/w/api.php?action=query&list=search&format=json&srnamespace=0&srprop=sectiontitle&{query}'
 | 
												
											
												
													
														|  | 
 |  | 
 | 
												
													
														| 10 |  
 | 9 |  
 | 
												
													
														| 11 |  def request(query, params):
 | 10 |  def request(query, params):
 | 
												
													
														| 12 |      params['url'] = urlSearch.format(query=urlencode({'srsearch': query, 'srlimit': resultCount}))
 | 11 |      params['url'] = urlSearch.format(query=urlencode({'srsearch': query, 'srlimit': resultCount}))
 | 
												
													
														| 13 | -    print params['url']
 |  | 
 | 
												
													
														| 14 |      return params
 | 12 |      return params
 | 
												
													
														| 15 |  
 | 13 |  
 | 
												
													
														| 16 |  
 | 14 |  
 | 
												
											
												
													
														|  | 
 |  | 
 | 
												
													
														| 27 |          language = 'en'
 | 25 |          language = 'en'
 | 
												
													
														| 28 |      url = urlDetail.format(query=urlencode({'ids': '|'.join(wikidata_ids), 'languages': language + '|en'}))
 | 26 |      url = urlDetail.format(query=urlencode({'ids': '|'.join(wikidata_ids), 'languages': language + '|en'}))
 | 
												
													
														| 29 |  
 | 27 |  
 | 
												
													
														| 30 | -    before = datetime.now()
 |  | 
 | 
												
													
														| 31 |      htmlresponse = get(url)
 | 28 |      htmlresponse = get(url)
 | 
												
													
														| 32 | -    print datetime.now() - before
 |  | 
 | 
												
													
														| 33 |      jsonresponse = json.loads(htmlresponse.content)
 | 29 |      jsonresponse = json.loads(htmlresponse.content)
 | 
												
													
														| 34 |      for wikidata_id in wikidata_ids:
 | 30 |      for wikidata_id in wikidata_ids:
 | 
												
													
														| 35 |          results = results + getDetail(jsonresponse, wikidata_id, language)
 | 31 |          results = results + getDetail(jsonresponse, wikidata_id, language)
 | 
												
											
												
													
														|  | 
 |  | 
 | 
												
													
														| 38 |  
 | 34 |  
 | 
												
													
														| 39 |  def getDetail(jsonresponse, wikidata_id, language):
 | 35 |  def getDetail(jsonresponse, wikidata_id, language):
 | 
												
													
														| 40 |      result = jsonresponse.get('entities', {}).get(wikidata_id, {})
 | 36 |      result = jsonresponse.get('entities', {}).get(wikidata_id, {})
 | 
												
													
														| 41 | -    
 |  | 
 | 
												
													
														|  | 
 | 37 | +
 | 
												
													
														| 42 |      title = result.get('labels', {}).get(language, {}).get('value', None)
 | 38 |      title = result.get('labels', {}).get(language, {}).get('value', None)
 | 
												
													
														| 43 |      if title == None:
 | 39 |      if title == None:
 | 
												
													
														| 44 |          title = result.get('labels', {}).get('en', {}).get('value', wikidata_id)
 | 40 |          title = result.get('labels', {}).get('en', {}).get('value', wikidata_id)
 | 
												
											
												
													
														|  | 
 |  | 
 | 
												
													
														| 86 |      musicbrainz_release_group_id = get_string(claims, 'P436')
 | 82 |      musicbrainz_release_group_id = get_string(claims, 'P436')
 | 
												
													
														| 87 |      if musicbrainz_release_group_id != None:
 | 83 |      if musicbrainz_release_group_id != None:
 | 
												
													
														| 88 |          add_url(urls, 'MusicBrainz', 'http://musicbrainz.org/release-group/' + musicbrainz_release_group_id)
 | 84 |          add_url(urls, 'MusicBrainz', 'http://musicbrainz.org/release-group/' + musicbrainz_release_group_id)
 | 
												
													
														| 89 | -    
 |  | 
 | 
												
													
														|  | 
 | 85 | +
 | 
												
													
														| 90 |      musicbrainz_label_id = get_string(claims, 'P966')
 | 86 |      musicbrainz_label_id = get_string(claims, 'P966')
 | 
												
													
														| 91 |      if musicbrainz_label_id != None:
 | 87 |      if musicbrainz_label_id != None:
 | 
												
													
														| 92 |          add_url(urls, 'MusicBrainz', 'http://musicbrainz.org/label/' + musicbrainz_label_id)
 | 88 |          add_url(urls, 'MusicBrainz', 'http://musicbrainz.org/label/' + musicbrainz_label_id)
 | 
												
											
												
													
														|  | 
 |  | 
 | 
												
													
														| 111 |  
 | 107 |  
 | 
												
													
														| 112 |  
 | 108 |  
 | 
												
													
														| 113 |      results.append({
 | 109 |      results.append({
 | 
												
													
														| 114 | -            'infobox' : title, 
 |  | 
 | 
												
													
														|  | 
 | 110 | +            'infobox' : title,
 | 
												
													
														| 115 |              'id' : wikipedia_en_link,
 | 111 |              'id' : wikipedia_en_link,
 | 
												
													
														| 116 |              'content' : description,
 | 112 |              'content' : description,
 | 
												
													
														| 117 |              'attributes' : attributes,
 | 113 |              'attributes' : attributes,
 | 
												
											
												
													
														|  | 
 |  | 
 | 
												
													
														| 144 |      for e in propValue:
 | 140 |      for e in propValue:
 | 
												
													
														| 145 |          mainsnak = e.get('mainsnak', {})
 | 141 |          mainsnak = e.get('mainsnak', {})
 | 
												
													
														| 146 |  
 | 142 |  
 | 
												
													
														| 147 | -        datatype = mainsnak.get('datatype', '')
 |  | 
 | 
												
													
														| 148 |          datavalue = mainsnak.get('datavalue', {})
 | 143 |          datavalue = mainsnak.get('datavalue', {})
 | 
												
													
														| 149 |          if datavalue != None:
 | 144 |          if datavalue != None:
 | 
												
													
														| 150 |              result.append(datavalue.get('value', ''))
 | 145 |              result.append(datavalue.get('value', ''))
 | 
												
											
												
													
														|  | 
 |  | 
 | 
												
													
														| 164 |      for e in propValue:
 | 159 |      for e in propValue:
 | 
												
													
														| 165 |          mainsnak = e.get('mainsnak', {})
 | 160 |          mainsnak = e.get('mainsnak', {})
 | 
												
													
														| 166 |  
 | 161 |  
 | 
												
													
														| 167 | -        datatype = mainsnak.get('datatype', '')
 |  | 
 | 
												
													
														| 168 |          datavalue = mainsnak.get('datavalue', {})
 | 162 |          datavalue = mainsnak.get('datavalue', {})
 | 
												
													
														| 169 |          if datavalue != None:
 | 163 |          if datavalue != None:
 | 
												
													
														| 170 |              value = datavalue.get('value', '')
 | 164 |              value = datavalue.get('value', '')
 | 
												
											
												
													
														|  | 
 |  | 
 | 
												
													
														| 192 |  
 | 186 |  
 | 
												
													
														| 193 |      precision = value.get('precision', 0.0002)
 | 187 |      precision = value.get('precision', 0.0002)
 | 
												
													
														| 194 |  
 | 188 |  
 | 
												
													
														| 195 | -    # there is no zoom information, deduce from precision (error prone)    
 |  | 
 | 
												
													
														|  | 
 | 189 | +    # there is no zoom information, deduce from precision (error prone)
 | 
												
													
														| 196 |      # samples :
 | 190 |      # samples :
 | 
												
													
														| 197 |      # 13 --> 5
 | 191 |      # 13 --> 5
 | 
												
													
														| 198 |      # 1 --> 6
 | 192 |      # 1 --> 6
 |