bots: Add Youtube Bot.
This sends the first video from youtube search results as a reply.
ADD
contrib_bots/bots/youtube/assets/screen.png
contrib_bots/bots/youtube/assets/screen.png
Binary files /dev/null and b/contrib_bots/bots/youtube/assets/screen.png differ

ADD
contrib_bots/bots/youtube/readme.md
+# 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)

ADD
contrib_bots/bots/youtube/youtube.py
+# 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

bots: Add Youtube Bot.

This sends the first video from youtube search results as a reply.