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