mirror of
https://github.com/oddluck/limnoria-plugins.git
synced 2025-04-28 22:41:08 -05:00
SpiffyTitles: add Twitter handler
This commit is contained in:
parent
7cad84a682
commit
ea47c3cea2
@ -37,7 +37,7 @@ import supybot.world as world
|
|||||||
|
|
||||||
# Use this for the version of this plugin. You may wish to put a CVS keyword
|
# Use this for the version of this plugin. You may wish to put a CVS keyword
|
||||||
# in here if you're keeping the plugin in CVS or some similar system.
|
# in here if you're keeping the plugin in CVS or some similar system.
|
||||||
__version__ = "2020.05.21+git"
|
__version__ = "2020.06.06+git"
|
||||||
|
|
||||||
# XXX Replace this with an appropriate author or supybot.Author instance.
|
# XXX Replace this with an appropriate author or supybot.Author instance.
|
||||||
__author__ = supybot.Author("butterscotchstallion", "butterscotchstallion", "")
|
__author__ = supybot.Author("butterscotchstallion", "butterscotchstallion", "")
|
||||||
|
@ -652,3 +652,25 @@ conf.registerChannelValue(
|
|||||||
_("""Uses Coub API to get additional information about coub.com links"""),
|
_("""Uses Coub API to get additional information about coub.com links"""),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# twitter configs
|
||||||
|
conf.registerGroup(SpiffyTitles, "twitter")
|
||||||
|
|
||||||
|
# twitter enabler
|
||||||
|
conf.registerChannelValue(
|
||||||
|
SpiffyTitles.coub,
|
||||||
|
"enabled",
|
||||||
|
registry.Boolean(
|
||||||
|
True, _("""Whether to add additional information about Twitter links""")
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
# twitter template
|
||||||
|
conf.registerChannelValue(
|
||||||
|
SpiffyTitles.coub,
|
||||||
|
"template",
|
||||||
|
registry.String(
|
||||||
|
"^ {{text}}",
|
||||||
|
_("""Uses Twitter API to get additional information about twitter.com links"""),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
@ -78,6 +78,11 @@ class SpiffyTitles(callbacks.Plugin):
|
|||||||
self.add_wikipedia_handlers()
|
self.add_wikipedia_handlers()
|
||||||
self.add_reddit_handlers()
|
self.add_reddit_handlers()
|
||||||
self.add_twitch_handlers()
|
self.add_twitch_handlers()
|
||||||
|
self.add_twitter_handlers()
|
||||||
|
|
||||||
|
def add_twitter_handlers(self):
|
||||||
|
self.handlers["twitter.com"] = self.handler_twitter
|
||||||
|
self.handlers["www.twitter.com"] = self.handler_twitter
|
||||||
|
|
||||||
def add_dailymotion_handlers(self):
|
def add_dailymotion_handlers(self):
|
||||||
self.handlers["www.dailymotion.com"] = self.handler_dailymotion
|
self.handlers["www.dailymotion.com"] = self.handler_dailymotion
|
||||||
@ -1649,6 +1654,38 @@ class SpiffyTitles(callbacks.Plugin):
|
|||||||
else:
|
else:
|
||||||
return self.handler_default(url, channel)
|
return self.handler_default(url, channel)
|
||||||
|
|
||||||
|
def handler_twitter(self, url, info, channel):
|
||||||
|
if not self.registryValue("twitter.enabled", channel):
|
||||||
|
return self.handler_default(url, channel)
|
||||||
|
api_url = "https://publish.twitter.com/oembed?url={0}&omit_script=True".format(
|
||||||
|
url
|
||||||
|
)
|
||||||
|
try:
|
||||||
|
request = requests.get(api_url, timeout=self.timeout)
|
||||||
|
request.raise_for_status()
|
||||||
|
except (
|
||||||
|
requests.exceptions.RequestException,
|
||||||
|
requests.exceptions.HTTPError,
|
||||||
|
) as e:
|
||||||
|
log.error("SpiffyTitles: Twitter Error: {0}".format(e))
|
||||||
|
return self.handler_default(url, channel)
|
||||||
|
response = None
|
||||||
|
try:
|
||||||
|
response = json.loads(request.content.decode())
|
||||||
|
except:
|
||||||
|
log.error("SpiffyTitles: Error reading Twitter JSON response")
|
||||||
|
return self.handler_default(url, channel)
|
||||||
|
results = {}
|
||||||
|
results["name"] = response["author_name"]
|
||||||
|
soup = BeautifulSoup(response["html"])
|
||||||
|
results["text"] = soup.text.replace("—", " - ").strip()
|
||||||
|
template = Template(self.registryValue("twitter.template", channel))
|
||||||
|
title = template.render(results).strip()
|
||||||
|
if title:
|
||||||
|
return title
|
||||||
|
else:
|
||||||
|
return self.handler_default(url, channel)
|
||||||
|
|
||||||
def t(self, irc, msg, args, query):
|
def t(self, irc, msg, args, query):
|
||||||
"""
|
"""
|
||||||
Retrieves title for a URL on demand
|
Retrieves title for a URL on demand
|
||||||
|
Loading…
x
Reference in New Issue
Block a user