def do_get(self, line): """ get ID [revision] Get page contents """ if not line: print >> sys.stderr, 'Error: please give a page ID' return 2 line = line.rsplit(' ', 1) if len(line) > 1: revision = Revision(line[1]) else: revision = None _id, backend_name = self.parse_id(line[0]) backend_names = ( backend_name, ) if backend_name is not None else self.enabled_backends _id = _id.encode('utf-8') output = codecs.getwriter(sys.stdout.encoding or locale.getpreferredencoding())(sys.stdout) for contents in [ content for backend, content in self.do( 'get_content', _id, revision, backends=backend_names) if content ]: output.write(contents.content) # add a newline unless we are writing # in a file or in a pipe if os.isatty(output.fileno()): output.write('\n')
def iter_wiki_revisions(self, page): """ Yield 'Revision' objects. """ if len(self.username) > 0 and not self.is_logged(): self.login() MAX_RESULTS = 50 results = MAX_RESULTS last_id = None while results == MAX_RESULTS: data = {'action': 'query', 'titles': page, 'prop': 'revisions', 'rvprop': 'ids|timestamp|comment|user|flags', 'rvlimit': str(MAX_RESULTS), } if last_id is not None: data['rvstartid'] = last_id result = self.API_get(data) pageid = str(list(result['query']['pages'].keys())[0]) results = 0 if pageid != "-1": for rev in result['query']['pages'][pageid]['revisions']: rev_content = Revision(str(rev['revid'])) rev_content.comment = rev['comment'] rev_content.author = rev['user'] rev_content.timestamp = datetime.datetime.strptime(rev['timestamp'], '%Y-%m-%dT%H:%M:%SZ') rev_content.minor = 'minor' in rev yield rev_content last_id = rev_content.id results += 1
def do_get(self, line): """ get ID [-r revision] Get page contents """ if not line: print('Error: please give a page ID', file=self.stderr) return 2 _part_line = line.strip().split(' ') revision = None if '-r' in _part_line: r_index = _part_line.index('-r') if len(_part_line) - 1 > r_index: revision = Revision(_part_line[r_index + 1]) _part_line.remove(revision.id) _part_line.remove('-r') if not _part_line: print('Error: please give a page ID', file=self.stderr) return 2 _id, backend_name = self.parse_id(" ".join(_part_line)) backend_names = ( backend_name, ) if backend_name is not None else self.enabled_backends _id = _id.encode('utf-8') output = codecs.getwriter(self.encoding)(self.stdout) for contents in [ content for content in self.do( 'get_content', _id, revision, backends=backend_names) if content ]: output.write(contents.content) # add a newline unless we are writing # in a file or in a pipe if output.isatty(): output.write('\n')
def iter_wiki_revisions(self, page): """ Yield 'Revision' objects. """ if len(self.username) > 0 and not self.is_logged(): self.login() MAX_RESULTS = 50 results = MAX_RESULTS last_id = None while results == MAX_RESULTS: data = { 'action': 'query', 'titles': page, 'prop': 'revisions', 'rvprop': 'ids|timestamp|comment|user|flags', 'rvlimit': str(MAX_RESULTS), } if last_id is not None: data['rvstartid'] = last_id result = self.API_get(data) pageid = str(result['query']['pages'].keys()[0]) results = 0 if pageid != "-1": for rev in result['query']['pages'][pageid]['revisions']: rev_content = Revision(str(rev['revid'])) rev_content.comment = rev['comment'] rev_content.author = rev['user'] rev_content.timestamp = datetime.datetime.strptime( rev['timestamp'], '%Y-%m-%dT%H:%M:%SZ') rev_content.minor = 'minor' in rev yield rev_content last_id = rev_content.id results += 1
def iter_wiki_revisions(self, page, nb_entries): """ Yield 'Revision' objects for the last <nb_entries> revisions of the specified page. """ if len(self.username) > 0 and not self.is_logged(): self.login() data = {'action': 'query', 'titles': page, 'prop': 'revisions', 'rvprop': 'ids|timestamp|comment|user|flags', 'rvlimit': str(nb_entries), } result = self.API_get(data) pageid = str(result['query']['pages'].keys()[0]) if pageid != "-1": for rev in result['query']['pages'][pageid]['revisions']: rev_content = Revision(str(rev['revid'])) rev_content.comment = rev['comment'] rev_content.author = rev['user'] rev_content.timestamp = datetime.datetime.strptime(rev['timestamp'], '%Y-%m-%dT%H:%M:%SZ') rev_content.minor = 'minor' in rev yield rev_content