class GoogleViews(): def __init__(self, interface_layer): self.image_sender = ImageSender(interface_layer) self.video_sender = VideoSender(interface_layer) self.yt_sender = YoutubeSender(interface_layer) self.url_print_sender = UrlPrintSender(interface_layer) self.routes = [ (".*https?:\/\/(?:www\.|m\.)?youtu(?:be.com\/watch\?v=|\.be/)(?P<video_id>[\w-]+)(&\S*)?$", self.send_yt_video), ("/s(earch)?\s(?P<term>[^$]+)$", self.google_search), ] def send_yt_video(self, message, match): self.yt_sender.send_by_url(jid=message.getFrom(), file_url=match.group("video_id")) def google_search(self, message, match): # if you can then help me to Recover this Google Search Feature req = requests.get( 'https://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=%s' % match.group("term")) #req = requests.get("http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=%s" % match.group("term")) page_url = urllib.unquote( req.json()["responseData"]["results"][0]["url"]) self.url_print_sender.send_by_url(jid=message.getFrom(), file_url=page_url)
class MediaViews(): def __init__(self, interface_layer): """ Creates the regex routes and callbacks to handle media messages """ self.image_sender = ImageSender(interface_layer) self.video_sender = VideoSender(interface_layer) self.url_print_sender = UrlPrintSender(interface_layer) self.tts_sender = EspeakTtsSender(interface_layer) self.routes = [ ("https?:\/\/(?:[\w\-]+\.)+[a-z]{2,6}(?:\/[^\/#?]+)+\.(?:jpe?g|gif|png)($|\?[^\s]+$)", self.send_image), ("https?:\/\/(?:[\w\-]+\.)+[a-z]{2,6}(?:\/[^\/#?]+)+\.(?:mp4|webm)($|\?[^\s]+$)", self.send_video), ("^!t(ts)?\s(?P<tts_text>[^$]+)$", self.send_tts) ] def send_video(self, message, match): self.video_sender.send_by_url(jid=message.getFrom(), file_url=message.getBody()) def send_image(self, message, match): self.image_sender.send_by_url(jid=message.getFrom(), file_url=message.getBody()) def send_url_print(self, message, match): url = message.getBody() self.url_print_sender.send_by_url(jid=message.getFrom(), file_url=url) def send_tts(self, message, match): tts_text = match.group("tts_text") self.tts_sender.send(jid=message.getFrom(), text=tts_text)
class MediaViews(): def __init__(self, interface_layer): """ Creates the regex routes and callbacks to handle media messages """ self.image_sender = ImageSender(interface_layer) self.video_sender = VideoSender(interface_layer) self.url_print_sender = UrlPrintSender(interface_layer) self.tts_sender = EspeakTtsSender(interface_layer) self.routes = [ ("https?:\/\/(?:[\w\-]+\.)+[a-z]{2,6}(?:\/[^\/#?]+)+\.(?:jpe?g|gif|png)($|\?[^\s]+$)", self.send_image), ("https?:\/\/(?:[\w\-]+\.)+[a-z]{2,6}(?:\/[^\/#?]+)+\.(?:mp4|webm)($|\?[^\s]+$)", self.send_video), ("https?:\/\/[^$]+$", self.send_url_print), ("^/t(ts)?\s(?P<tts_text>[^$]+)$", self.send_tts) ] def send_video(self, message, match): self.video_sender.send_by_url(jid=message.getFrom(), file_url=message.getBody()) def send_image(self, message, match): self.image_sender.send_by_url(jid=message.getFrom(), file_url=message.getBody()) def send_url_print(self, message, match): url = message.getBody() self.url_print_sender.send_by_url(jid=message.getFrom(), file_url=url) def send_tts(self, message, match): tts_text = match.group("tts_text") self.tts_sender.send(jid=message.getFrom(), text=tts_text)
class SuperViews(): def __init__(self, interface_layer): self.interface_layer = interface_layer self.url_print_sender = UrlPrintSender(self.interface_layer) self.routes = [ ("^/help", self.help), ("^/about", self.about), ("^/roll", self.roll), ("/(?P<evenOrOdd>even|odd)$", self.even_or_odd), ] def about(self, message=None, match=None, to=None): self.url_print_sender.send_by_url( message.getFrom(), "https://github.com/joaoricardo000/whatsapp-bot-seed", ABOUT_TEXT) def roll(self, message=None, match=None, to=None): return TextMessageProtocolEntity("[%d]" % random.randint(1, 6), to=message.getFrom()) def even_or_odd(self, message=None, match=None, to=None): is_odd = len(match.group("evenOrOdd")) % 2 num = random.randint(1, 10) if (is_odd and num % 2) or (not is_odd and not num % 2): return TextMessageProtocolEntity("[%d]\nYou win." % num, to=message.getFrom()) else: return TextMessageProtocolEntity("[%d]\nYou lose!" % num, to=message.getFrom()) def help(self, message=None, match=None, to=None): return TextMessageProtocolEntity(HELP_TEXT, to=message.getFrom())
class SuperViews(): def __init__(self, interface_layer): self.interface_layer = interface_layer self.url_print_sender = UrlPrintSender(self.interface_layer) self.routes = [ ("^/help", self.help), ("^/about", self.about), ("^/roll", self.roll), ("/(?P<evenOrOdd>even|odd)$", self.even_or_odd), ] def about(self, message=None, match=None, to=None): self.url_print_sender.send_by_url(message.getFrom(), ABOUT_TEXT) def roll(self, message=None, match=None, to=None): return TextMessageProtocolEntity("[%d]" % random.randint(1, 6), to=message.getFrom()) def even_or_odd(self, message=None, match=None, to=None): is_odd = len(match.group("evenOrOdd")) % 2 num = random.randint(1, 10) if (is_odd and num % 2) or (not is_odd and not num % 2): return TextMessageProtocolEntity("[%d]\nYou win." % num, to=message.getFrom()) else: return TextMessageProtocolEntity("[%d]\nYou lose!" % num, to=message.getFrom()) def help(self, message=None, match=None, to=None): return TextMessageProtocolEntity(HELP_TEXT, to=message.getFrom())
def __init__(self, interface_layer): self.yt_sender = YoutubeSender(interface_layer) self.url_print_sender = UrlPrintSender(interface_layer) self.routes = [ (".*https?:\/\/(?:www\.|m\.)?youtu(?:be.com\/watch\?v=|\.be/)(?P<video_id>[\w-]+)(&\S*)?$", self.send_yt_video), ("/b(usca)?\s(?P<term>[^$]+)$", self.google_search), ]
def __init__(self, interface_layer): self.interface_layer = interface_layer self.url_print_sender = UrlPrintSender(self.interface_layer) self.routes = [ ("^/help", self.help), ("^/about", self.about), ("^/roll", self.roll), ("/(?P<evenOrOdd>even|odd)$", self.even_or_odd), ]
def __init__(self, interface_layer): """ Creates the regex routes and callbacks to handle media messages """ self.image_sender = ImageSender(interface_layer) self.video_sender = VideoSender(interface_layer) self.url_print_sender = UrlPrintSender(interface_layer) self.tts_sender = EspeakTtsSender(interface_layer) self.routes = []
def __init__(self, interface_layer): """ Creates the regex routes and callbacks to handle media messages """ self.image_sender = ImageSender(interface_layer) self.video_sender = VideoSender(interface_layer) self.url_print_sender = UrlPrintSender(interface_layer) self.tts_sender = EspeakTtsSender(interface_layer) self.routes = [ ("https?:\/\/(?:[\w\-]+\.)+[a-z]{2,6}(?:\/[^\/#?]+)+\.(?:jpe?g|gif|png)($|\?[^\s]+$)", self.send_image), ("https?:\/\/(?:[\w\-]+\.)+[a-z]{2,6}(?:\/[^\/#?]+)+\.(?:mp4|webm)($|\?[^\s]+$)", self.send_video), ("https?:\/\/[^$]+$", self.send_url_print), ("^/g(ravar)?\s(?P<tts_text>[^$]+)$", self.send_tts) ]
def __init__(self, interface_layer): self.image_sender = ImageSender(interface_layer) self.video_sender = VideoSender(interface_layer) self.yt_sender = YoutubeSender(interface_layer) self.url_print_sender = UrlPrintSender(interface_layer) self.google_tts_sender = GoogleTtsSender(interface_layer) self.routes = [ (".*https?:\/\/(?:www\.|m\.)?youtu(?:be.com\/watch\?v=|\.be/)(?P<video_id>[\w-]+)(&\S*)?$", self.send_yt_video), ("/t(ts)?\s(?P<text>[^\[]{1,500})\s?\[?(?P<lang>[A-Za-z\-]{2,6})?\]?$", self.send_tts), ("/s(earch)?\s(?P<term>[^$]+)$", self.google_search), ("/i(mage)?\s(?P<term>[^$]+)$", self.google_image_search) ]
class GoogleViews(): def __init__(self, interface_layer): self.image_sender = ImageSender(interface_layer) self.video_sender = VideoSender(interface_layer) self.yt_sender = YoutubeSender(interface_layer) self.url_print_sender = UrlPrintSender(interface_layer) self.routes = [] def send_yt_video(self, message, match): self.yt_sender.send_by_url(jid=message.getFrom(), file_url=match.group("video_id")) def google_search(self, message, match): req = requests.get("http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=%s" % match.group("term")) page_url = urllib.unquote(req.json()["responseData"]["results"][0]["url"]) self.url_print_sender.send_by_url(jid=message.getFrom(), file_url=page_url)
def __init__(self, interface_layer): self.interface_layer = interface_layer self.url_print_sender = UrlPrintSender(self.interface_layer) self.routes = [ # ("/(?P<evenOrOdd>even|odd)$", self.even_or_odd), # ("^beban", self.beban_spell_checker) ]
class GoogleViews(): def __init__(self, interface_layer): self.yt_sender = YoutubeSender(interface_layer) self.url_print_sender = UrlPrintSender(interface_layer) self.routes = [ (".*https?:\/\/(?:www\.|m\.)?youtu(?:be.com\/watch\?v=|\.be/)(?P<video_id>[\w-]+)(&\S*)?$", self.send_yt_video), ("/b(usca)?\s(?P<term>[^$]+)$", self.google_search), ] def send_yt_video(self, message, match): self.yt_sender.send_by_url(jid=message.getFrom(), file_url=match.group("video_id")) def google_search(self, message, match): req = requests.get("http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=%s" % match.group("term")) page_url = urllib.unquote(req.json()["responseData"]["results"][0]["url"]) self.url_print_sender.send_by_url(jid=message.getFrom(), file_url=page_url)
class GoogleViews(): def __init__(self, interface_layer): self.image_sender = ImageSender(interface_layer) self.video_sender = VideoSender(interface_layer) self.yt_sender = YoutubeSender(interface_layer) self.url_print_sender = UrlPrintSender(interface_layer) self.google_tts_sender = GoogleTtsSender(interface_layer) self.routes = [ (".*https?:\/\/(?:www\.|m\.)?youtu(?:be.com\/watch\?v=|\.be/)(?P<video_id>[\w-]+)(&\S*)?$", self.send_yt_video), ("/t(ts)?\s(?P<text>[^\[]{1,500})\s?\[?(?P<lang>[A-Za-z\-]{2,6})?\]?$", self.send_tts), ("/s(earch)?\s(?P<term>[^$]+)$", self.google_search), ("/i(mage)?\s(?P<term>[^$]+)$", self.google_image_search) ] def send_yt_video(self, message, match): self.yt_sender.send_by_url(jid=message.getFrom(), file_url=match.group("video_id")) def send_tts(self, message, match): self.google_tts_sender.send(jid=message.getFrom(), text=match.group("text"), lang=match.group("lang")) def google_search(self, message, match): req = requests.get( "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=%s" % match.group("term")) page_url = urllib.unquote( req.json()["responseData"]["results"][0]["url"]) self.url_print_sender.send_by_url(jid=message.getFrom(), file_url=page_url) def google_image_search(self, message, match): req = requests.get( "http://ajax.googleapis.com/ajax/services/search/images?v=1.0&q=%s" % match.group("term")) image_url = urllib.unquote( req.json()["responseData"]["results"][0]["url"]) self.image_sender.send_by_url(jid=message.getFrom(), file_url=image_url)
def __init__(self, interface_layer): """ Creates the regex routes and callbacks to handle media messages """ self.image_sender = ImageSender(interface_layer) self.video_sender = VideoSender(interface_layer) self.url_print_sender = UrlPrintSender(interface_layer) self.routes = [ ("https?:\/\/(?:[\w\-]+\.)+[a-z]{2,6}(?:\/[^\/#?]+)+\.(?:jpe?g|gif|png)($|\?[^\s]+$)", self.send_image), ("https?:\/\/(?:[\w\-]+\.)+[a-z]{2,6}(?:\/[^\/#?]+)+\.(?:mp4|webm)($|\?[^\s]+$)", self.send_video), ("https?:\/\/[^$]+$", self.send_url_print), ]
def __init__(self, interface_layer): """ Creates the regex routes and callbacks to handle media messages """ self.interface_layer = interface_layer self.url_print_sender = UrlPrintSender(self.interface_layer) self.audio_sender = AudioSender(self.interface_layer) self.resource_path = os.path.join( os.path.dirname(os.path.realpath(__file__)), "./resources/") self.routes = [ ("^/folha", self.folha), ("^/ajuda", self.ajuda), ("^/g1", self.g1), ("^/ge", self.ge), ("^/rola", self.rola), ("^/gira", self.gira), ("^/s(erie)?(?P<serie>[abcd])\s*$", self.brasileirao), ("^/p(iada)?$", self.piada), ("^/(?P<im>im)?par\s*$", self.par), ] self.collection_losers = shelve.open("losers.data")
def __init__(self, interface_layer): """ Creates the regex routes and callbacks to handle media messages """ self.image_sender = ImageSender(interface_layer) self.video_sender = VideoSender(interface_layer) self.url_print_sender = UrlPrintSender(interface_layer) self.tts_sender = EspeakTtsSender(interface_layer) self.routes = [ ("https?:\/\/(?:[\w\-]+\.)+[a-z]{2,6}(?:\/[^\/#?]+)+\.(?:jpe?g|gif|png)($|\?[^\s]+$)", self.send_image), ("https?:\/\/(?:[\w\-]+\.)+[a-z]{2,6}(?:\/[^\/#?]+)+\.(?:mp4|webm)($|\?[^\s]+$)", self.send_video), # ("https?:\/\/[^$]+$", self.send_url_print), ("^/t(ts)?\s(?P<tts_text>[^$]+)$", self.send_tts) # ("/w(isdom)?\s([\"])(?P<top>[^\"$]+)\"\s([\"])(?P<bottom>[^$]+)([\"])", self.send_wisdom) ]
class MediaViews(): def __init__(self, interface_layer): """ Creates the regex routes and callbacks to handle media messages """ self.image_sender = ImageSender(interface_layer) self.video_sender = VideoSender(interface_layer) self.url_print_sender = UrlPrintSender(interface_layer) self.tts_sender = EspeakTtsSender(interface_layer) self.routes = [] def send_video(self, message, match): self.video_sender.send_by_url(jid=message.getFrom(), file_url=message.getBody()) def send_image(self, message, match): self.image_sender.send_by_url(jid=message.getFrom(), file_url=message.getBody()) def send_url_print(self, message, match): url = message.getBody() self.url_print_sender.send_by_url(jid=message.getFrom(), file_url=url) def send_tts(self, message, match): tts_text = match.group("tts_text") self.tts_sender.send(jid=message.getFrom(), text=tts_text)
def __init__(self, interface_layer): self.image_sender = ImageSender(interface_layer) self.video_sender = VideoSender(interface_layer) self.yt_sender = YoutubeSender(interface_layer) self.url_print_sender = UrlPrintSender(interface_layer) self.routes = []
def __init__(self, interface_layer): self.interface_layer = interface_layer self.url_print_sender = UrlPrintSender(self.interface_layer) self.routes = [ ("^/help", self.help), ]
class AwesomoViews(): def __init__(self, interface_layer): """ Creates the regex routes and callbacks to handle media messages """ self.interface_layer = interface_layer self.url_print_sender = UrlPrintSender(self.interface_layer) self.audio_sender = AudioSender(self.interface_layer) self.resource_path = os.path.join( os.path.dirname(os.path.realpath(__file__)), "./resources/") self.routes = [ ("^/folha", self.folha), ("^/ajuda", self.ajuda), ("^/g1", self.g1), ("^/ge", self.ge), ("^/rola", self.rola), ("^/gira", self.gira), ("^/s(erie)?(?P<serie>[abcd])\s*$", self.brasileirao), ("^/p(iada)?$", self.piada), ("^/(?P<im>im)?par\s*$", self.par), ] self.collection_losers = shelve.open("losers.data") def ajuda(self, message=None, match=None, to=None): return TextMessageProtocolEntity(HELP_TEXT, to=message.getFrom()) def rola(self, message=None, match=None, to=None): return TextMessageProtocolEntity("[%d]" % random.randint(1, 6), to=message.getFrom()) def gira(self, message=None, match=None, to=None): to = to or message.getFrom() self.audio_sender.send_by_path(to, self.resource_path + "audio/piao.mp3") return TextMessageProtocolEntity("Giraaandooo... [%d]" % random.randint(1, 6), to=to) def piada(self, message, match): return TextMessageProtocolEntity(piadas.get(), to=message.getFrom()) def par(self, message=None, match=None, to=None): is_odd = bool(match.group("im")) num = random.randint(1, 10) lost = (is_odd and num % 2) or (not is_odd and not num % 2) score = self._save_game(message.getFrom(), lost) response = "[%d] VocĂȘ %s\n\n%s\n%s" % ( num, "ganhou." if lost else "perdeu!", emoticon_lose * score[0], emoticon_notlose * score[1]) return TextMessageProtocolEntity(response, to=message.getFrom()) def _save_game(self, loser, lose=True): losing_history = self.collection_losers.get(loser, {True: 0, False: 0}) losing_history[lose] += 1 self.collection_losers[loser] = losing_history self.collection_losers.sync() return losing_history def g1(self, message=None, match=None, to=None): to = to or message.getFrom() self.url_print_sender.send_by_url(to, "http://g1.globo.com/") def folha(self, message=None, match=None, to=None): to = to or message.getFrom() self.url_print_sender.send_by_url(to, "http://www.folha.uol.com.br/") def ge(self, message=None, match=None, to=None): to = to or message.getFrom() self.url_print_sender.send_by_url(to, "http://globoesporte.globo.com/") def brasileirao(self, message=None, match=None, to=None): to = to or message.getFrom() serie = match.group("serie") self.url_print_sender.send_by_url( to, "http://globoesporte.globo.com/futebol/brasileirao-serie-%s/" % serie)