Example #1
0
def show_definition(request, tag, index=0):
    index = int(index)

    global more_results
    del more_results[:]
    try:
        # if index specified try to get the item at the index
        if index > 0:
            define = Define.objects.get(tag__iexact=tag, index=index)
            define_text = "%s[%i]: %s" % (tag, index, define.text)
            more_results.append(define_text)
        else:
            defines = Define.objects.filter(tag__iexact=tag).order_by('id')
            count = 1
            if len(defines) == 0:
                return IRCResponse(request.reply_recipient,
                                   "%s is not defined." % (tag))
            for define in defines:
                define_text = "%s[%i]: %s" % (tag, define.index, define.text)
                more_results.append(define_text)
                count += 1
        more_results.reverse()
        result = more_results.pop()
        return IRCResponse(request.reply_recipient, result)
    except:
        return IRCResponse(request.reply_recipient,
                           "%s[%i] is not defined." % (tag, index))
Example #2
0
def google(request, query):
    print "googling for %s " % query
    global more_results
    del more_results[:]

    query = urllib.urlencode({'q': query})
    url = 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&%s' % query
    search_results = urllib.urlopen(url)
    json = simplejson.loads(search_results.read())
    try:

        results = json['responseData']['results']

        for result in results:
            url = result['url']
            title = clean_html(result['title'])
            content = clean_html(result['content'])
            search_result = "%s - %s: %s" % (url, title, content)

            more_results.append(search_result)

        more_results.reverse()
        result = more_results.pop()
        return IRCResponse(request.reply_recipient, "%s" % result)
    except:
        return IRCResponse(request.reply_recipient, "No results were found.")
Example #3
0
File: bitcoin.py Project: kib/bot
def bitcoin(request):
    (c, n, m) = parse_request(request)

    r_usd = requests.get('http://data.mtgox.com/api/1/BTCUSD/ticker', timeout=2)
    if not r_usd.status_code == 200:
        return IRCResponse(c, 'Error fetching current bitcoin value from mtgox')
    r_eur = requests.get('http://data.mtgox.com/api/1/BTCEUR/ticker', timeout=2)
    if not r_eur.status_code == 200:
        return IRCResponse(c, 'Error fetching current bitcoin value from mtgox')


    usd_dec = r_usd.json()['return']
    eur_dec = r_eur.json()['return']

    info_dict = {
        'usd_last': usd_dec['last']['display'],
        'usd_high': usd_dec['high']['display'],
        'usd_low': usd_dec['low']['display'],
        'usd_vol': usd_dec['vol']['display'],
        'usd_avg': usd_dec['avg']['display'],
        'eur_last': eur_dec['last']['display'],
        'eur_high': eur_dec['high']['display'],
        'eur_low': eur_dec['low']['display'],
        'eur_vol': eur_dec['vol']['display'],
        'eur_avg': eur_dec['avg']['display'],
    }

    response = u'[ MtGox: {usd_last} / {eur_last} | H: {usd_high} / {eur_high} | L: {usd_low} / {eur_low} | V-USD: {usd_vol} V-EUR: {eur_vol} ]'.format(**info_dict)

    return IRCResponse(c, response)
Example #4
0
def get_weather(request, location):
    print "getting weather at %s " % location
    global more_results
    del more_results[:]

    try:
        station = Weather.location2station(location)
        weather = Weather.Station(station[0])
        weather.update(live=True)

        more_string = "Dew point: %s, Pressure: %s, Humidity: %i%%, Wind: %s " % (
            weather.data['dewpoint_string'], weather.data['pressure_string'],
            weather.data['relative_humidity'], weather.data['wind_string'])

        more_results.append(more_string)

        return IRCResponse(
            request.reply_recipient, "Weather at %s: %s %s %s " %
            (weather.data['city'], weather.data['weather'],
             weather.data['temperature_string'],
             weather.data['observation_time']))

    except:
        return IRCResponse(request.reply_recipient,
                           "Weather at %s is not found." % location)
Example #5
0
def search(request, search_str, nick=None):
    q = Q(tag__icontains=search_str) | Q(text__icontains=search_str)
    global more_results
    del more_results[:]
    try:
        if nick is not None:
            defines = Define.objects.filter(q, created_by=nick).order_by('id')
        else:
            defines = Define.objects.filter(q).order_by('id')
    except:
        return IRCResponse(request.reply_recipient, "No results found.")

    count = 0
    search_tags = "Tags: "
    for define in defines:
        count += 1
        define_text = "[%i/%i] %s[%i]: %s" % (count, len(defines), define.tag,
                                              define.index, define.text)
        if count > 1:
            search_tags += ", %s[%i]" % (define.tag, define.index)
        else:
            search_tags += "%s[%i]" % (define.tag, define.index)
        more_results.append(define_text)

    more_results.reverse()
    if count < 2:
        result = more_results.pop()
        return IRCResponse(request.reply_recipient, result)
    else:
        return IRCResponse(request.reply_recipient, search_tags)
Example #6
0
def more(request):
    global more_results
    if len(more_results) > 0:
        result = more_results.pop()
        return IRCResponse(request.reply_recipient, "%s" % (result))
    else:
        return IRCResponse(request.reply_recipient, "There is no more.")
Example #7
0
def video(request, site=None, url=None):
    url = fix_url(url)
    p_url = parse_video_url(url)
    (c, n, m) = parse_request(request)

    if not p_url:
        return IRCResponse(c, 'Could not parse video URL')

    (c, n, m) = parse_request(request)
    (site, v_id) = p_url
    if site is 'Y':
        yt_service = gdata.youtube.service.YouTubeService()
        entry = yt_service.GetYouTubeVideoEntry(video_id=v_id)
        title = entry.media.title.text
        duration = int(entry.media.duration.seconds)
        duration_s = str(datetime.timedelta(seconds=duration))
        view_count = entry.statistics.view_count
    else:
        discard()
    nsfw = True if 'nsfw' in m else False
    video_obj = Video.objects.create(dest_url=url,
                                     nsfw=nsfw,
                                     posted_channel=c,
                                     posted_by=n,
                                     message=m,
                                     site=site,
                                     video_id=v_id,
                                     title=title)
    return IRCResponse(c, 'Video: {0} [{1}]'.format(title, duration_s))
Example #8
0
def del_quote(request, quote_id):
    quote_id = int(quote_id)
    try:
        quote = Quote.objects.get(index=quote_id)
        quote.delete()
        return IRCResponse(request.reply_recipient,
                           "Quote %i deleted." % quote_id)
    except:
        return IRCResponse(request.reply_recipient, "Quote not found.")
Example #9
0
def get_quote(request, quote_id=0):
    quote_id = int(quote_id)
    try:
        if quote_id > 0:
            quote = Quote.objects.get(index=quote_id)
        else:
            quote = Quote.objects.order_by("?")[0]
        return IRCResponse(request.reply_recipient,
                           "[%i] %s" % (quote.index, quote.text))
    except:
        return IRCResponse(request.reply_recipient, "Quote not found.")
Example #10
0
    def test_multiple_response(self):
        responses = []
        responses.append(IRCResponse('emad', 'whoa nelly!'))
        responses.append(IRCResponse('#wut', 'APPLY TOPICALLY',
                                     method='TOPIC'))
        response = IRCResponse('', '', responses=responses, method='MULTIPLE')

        self.bot.sendLine('PRIVMSG emad :whoa nelly!')
        self.bot.sendLine('TOPIC #wut :APPLY TOPICALLY')
        self.mox.ReplayAll()
        self.bot.methods[response.method](response.recipient.encode('utf-8'),
                                          response.data.encode('utf-8'),
                                          responses=response.responses)
Example #11
0
def forget(request, tag, index=0):
    index = int(index)
    print "forgetting %s " % tag
    try:
        if index > 0:
            define = Define.objects.get(tag__iexact=tag, index=index)
        else:
            define = Define.objects.filter(tag__iexact=tag).order_by('id')[0]
            index = 1
        define.delete()
        return IRCResponse(request.reply_recipient,
                           "%s[%i] forgotten." % (tag, index))
    except:
        return IRCResponse(request.reply_recipient,
                           "%s[%i] is not defined." % (tag, index))
Example #12
0
File: civ5.py Project: kib/bot
def civ5(request):
    d = request.reply_recipient
    game_ids = ['10774', '10775']
    base_url = 'http://multiplayerrobot.com/Game#'
    response = ""
    for i in game_ids:
        data = requests.post(base_url + i, headers={'Content-Length': '0'})
        if data.status_code != 200:
            return IRCResponse(d, 'Unable to fetch game data')
        soup = BeautifulSoup(data.text)
        active_player = soup.find(class_='game-host').find(
            class_='avatar').attrs['title']
        turn_timer = soup.find(id='turn-timer-container').find('strong').string
        response += "Game {0}: Active player: {1}, turn ends: {2}\n".format(
            i, active_player, turn_timer)
    return IRCResponse(d, response)
Example #13
0
def who_set(request, tag, index=0):
    index = int(index)
    print "looking up %s [%i]" % (tag, index)
    try:
        if index > 0:
            define = Define.objects.get(tag__iexact=tag, index=index)
        else:
            define = Define.objects.filter(tag__iexact=tag).order_by('id')[0]
            index = 1

        return IRCResponse(
            request.reply_recipient, "%s[%i] is set by %s on %s." %
            (tag, define.index, define.created_by,
             define.created.strftime("%A, %d. %B %Y %I:%M%p")))
    except:
        return IRCResponse(request.reply_recipient,
                           "%s[%i] is not defined." % (tag, index))
Example #14
0
def add_quote(request, quote):
    try:
        last_quote = Quote.objects.all().order_by('index')[0]
        index = last_define.index + 1
    except:
        index = 1
    Quote.objects.create(text=quote, index=index, created_by=request.nick)
    return IRCResponse(request.reply_recipient, "Quote %i added." % index)
Example #15
0
def track(request, tracking_number):
    tracking_number = parse_terms(tracking_number)
    if re.match(r'(?i)1Z\w+?$', tracking_number):
        url = "http://wwwapps.ups.com/WebTracking/processInputRequest?sort_by=status&tracknums_displayed=1&TypeOfInquiryNumber=T&loc=en_US&InquiryNumber1=%s" % tracking_number
    elif count_digits(tracking_number) == 12 or count_digits(
            tracking_number) == 15:
        url = "http://www.fedex.com/Tracking?tracknumbers=%s" % tracking_number
    #elif re.match(r'8.+?',tracking_number):
    #    url = "http://track.dhl-usa.com/TrackByNbr.asp?ShipmentNumber=%s" % tracking_number
    #elif re.match(r'(?i)70.+?|03.+?|23.+?|EA.+?|RA.+?|CP.+?',tracking_number):
    elif count_digits(tracking_number) == 22:
        url = "http://trkcnfrm1.smi.usps.com/PTSInternetWeb/InterLabelInquiry.do?origTrackNum=%s" % tracking_number
    else:
        return IRCResponse(request.reply_recipient,
                           "Unknown tracking number format.")

    tinyurl = tiny_url(url)
    return IRCResponse(request.reply_recipient, "Tracking url: %s" % tinyurl)
Example #16
0
def dict(request, word):
    global more_results
    del more_results[:]
    try:
        my_dict = dictclient.Connection('dict.org')
        result = my_dict.define("wn", word)[0]
        result_str = ' '.join(result.getdefstr().split('\n'))
        result_list = re.split(r'(\d+:\D+)', result_str)
        for i in range(0, len(result_list)):
            if (i + 1) % 2 == 0:
                #definition = "%s defintion %i of %i: %s " % (word,(i+1)/2,len(result_list)/2,result_list[i])
                more_results.append(result_list[i])

        more_results.reverse()
        result = more_results.pop()

        return IRCResponse(request.reply_recipient, "%s" % result)
    except:
        return IRCResponse(request.reply_recipient,
                           "Could not lookup %s" % word)
Example #17
0
def learn(request, tag, definition):
    try:
        last_define = Define.objects.filter(
            tag__iexact=tag).order_by('index')[0]
        index = last_define.index + 1
    except:
        index = 1
    Define.objects.create(tag=tag,
                          text=definition,
                          index=index,
                          created_by=request.nick)
    return IRCResponse(request.reply_recipient,
                       "%s[%i] learned." % (tag, index))
Example #18
0
def literal(request, key='', **kwargs):
    factoid = get_object_or_404(Factoid,
                                fact__iexact=normalize_factoid_key(key))
    responses = factoid.factoidresponse_set.filter(disabled__exact=None)
    # XXX: This *really* needs to become a template.
    text = key
    verb = ''
    if factoid.protected:
        text += ' [LOCKED] '
    for response in responses.order_by('verb', 'created'):
        if response.verb != verb:
            verb = response.verb
            text += ' =%s= ' % verb
        else:
            text += '|'
        if response.tag:
            text += '<%s> ' % response.tag
        text += '%s' % response.text

    return IRCResponse(request.reply_recipient, text)
Example #19
0
def magic(request, query):

    print "magicing for %s " % query
    global more_results
    del more_results[:]

    query = urllib.urlencode({'q': query})
    url = "http://magiccards.info/query?%s" % query
    search_results = urllib.urlopen(url)

    soup = BeautifulSoup(search_results.read())
    cards = soup.findAll("table")

    for card in cards[3:]:
        try:
            title = card.contents[1].contents[3].contents[1].contents[
                1].contents[0]
            cost = card.contents[1].contents[3].contents[3].contents[0]
            text = ' '.join(
                card.contents[1].contents[3].contents[5].contents[0].findAll(
                    text=True))
            sets = card.contents[1].contents[5].contents[1].contents[
                13].contents[0]
            search_result = "%s - %s: %s - %s (%s)" % (title, cost, text, sets,
                                                       tiny_url(url))
            search_result = search_result.replace('\n', '').strip()
            more_results.append(search_result)
        except:
            next
    more_results.reverse()
    try:
        result = more_results.pop()
    except:
        result = "Card not found"

    return IRCResponse(request.reply_recipient, "%s" % result)
Example #20
0
def map(request, location):
    query = parse_terms(location)
    query = urllib.urlencode({'q': query})
    url = 'http://maps.google.com/?%s' % query
    tinyurl = tiny_url(url)
    return IRCResponse(request.reply_recipient, "%s" % tinyurl)
Example #21
0
File: hoi.py Project: kib/bot
def hoi(request):
    d = request.reply_recipient
    return IRCResponse(d, 'haai')
Example #22
0
File: utils.py Project: kib/bot
def discard():
    return IRCResponse(None, None, method='QUIET')
Example #23
0
def reimport(request, *args, **kwargs):
    return IRCResponse(request.reply_recipient,
                       'Reload successful.',
                       method='RESET')
Example #24
0
def image(request, url=None):
    url = fix_url(url)
    (c, n, m) = parse_request(request)
    nsfw = True if 'nsfw' in m.lower() else False
    img_obj = Image.objects.create(dest_url=url, nsfw=nsfw, posted_channel=c, posted_by=n, message=m)
    return IRCResponse('#test', 'added')