diff --git a/contrib_bots/bots/youtube/assets/screen.png b/contrib_bots/bots/youtube/assets/screen.png new file mode 100644 index 0000000..95998c6 Binary files /dev/null and b/contrib_bots/bots/youtube/assets/screen.png differ diff --git a/contrib_bots/bots/youtube/readme.md b/contrib_bots/bots/youtube/readme.md new file mode 100644 index 0000000..5873c8c --- /dev/null +++ b/contrib_bots/bots/youtube/readme.md @@ -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 +``` + +![example usage](assets/screen.png) diff --git a/contrib_bots/bots/youtube/youtube.py b/contrib_bots/bots/youtube/youtube.py new file mode 100644 index 0000000..2b03c9f --- /dev/null +++ b/contrib_bots/bots/youtube/youtube.py @@ -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