mirror of
https://github.com/jlu5/SupyPlugins.git
synced 2025-04-26 13:01:07 -05:00
Wikifetch: return the address in _get_article_tree as well
This commit is contained in:
parent
18493a5e23
commit
2bd06a39a9
@ -105,14 +105,14 @@ class Wikifetch(callbacks.Plugin):
|
|||||||
article = article.decode()
|
article = article.decode()
|
||||||
|
|
||||||
tree = lxml.html.document_fromstring(article)
|
tree = lxml.html.document_fromstring(article)
|
||||||
return (tree, article)
|
return (tree, article, addr)
|
||||||
|
|
||||||
def _wiki(self, irc, msg, search, baseurl):
|
def _wiki(self, irc, msg, search, baseurl):
|
||||||
"""Fetches and replies content from a MediaWiki-powered website."""
|
"""Fetches and replies content from a MediaWiki-powered website."""
|
||||||
reply = ''
|
reply = ''
|
||||||
|
|
||||||
# First, fetch and parse the page
|
# First, fetch and parse the page
|
||||||
tree, article = self._get_article_tree(baseurl, search)
|
tree, article, addr = self._get_article_tree(baseurl, search)
|
||||||
|
|
||||||
# check if it gives a "Did you mean..." redirect
|
# check if it gives a "Did you mean..." redirect
|
||||||
didyoumean = tree.xpath('//div[@class="searchdidyoumean"]/a'
|
didyoumean = tree.xpath('//div[@class="searchdidyoumean"]/a'
|
||||||
@ -128,7 +128,7 @@ class Wikifetch(callbacks.Plugin):
|
|||||||
reply += _('I didn\'t find anything for "%s". '
|
reply += _('I didn\'t find anything for "%s". '
|
||||||
'Did you mean "%s"? ') % (search, redirect)
|
'Did you mean "%s"? ') % (search, redirect)
|
||||||
|
|
||||||
tree, article = self._get_article_tree(baseurl, didyoumean[0].get('href'))
|
tree, article, addr = self._get_article_tree(baseurl, didyoumean[0].get('href'))
|
||||||
search = redirect
|
search = redirect
|
||||||
|
|
||||||
# check if it's a page of search results (rather than an article), and
|
# check if it's a page of search results (rather than an article), and
|
||||||
@ -145,7 +145,7 @@ class Wikifetch(callbacks.Plugin):
|
|||||||
# Follow the search result and fetch that article. Note: use the original
|
# Follow the search result and fetch that article. Note: use the original
|
||||||
# base url to prevent prefixes like "/wiki" from being added twice.
|
# base url to prevent prefixes like "/wiki" from being added twice.
|
||||||
self.log.debug('Wikifetch: following search result:')
|
self.log.debug('Wikifetch: following search result:')
|
||||||
tree, article = self._get_article_tree(None, searchresults[0].get('href'))
|
tree, article, addr = self._get_article_tree(None, searchresults[0].get('href'))
|
||||||
search = redirect
|
search = redirect
|
||||||
# otherwise, simply return the title and whether it redirected
|
# otherwise, simply return the title and whether it redirected
|
||||||
elif self.registryValue('showRedirects', msg.args[0]):
|
elif self.registryValue('showRedirects', msg.args[0]):
|
||||||
@ -171,7 +171,9 @@ class Wikifetch(callbacks.Plugin):
|
|||||||
addr = tree.find(".//div[@class='printfooter']/a").attrib['href']
|
addr = tree.find(".//div[@class='printfooter']/a").attrib['href']
|
||||||
addr = re.sub('([&?]|(amp;)?)oldid=\d+$', '', addr)
|
addr = re.sub('([&?]|(amp;)?)oldid=\d+$', '', addr)
|
||||||
except:
|
except:
|
||||||
|
# If any of the above post-processing tricks fail, just ignore
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# check if it's a disambiguation page
|
# check if it's a disambiguation page
|
||||||
disambig = tree.xpath('//table[@id="disambigbox"]') or \
|
disambig = tree.xpath('//table[@id="disambigbox"]') or \
|
||||||
tree.xpath('//table[@id="setindexbox"]') or \
|
tree.xpath('//table[@id="setindexbox"]') or \
|
||||||
@ -195,7 +197,7 @@ class Wikifetch(callbacks.Plugin):
|
|||||||
reply += format(_('Possible results include: %L'), disambig_results)
|
reply += format(_('Possible results include: %L'), disambig_results)
|
||||||
|
|
||||||
# Catch talk pages
|
# Catch talk pages
|
||||||
elif 'ns-talk' in tree.find("body").attrib['class']:
|
elif 'ns-talk' in tree.find("body").attrib.get('class', ''):
|
||||||
reply += format(_('This article appears to be a talk page: %u'), addr)
|
reply += format(_('This article appears to be a talk page: %u'), addr)
|
||||||
else:
|
else:
|
||||||
p = tree.xpath("//div[@id='mw-content-text']/p[1]")
|
p = tree.xpath("//div[@id='mw-content-text']/p[1]")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user