UNPKG

1.94 kBtext/coffeescriptView Raw
1# Description:
2# Display meme from "The coding love <http://thecodinglove.com>"
3# or "les joies du code <http://lesjoiesducode.tumblr.com>".
4#
5# Dependencies:
6# "cheerio": "0.7.0"
7# "ent": "0.1.0"
8#
9# Configuration:
10# None
11#
12# Commands:
13# hubot [give me some] joy [asshole] - Return a random meme (coding love)
14# hubot last joy - Returns last meme (coding love)
15# hubot [donne moi de la] joie [bordel] - Returns a random meme (text and image)
16# hubot {dernière|derniere} joie - Returns last meme (text and image).
17#
18# Author:
19# Eunomie
20# Based 9gag.coffee by EnriqueVidal
21
22cheerio = require('cheerio')
23ent = require('ent')
24
25module.exports = (robot)->
26 robot.respond /(donne moi de la )?joie( bordel)?/i, (message)->
27 send_meme message, 'http://lesjoiesducode.fr/random', (text)->
28 message.send text
29 robot.respond /derni[èe]re joie/i, (message)->
30 send_meme message, 'http://lesjoiesducode.fr', (text)->
31 message.send text
32 robot.respond /(give me some )?joy( asshole)?/i, (message)->
33 send_meme message, 'http://thecodinglove.com/random', (text)->
34 message.send text
35 robot.respond /last joy/i, (message)->
36 send_meme message, 'http://thecodinglove.com', (text)->
37 message.send text
38
39
40send_meme = (message, location, response_handler)->
41 url = location
42
43 message.http(url).get() (error, response, body)->
44 return response_handler "Sorry, something went wrong" if error
45
46 if response.statusCode == 302 || response.statusCode == 301
47 location = response.headers['location']
48 return send_meme(message, location, response_handler)
49
50 img_src = get_meme_image(body, ".post img")
51
52 txt = get_meme_txt(body, ".post h3 a")
53
54 response_handler "#{txt} #{img_src}"
55
56get_meme_image = (body, selector)->
57 $ = cheerio.load(body)
58 $(selector).first().attr('src')
59
60get_meme_txt = (body, selector)->
61 $ = cheerio.load(body)
62 ent.decode $(selector).first().text()