bots: Add Youtube Bot.
This sends the first video from youtube search results as a reply.
This commit is contained in:
parent
b703d893ba
commit
7fa2c45f60
BIN
contrib_bots/bots/youtube/assets/screen.png
Normal file
BIN
contrib_bots/bots/youtube/assets/screen.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 81 KiB |
11
contrib_bots/bots/youtube/readme.md
Normal file
11
contrib_bots/bots/youtube/readme.md
Normal 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)
|
31
contrib_bots/bots/youtube/youtube.py
Normal file
31
contrib_bots/bots/youtube/youtube.py
Normal 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
|
Loading…
Reference in a new issue