def wiki_search(s, seed, n, morelike=False): """ A client to the Mediawiki search API """ endpoint, params = build_wiki_search(s, seed, n, morelike) try: response = data_fetcher.get(endpoint, params=params) except ValueError: log.info('Could not search for articles related to seed in %s. Choose another language.', s) return [] if 'query' not in response or 'search' not in response['query']: log.info('Could not search for articles related to seed in %s. Choose another language.', s) return [] response = response['query']['search'] results = [r['title'].replace(' ', '_') for r in response] if len(results) == 0: log.info('No articles similar to %s in %s. Try another seed.', seed, s) return [] return results
def query_pageviews(self, s): """ Query pageview API and parse results """ days = configuration.get_config_int('popular_pageviews', 'days') date_format = configuration.get_config_value('popular_pageviews', 'date_format') query = configuration.get_config_value('popular_pageviews', 'query') date = (datetime.datetime.utcnow() - datetime.timedelta(days=days)).strftime(date_format) query = query.format(source=s, date=date) try: data = data_fetcher.get(query) except ValueError: return [] article_pv_tuples = [] try: for d in data['items'][0]['articles']: article_pv_tuples.append((d['article'], d['views'])) except: log.info('Could not get most popular articles for %s from pageview API. Try using a seed article.', s) return article_pv_tuples