from bottle import request, app from bottle.ext import beaker from urllib import parse import time import datetime import re import json session_opts = { 'session.type': 'dbm', 'session.data_dir': './app_session/', 'session.auto': 1 } app = beaker.middleware.SessionMiddleware(app(), session_opts) def get_time(): now = time.localtime() date = "%04d-%02d-%02d %02d:%02d:%02d" % (now.tm_year, now.tm_mon, now.tm_mday, now.tm_hour, now.tm_min, now.tm_sec) return(date) def ip_check(): session = request.environ.get('beaker.session') try: if(session.get('Now') == 1): ip = format(session['DREAMER']) else: if(request.environ.get('HTTP_X_FORWARDED_FOR')): ip = request.environ.get('HTTP_X_FORWARDED_FOR') else: ip = request.environ.get('REMOTE_ADDR') except: ip = 'None' return(ip) def savemark(data): data = re.sub("\[date\(now\)\]", get_time(), data) if(not re.search("\.", ip_check())): name = '[[사용자:' + ip_check() + '|' + ip_check() + ']]' else: name = ip_check() data = re.sub("\[name\]", name, data) return(data) def macro(data): data = savemark(data) data = re.sub("\[anchor\((?P[^\[\]]*)\)\]", '', data) data = re.sub("\[nicovideo\((?P[^,)]*)(?:(?:,(?:[^,)]*))+)?\)\]", "[[http://embed.nicovideo.jp/watch/\g]]", data) data = re.sub('\[ruby\((?P[^\,]*)\,\s?(?P[^\)]*)\)\]', '\g(\g)', data) data = re.sub("\[br\]", '
', data) while(1): com = re.compile("\[youtube\(([^, )]*)(,[^)]*)?\)\]") m = com.search(data) if(m): src = '' width = '560' height = '315' time = '0' result = m.groups() if(result[0]): yudt = re.search('(?:\?v=(.*)|\/([^/?]*)|^([a-zA-Z0-9\-_]*))$', result[0]) if(yudt): if(yudt.groups()[0]): src = yudt.groups()[0] elif(yudt.groups()[1]): src = yudt.groups()[1] elif(yudt.groups()[2]): src = yudt.groups()[2] else: src = '' if(result[1]): mdata = re.search('width=([0-9%]*)', result[1]) if(mdata): width = mdata.groups()[0] mdata = re.search('height=([0-9%]*)', result[1]) if(mdata): height = mdata.groups()[0] mdata = re.search('start=([0-9]*)', result[1]) if(mdata): time = mdata.groups()[0] data = com.sub('
', data, 1) else: break now_time = get_time() data = re.sub('\[date\]', now_time, data) time_data = re.search('^([0-9]{4}-[0-9]{2}-[0-9]{2})', now_time) time = time_data.groups() age_data = re.findall('\[age\(([0-9]{4}-[0-9]{2}-[0-9]{2})\)\]', data) for age in age_data: old = datetime.datetime.strptime(time[0], '%Y-%m-%d') will = datetime.datetime.strptime(age, '%Y-%m-%d') e_data = old - will data = re.sub('\[age\(([0-9]{4})-([0-9]{2})-([0-9]{2})\)\]', str(int(int(e_data.days) / 365)), data, 1) dday_data = re.findall('\[dday\(([0-9]{4}-[0-9]{2}-[0-9]{2})\)\]', data) for dday in dday_data: old = datetime.datetime.strptime(time[0], '%Y-%m-%d') will = datetime.datetime.strptime(dday, '%Y-%m-%d') e_data = old - will if(re.search('^-', str(e_data.days))): e_day = str(e_data.days) else: e_day = '+' + str(e_data.days) data = re.sub('\[dday\(([0-9]{4}-[0-9]{2}-[0-9]{2})\)\]', e_day, data, 1) return(data)