bots: Add Youtube Bot.

This sends the first video from youtube search results as a reply.
This commit is contained in:
Krzysztof Krzysztof 2017-05-24 17:00:21 -07:00 committed by Tim Abbott
parent b703d893ba
commit 7fa2c45f60
3 changed files with 42 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

View file

@ -0,0 +1,11 @@
# Youtube bot
Youtube bot is a Zulip bot that can fetch first video from youtube
search results for a specified term. To use youtube bot you can simply
call it with `@mention-bot` followed by a command. Like this:
```
@mention-bot <search term>
```
![example usage](assets/screen.png)

View file

@ -0,0 +1,31 @@
# See readme.md for instructions on running this bot.
import requests
from bs4 import BeautifulSoup
class YoutubeHandler(object):
def usage(self):
return '''
This bot will return the first Youtube search result for the give query.
'''
def handle_message(self, message, client, state_handler):
help_content = '''
To use the, Youtube Bot send `@mention-bot search terms`
Example:
@mention-bot funny cats
'''.strip()
if message['content'] == '':
client.send_reply(message, help_content)
else:
text_to_search = message['content']
url = "https://www.youtube.com/results?search_query=" + text_to_search
r = requests.get(url)
soup = BeautifulSoup(r.text, 'lxml')
video_id = soup.find(attrs={'class': 'yt-uix-tile-link'})
try:
link = 'https://www.youtube.com' + video_id['href']
client.send_reply(message, link)
except TypeError:
client.send_reply(message, 'No video found for specified search terms')
handler_class = YoutubeHandler