2012年に人類が滅亡するらしいので、カウントダウンするTwitter BOTをつくった

1日に1回だけ、2012年12月22日人類が滅亡するその日までの日数を教えてくれます。


GAEでいくつかのBOTを稼働させていて、
その仕組みの中で動いているので、実質5行くらいしか書いていません。


元ネタ的なもの

Wikipedia - 2012年人類滅亡説


抜粋すぎるソース

import time
import datetime

from api.twitter import Twitter


class Metsubow:
    def __init__(self):
        self.twit = Twitter('id', 'password')
    
    
    def update(self):
        tim = time.localtime(time.time())
        d1 = datetime.date(tim.tm_year, tim.tm_mon, tim.tm_mday)
        d2 = datetime.date(2012, 12, 22)
        days = (d2 - d1).days
        
        msg = "人類が滅亡するまであと %s 日" % days
        
        self.twit.update(msg)
#/usr/bin/env python
# -*- coding: utf-8 -*-

import base64
import logging
import urllib
from django.utils import simplejson
from google.appengine.api import urlfetch


class Twitter:
    def __init__(self, username, password):
        base64string = base64.encodestring(u"%s:%s" % ( username, password))[:-1]
        self.auth_header = {
            "Authorization": u"Basic %s" % base64string,
            "Content-Type" : 'application/x-www-form-urlencoded',
            }
    
    
    def update(self, status = None, in_reply_to_status_id = None):
        data ={
            'status' : status,
            'in_reply_to_status_id' : in_reply_to_status_id,
            }
        return self.post('http://twitter.com/statuses/update.json', data)
    
        
    def post(self, url, data = {}):
        for k,v in data.items():
            if isinstance(v, unicode):
                data[k] = v.encode('utf-8')

        result = urlfetch.fetch(
            url = url,
            payload = urllib.urlencode(data),
            method = urlfetch.POST,
            headers = self.auth_header,
            )
        logging.debug("post = %s (%d)" % (url, result.status_code))
        if result.status_code == 200:
            return simplejson.loads(result.content)
        return []