from func import * json_data = open('set.json').read() set_data = json.loads(json_data) conn = pymysql.connect(host = set_data['host'], user = set_data['user'], password = set_data['pw'], charset = 'utf8mb4') curs = conn.cursor(pymysql.cursors.DictCursor) def db_com(): return(conn.commit()) def db_get(): return(curs.fetchall()) db_ex = curs.execute db_pas = pymysql.escape_string db_ex("use " + set_data['db']) 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 html_pas(data, how): while(True): if(how == 1): y = re.search("<((a|div|span|embed|iframe)(?:\s[^>]*))>", data) else: y = re.search("<((a)(?:\s[^>]*))>", data) if(y): b = y.groups() if(re.search("<(\/" + b[1] + ")>", data)): xss_test = re.search('src=(?:"|\')(http(s)?:\/\/([^\/]*)\/(?:[^"\']*))(?:"|\')', b[0]) if(xss_test): check = xss_test.groups() if(check[2] == "www.youtube.com" or check[2] == "serviceapi.nmv.naver.com" or check[2] == "tv.kakao.com" or check[2] == "tvple.com"): a = b[0] else: a = re.sub('src=(?:"|\')([^"\']*)(?:"|\')', '', b[0]) else: a = b[0] a = re.sub('(?:"|\')', '#.#', a) try: if(not check[1] == None): data = re.sub("<((?:\/)?" + b[1] + "(?:\s[^>]*))>", "%shtml%" + a + "%ehtml%", data, 1) data = re.sub("<\/" + b[1] + ">", "%shtml%/" + b[1] + "%ehtml%", data, 1) else: data = re.sub("<((?:\/)?" + b[1] + "(?:\s[^>]*))>", "[[" + check[0] + "]]", data, 1) data = re.sub("<\/" + b[1] + ">", "", data, 1) except: data = re.sub("<((?:\/)?" + b[1] + "(?:\s[^>]*))>", "%shtml%" + a + "%ehtml%", data, 1) data = re.sub("<\/" + b[1] + ">", "%shtml%/" + b[1] + "%ehtml%", data, 1) else: data = re.sub("<((?:\/)?" + b[1] + "(?:\s[^>]*))>", '<' + b[0] + '>', data, 1) break else: break data = re.sub('<', '<', data) data = re.sub('>', '>', data) data = re.sub('"', '"', data) data = re.sub("%shtml%(?P(?:\/)?(?:a|div|span|embed|iframe)(?:\s[^%]*)?)%ehtml%", "<\g>", data) data = re.sub('#.#', '"', data) return(data) def mid_pas(data, fol_num, include): while(True): com = re.compile("{{{((?:(?!{{{)(?!}}}).)*)}}}", re.DOTALL) y = com.search(data) if(y): a = y.groups() big_a = re.compile("^\+([1-5])\s(.*)$", re.DOTALL) big = big_a.search(a[0]) small_a = re.compile("^\-([1-5])\s(.*)$", re.DOTALL) small = small_a.search(a[0]) color_a = re.compile("^(#[0-9a-f-A-F]{6})\s(.*)$", re.DOTALL) color = color_a.search(a[0]) color_b = re.compile("^(#[0-9a-f-A-F]{3})\s(.*)$", re.DOTALL) color_2 = color_b.search(a[0]) color_c = re.compile("^#(\w+)\s(.*)$", re.DOTALL) color_3 = color_c.search(a[0]) back_a = re.compile("^@([0-9a-f-A-F]{6})\s(.*)$", re.DOTALL) back = back_a.search(a[0]) back_b = re.compile("^@([0-9a-f-A-F]{3})\s(.*)$", re.DOTALL) back_2 = back_b.search(a[0]) back_c = re.compile("^@(\w+)\s(.*)$", re.DOTALL) back_3 = back_c.search(a[0]) include_out_a = re.compile("^#!noin\s(.*)$", re.DOTALL) include_out = include_out_a.search(a[0]) div_a = re.compile("^#!wiki\sstyle="((?:(?!"|\n).)*)"\n?\s\n(.*)$", re.DOTALL) div = div_a.search(a[0]) html_a = re.compile("^#!html\s(.*)$", re.DOTALL) html = html_a.search(a[0]) fol_a = re.compile("^#!folding\s((?:(?!\n).)*)\n?\s\n(.*)$", re.DOTALL) fol = fol_a.search(a[0]) if(big): result = big.groups() data = com.sub('' + result[1] + '', data, 1) elif(small): result = small.groups() data = com.sub('' + result[1] + '', data, 1) elif(color): result = color.groups() data = com.sub('' + result[1] + '', data, 1) elif(color_2): result = color_2.groups() data = com.sub('' + result[1] + '', data, 1) elif(color_3): result = color_3.groups() data = com.sub('' + result[1] + '', data, 1) elif(back): result = back.groups() data = com.sub('' + result[1] + '', data, 1) elif(back_2): result = back_2.groups() data = com.sub('' + result[1] + '', data, 1) elif(back_3): result = back_3.groups() data = com.sub('' + result[1] + '', data, 1) elif(div): result = div.groups() data = com.sub('
' + result[1] + '
', data, 1) elif(html): result = html.groups() data = com.sub(result[0], data, 1) elif(fol): result = fol.groups() data = com.sub("
" + result[0] + "
", data, 1) fol_num += 3 elif(html): result = html.groups() data = com.sub(result[0], data, 1) elif(include_out): if(include == True): data = com.sub("", data, 1) else: result = include_out.groups() data = com.sub(result[0], data, 1) else: data = com.sub('' + a[0] + '', data, 1) else: break while(True): com = re.compile("(((?!<\/code>).)*)<\/code>", re.DOTALL) y = com.search(data) if(y): a = y.groups() mid_data = re.sub("<\/span>", "}}}", a[0]) mid_data = re.sub("<\/div>", "}}}", mid_data) mid_data = re.sub('', "{{{+\g ", mid_data) mid_data = re.sub('', "{{{-\g ", mid_data) mid_data = re.sub('', "{{{#\g ", mid_data) mid_data = re.sub('', "{{{@\g ", mid_data) mid_data = re.sub('
', "{{{#!wiki style="\g"\n", mid_data) mid_data = re.sub("(?P.)", "\g", mid_data) data = com.sub(mid_data, data, 1) else: break data = re.sub("&lt;", "<", data) data = re.sub("&gt;", ">", data) return((data, fol_num)) def backlink_plus(name, link, backtype): db_ex("select title from back where title = '" + db_pas(link) + "' and link = '" + db_pas(name) + "' and type = '" + backtype + "'") y = db_get() if(not y): db_ex("insert into back (title, link, type) value ('" + db_pas(link) + "', '" + db_pas(name) + "', '" + backtype + "')") db_com() def cat_plus(name, link): db_ex("select title from cat where title = '" + db_pas(link) + "' and cat = '" + db_pas(name) + "'") y = db_get() if(not y): db_ex("insert into cat (title, cat) value ('" + db_pas(link) + "', '" + db_pas(name) + "')") db_com() def namumark(title, data): data = html_pas(data, 1) b = 0 a = mid_pas(data, b, False) data = a[0] b = a[1] data = re.sub("\[anchor\((?P[^\[\]]*)\)\]", '', data) data = savemark(data) i = 1 while(True): m = re.search("\n((?:(?:#\s?(?:[^\n]*))\n?)+)", data) if(m): result = m.groups() test = result[0] while(True): if(re.search("(?:#\s?(?:[^\n]*))", test)): test = re.sub("(?:#\s?(?P[^\n]*))", str(i) + ". \g", test, 1) else: break i += 1 data = re.sub("\n((?:(?:#\s?(?:[^\n]*))\n?)+)", '\n' + test, data, 1) i = 1 else: break while(True): m = re.search("\[include\(((?:(?!\)\]|,).)*)((?:,\s?(?:[^)]*))+)?\)\]", data) if(m): results = m.groups() if(results[0] == title): data = re.sub("\[include\(((?:(?!\)\]|,).)*)((?:,\s?(?:[^)]*))+)?\)\]", "" + results[0] + "", data, 1) else: db_ex("select * from data where title = '" + db_pas(results[0]) + "'") in_con = db_get() backlink_plus(title, results[0], 'include') if(in_con): in_data = in_con[0]['data'] in_data = re.sub("\[include\(((?:(?!\)\]|,).)*)((?:,\s?(?:[^)]*))+)?\)\]", "", in_data) in_data = html_pas(in_data, 1) in_data = mid_pas(in_data, b, True)[0] if(results[1]): a = results[1] while(True): g = re.search("([^= ,]*)\=([^,]*)", a) if(g): result = g.groups() in_data = re.sub("@" + result[0] + "@", result[1], in_data) a = re.sub("([^= ,]*)\=([^,]*)", "", a, 1) else: break data = re.sub("\[include\(((?:(?!\)\]|,).)*)((?:,\s?(?:[^)]*))+)?\)\]", '\n#nobr#
' + in_data + '
\n#nobr#', data, 1) else: data = re.sub("\[include\(((?:(?!\)\]|,).)*)((?:,\s?(?:[^)]*))+)?\)\]", "" + results[0] + "", data, 1) else: break while(True): m = re.search('^#(?:redirect|넘겨주기)\s([^\n]*)', data) if(m): results = m.groups() aa = re.search("^(.*)(#(?:.*))$", results[0]) if(aa): results = aa.groups() data = re.sub('^#(?:redirect|넘겨주기)\s([^\n]*)', '', data, 1) else: data = re.sub('^#(?:redirect|넘겨주기)\s([^\n]*)', '', data, 1) backlink_plus(title, results[0], 'redirect') else: break data = '\n' + data + '\n' data = re.sub("\[nicovideo\((?P[^,)]*)(?:(?:,(?:[^,)]*))+)?\)\]", "[[http://embed.nicovideo.jp/watch/\g]]", data) while(True): m = re.search("\n>\s?((?:[^\n]*)(?:(?:(?:(?:\n>\s?)(?:[^\n]*))+)?))", data) if(m): result = m.groups() blockquote = result[0] blockquote = re.sub("\n>\s?", "\n", blockquote) data = re.sub("\n>\s?((?:[^\n]*)(?:(?:(?:(?:\n>\s?)(?:[^\n]*))+)?))", "\n
" + blockquote + "
", data, 1) else: break if(not re.search('\[목차\]', data)): if(not re.search('\[목차\(없음\)\]', data)): data = re.sub("(?P(={1,6})\s?([^=]*)\s?(?:={1,6})(?:\s+)?\n)", "[목차]\n\g", data, 1) else: data = re.sub("\[목차\(없음\)\]", "", data) data = re.sub("(\n)(?P\r\n(={1,6})\s?([^=]*)\s?(?:={1,6})(?:\s+)?\n)", "\g", data) i = [0, 0, 0, 0, 0, 0, 0] last = 0 span = '' rtoc = '
목차

' while(True): i[0] += 1 m = re.search('(={1,6})\s?([^=]*)\s?(?:={1,6})(?:\s+)?\n', data) if(m): result = m.groups() wiki = len(result[0]) if(last < wiki): last = wiki else: last = wiki if(wiki == 1): i[2] = 0 i[3] = 0 i[4] = 0 i[5] = 0 i[6] = 0 elif(wiki == 2): i[3] = 0 i[4] = 0 i[5] = 0 i[6] = 0 elif(wiki == 3): i[4] = 0 i[5] = 0 i[6] = 0 elif(wiki == 4): i[5] = 0 i[6] = 0 elif(wiki == 5): i[6] = 0 if(wiki == 1): i[1] += 1 elif(wiki == 2): i[2] += 1 elif(wiki == 3): i[3] += 1 elif(wiki == 4): i[4] += 1 elif(wiki == 5): i[5] += 1 else: i[6] += 1 toc = str(i[1]) + '.' + str(i[2]) + '.' + str(i[3]) + '.' + str(i[4]) + '.' + str(i[5]) + '.' + str(i[6]) + '.' toc = re.sub("(?P[0-9]0(?:[0]*)?)\.", '\g#.', toc) toc = re.sub("0\.", '', toc) toc = re.sub("#\.", '.', toc) toc = re.sub("\.$", '', toc) test = re.search('([0-9]*)(\.([0-9]*))?(\.([0-9]*))?(\.([0-9]*))?(\.([0-9]*))?', toc) if(test): g = test.groups() if(g[4]): span = '' * 4 elif(g[3]): span = '' * 3 elif(g[2]): span = '' * 2 elif(g[1]): span = '' else: span = '' rtoc = rtoc + span + '' + toc + '. ' + result[1] + '
' c = re.sub(" $", "", result[1]) d = c c = re.sub("\[\[(([^|]*)\|)?(?P[^\]]*)\]\]", "\g", c) data = re.sub('(={1,6})\s?([^=]*)\s?(?:={1,6})(?:\s+)?\n', '' + toc + '. ' + d + ' [편집]', data, 1); else: rtoc += '
' break data = re.sub("\[목차\]", rtoc, data) category = '' while(True): m = re.search("\[\[(분류:(?:(?:(?!\]\]).)*))\]\]", data) if(m): g = m.groups() if(not title == g[0]): cat_plus(title, g[0]) if(category == ''): db_ex("select title from data where title = '" + db_pas(g[0]) + "'") exists = db_get() if(exists): red = "" else: red = 'class="not_thing"' category = category + '' + re.sub("분류:", "", g[0]) + '' else: db_ex("select title from data where title = '" + db_pas(g[0]) + "'") exists = db_get() if(exists): red = "" else: red = 'class="not_thing"' category = category + ' / ' + '' + re.sub("분류:", "", g[0]) + '' data = re.sub("\[\[(분류:(?:(?:(?!\]\]).)*))\]\]", '', data, 1) else: break data = re.sub("'''(?P.+?)'''(?!')", '\g', data) data = re.sub("''(?P.+?)''(?!')", '\g', data) data = re.sub('~~(?P.+?)~~(?!~)', '\g', data) data = re.sub('--(?P.+?)--(?!-)', '\g', data) data = re.sub('__(?P.+?)__(?!_)', '\g', data) data = re.sub('\^\^(?P.+?)\^\^(?!\^)', '\g', data) data = re.sub(',,(?P.+?),,(?!,)', '\g', data) data = re.sub('<math>(?P((?!<math>).)*)<\/math>', '$\g$', data) data = re.sub('{{\|(?P(?:(?:(?:(?!\|}}).)*)(?:\n?))+)\|}}', '
\g
', data) data = re.sub('\[ruby\((?P[^\|]*)\|(?P[^\)]*)\)\]', '\g(\g)', data) data = re.sub("##\s?(?P[^\n]*)\n", "
\g
", data) while(True): m = re.search("\[\[파일:((?:(?!\]\]|\|).)*)(?:\|((?:(?!\]\]).)*))?\]\]", data) if(m): c = m.groups() if(c): if(not re.search("^파일:([^\n]*)", title)): backlink_plus(title, '파일:' + c[0], 'file') if(c[1]): n = re.search("width=([^ \n&]*)", c[1]) e = re.search("height=([^ \n&]*)", c[1]) if(n): a = n.groups() width = a[0] else: width = '' if(e): b = e.groups() height = b[0] else: height = '' try: extension = re.search("^(.+)(\.(?:[Jj][Pp][Gg]|[Gg][Ii][Ff]|[Jj][Pp][Ee][Gg]|[Pp][Nn][Gg]))$", c[0]).groups() img = re.sub("\.(?P[Jj][Pp][Gg]|[Pp][Nn][Gg]|[Gg][Ii][Ff]|[Jj][Pp][Ee][Gg])", "#\g#", extension[1]) data = re.sub("\[\[파일:((?:(?!\]\]|\?).)*)(?:\?((?:(?!\]\]).)*))?\]\]", '', data, 1) except: data = re.sub("\[\[파일:((?:(?!\]\]|\?).)*)(?:\?((?:(?!\]\]).)*))?\]\]", 'Error', data, 1) else: try: extension = re.search("^(.+)(\.(?:[Jj][Pp][Gg]|[Gg][Ii][Ff]|[Jj][Pp][Ee][Gg]|[Pp][Nn][Gg]))$", c[0]).groups() img = re.sub("\.(?P[Jj][Pp][Gg]|[Pp][Nn][Gg]|[Gg][Ii][Ff]|[Jj][Pp][Ee][Gg])", "#\g#", extension[1]) data = re.sub("\[\[파일:((?:(?!\]\]|\?).)*)(?:\?((?:(?!\]\]).)*))?\]\]", "", data, 1) except: data = re.sub("\[\[파일:((?:(?!\]\]|\?).)*)(?:\?((?:(?!\]\]).)*))?\]\]", 'Error', data, 1) else: break else: break data = re.sub("\[br\]",'
', data) while(True): com = re.compile("\[youtube\((?:https:\/\/www\.youtube\.com\/watch\?v=|https:\/\/youtu\.be\/)?((?:(?!,|\)\]).)*)(?:,(?:\s)?)?(?:width=((?:(?!,|\)\]).)*))?(?:,(?:\s)?)?(?:height=((?:(?!,|\)\]).)*))?\)\]") m = com.search(data) if(m): result = m.groups() if(result[1]): if(result[2]): width = result[1] height = result[2] else: width = result[1] height = '315' elif(result[2]): height = result[2] width = '560' else: width = '560' height = '315' data = com.sub('
', data, 1) else: break data = re.sub("\[\[(?::(?P(?:분류|파일):(?:(?:(?!\]\]).)*)))\]\]", "[[\g]]", data) while(True): m = re.search("\[\[(((?!\]\]).)*)\]\]", data) if(m): result = m.groups() a = re.search("((?:(?!\|).)*)\|(.*)", result[0]) if(a): results = a.groups() aa = re.search("^(.*)(#(?:.*))$", results[0]) if(aa): g = results[1] results = aa.groups() b = re.search("^http(?:s)?:\/\/", results[0]) if(b): data = re.sub('\[\[(((?!\]\]).)*)\]\]', '' + g + '', data, 1) else: if(results[0] == title): data = re.sub('\[\[(((?!\]\]).)*)\]\]', '' + g + '', data, 1) else: db_ex("select title from data where title = '" + db_pas(results[0]) + "'") y = db_get() if(y): clas = '' else: clas = 'not_thing' data = re.sub('\[\[(((?!\]\]).)*)\]\]', '' + g + '', data, 1) backlink_plus(title, results[0], '') else: b = re.search("^http(?:s)?:\/\/", results[0]) if(b): c = re.search("(?:\.[Jj][Pp][Gg]|\.[Pp][Nn][Gg]|\.[Gg][Ii][Ff]|\.[Jj][Pp][Ee][Gg])", results[0]) if(c): img = results[0] img = re.sub("\.(?P[Jj][Pp][Gg]|[Pp][Nn][Gg]|[Gg][Ii][Ff]|[Jj][Pp][Ee][Gg])", "#\g#", img) data = re.sub('\[\[(((?!\]\]).)*)\]\]', '' + results[1] + '', data, 1) else: data = re.sub('\[\[(((?!\]\]).)*)\]\]', '' + results[1] + '', data, 1) else: if(results[0] == title): data = re.sub('\[\[(((?!\]\]).)*)\]\]', '' + results[1] + '', data, 1) else: db_ex("select title from data where title = '" + db_pas(results[0]) + "'") y = db_get() if(y): clas = '' else: clas = 'not_thing' data = re.sub('\[\[(((?!\]\]).)*)\]\]', '' + results[1] + '', data, 1) backlink_plus(title, results[0], '') else: aa = re.search("^(.*)(#(?:.*))$", result[0]) if(aa): result = aa.groups() b = re.search("^http(?:s)?:\/\/", result[0]) if(b): data = re.sub('\[\[(((?!\]\]).)*)\]\]', '' + result[0] + result[1] + '', data, 1) else: if(result[0] == title): data = re.sub('\[\[(((?!\]\]).)*)\]\]', '' + result[0] + result[1] + '', data, 1) else: db_ex("select title from data where title = '" + db_pas(result[0]) + "'") y = db_get() if(y): clas = '' else: clas = 'not_thing' data = re.sub('\[\[(((?!\]\]).)*)\]\]', '' + result[0] + result[1] + '', data, 1) backlink_plus(title, result[0], '') else: b = re.search("^http(?:s)?:\/\/", result[0]) if(b): c = re.search("(?:\.[Jj][Pp][Gg]|\.[Pp][Nn][Gg]|\.[Gg][Ii][Ff]|\.[Jj][Pp][Ee][Gg])", result[0]) if(c): img = result[0] img = re.sub("\.(?P[Jj][Pp][Gg]|[Pp][Nn][Gg]|[Gg][Ii][Ff]|[Jj][Pp][Ee][Gg])", "#\g#", img) data = re.sub('\[\[(((?!\]\]).)*)\]\]', '' + img + '', data, 1) else: data = re.sub('\[\[(((?!\]\]).)*)\]\]', '' + result[0] + '', data, 1) else: if(result[0] == title): data = re.sub('\[\[(((?!\]\]).)*)\]\]', '' + result[0] + '', data, 1) else: db_ex("select title from data where title = '" + db_pas(result[0]) + "'") y = db_get() if(y): clas = '' else: clas = 'not_thing' data = re.sub('\[\[(((?!\]\]).)*)\]\]', '' + result[0] + '', data, 1) backlink_plus(title, result[0], '') else: break while(True): com = re.compile("(http(?:s)?:\/\/(?:(?:(?:(?!\.[Jj][Pp][Gg]|\.[Pp][Nn][Gg]|\.[Gg][Ii][Ff]|\.[Jj][Pp][Ee][Gg]|#[Jj][Pp][Gg]#|#[Pp][Nn][Gg]#|#[Gg][Ii][Ff]#|#[Jj][Pp][Ee][Gg]#|<\/(?:[^>]*)>).)*)(?:\.[Jj][Pp][Gg]|\.[Pp][Nn][Gg]|\.[Gg][Ii][Ff]|\.[Jj][Pp][Ee][Gg])))(?:(?:(?:\?)width=((?:[0-9]*)(?:px|%)?))?(?:(?:\?|&)height=((?:[0-9]*)(?:px|%)?))?)") m = com.search(data) if(m): result = m.groups() if(result[1]): if(result[2]): width = result[1] height = result[2] else: width = result[1] height = '' elif(result[2]): height = result[2] width = '' else: width = '' height = '' c = result[0] c = re.sub("\.(?P[Jj][Pp][Gg]|[Pp][Nn][Gg]|[Gg][Ii][Ff]|[Jj][Pp][Ee][Gg])", "#\g#", c) data = com.sub("", data, 1) else: break while(True): m = re.search("((?:(?:( +)\*\s(?:[^\n]*))\n?)+)", data) if(m): result = m.groups() end = str(result[0]) while(True): isspace = re.search("( +)\*\s([^\n]*)", end) if(isspace): spacebar = isspace.groups() up = len(spacebar[0]) * 20 end = re.sub("( +)\*\s([^\n]*)", "
  • " + spacebar[1] + "
  • ", end, 1) else: break end = re.sub("\n", '', end) data = re.sub("(?:(?:(?:( +)\*\s([^\n]*))\n?)+)", '
      ' + end + '
    ', data, 1) else: break data = re.sub('\[date\]', get_time(), data) data = re.sub("#(?P[Jj][Pp][Gg]|[Pp][Nn][Gg]|[Gg][Ii][Ff]|[Jj][Pp][Ee][Gg])#", ".\g", data) data = re.sub("-{4,11}", "
    ", data) while(True): b = re.search("(<\/h[0-9]>|\n)( +)", data) if(b): result = b.groups() up = re.sub(' ', '', result[1]) if(re.search('<\/h[0-9]>', result[0])): data = re.sub("(?P\/h[0-9]>)( +)", '\g' + up, data, 1) else: data = re.sub("(?:\n)( +)", '
    ' + up, data, 1) else: break a = 1 tou = "

    " namu = [] while(True): b = re.search("\[\*([^\s]*)(?:\s(((?!\]).)*))?\]", data) if(b): results = b.groups() if(not results[1] and results[0]): i = 0 while(True): try: if(namu[i] == results[0]): none_this = False break else: i += 2 except: none_this = True break if(none_this == False): data = re.sub("\[\*([^\s]*)(?:\s(((?!\]).)*))?\]", "[" + results[0] + "]", data, 1) else: data = re.sub("\[\*([^\s]*)(?:\s(((?!\]).)*))?\]", "[" + results[0] + "]", data, 1) elif(results[0]): namu += [results[0]] namu += [results[1]] c = results[1] c = re.sub("<(?:[^>]*)>", '', c) tou += "[" + results[0] + "] " + results[1] + "
    " data = re.sub("\[\*([^\s]*)(?:\s(((?!\]).)*))?\]", "[" + results[0] + "]", data, 1) a += 1 else: c = results[1] c = re.sub("<(?:[^>]*)>", '', c) tou += "[" + str(a) + "] " + results[1] + "
    " data = re.sub("\[\*([^\s]*)(?:\s(((?!\]).)*))?\]", '[' + str(a) + ']', data, 1) else: tou += '
    ' if(tou == "

    "): tou = "" break data = re.sub("\[각주\](?:(?:
    | |\r|\n)+)?$", "", data) data = re.sub("(?:(?:
    | |\r|\n)+)$", "", data) data = re.sub("\[각주\]", "
    " + tou, data) data += tou if(category): data += '
    분류: ' + category + '
    ' data = re.sub("(?:\|\|\r\n)", "#table#", data) while(True): y = re.search("(\|\|(?:(?:(?:(?:(?!\|\|).)*)(?:\n?))+))", data) if(y): a = y.groups() mid_data = re.sub("\|\|", "#table#", a[0]) mid_data = re.sub("\r\n", "
    ", mid_data) data = re.sub("(\|\|((?:(?:(?:(?!\|\|).)*)(?:\n?))+))", mid_data, data, 1) else: break data = re.sub("#table#", "||", data) data = re.sub("
    ", "\r\n", data) while(True): m = re.search("(\|\|(?:(?:(?:.*)\n?)\|\|)+)", data) if(m): results = m.groups() table = results[0] while(True): a = re.search("^(\|\|(?:(?:\|\|)+)?)((?:<(?:(?:(?!>).)*)>)+)?", table) if(a): row = '' cel = '' celstyle = '' rowstyle = '' alltable = '' result = a.groups() if(result[1]): alltable = 'style="' celstyle = 'style="' rowstyle = 'style="' q = re.search("<table\s?width=((?:(?!>).)*)>", result[1]) w = re.search("<table\s?height=((?:(?!>).)*)>", result[1]) e = re.search("<table\s?align=((?:(?!>).)*)>", result[1]) if(q): resultss = q.groups() alltable += 'width:' + resultss[0] + ';' if(w): resultss = w.groups() alltable += 'height:' + resultss[0] + ';' if(e): resultss = e.groups() if(resultss[0] == 'right'): alltable += 'margin-left:auto;' elif(resultss[0] == 'center'): alltable += 'margin:auto;' else: alltable += 'margin-right:auto;' ee = re.search("<table\s?textalign=((?:(?!>).)*)>", result[1]) if(ee): resultss = ee.groups() if(resultss[0] == 'right'): alltable += 'text-align:right;' elif(resultss[0] == 'center'): alltable += 'text-align:center;' else: alltable += 'text-align:left;' r = re.search("<-((?:(?!>).)*)>", result[1]) if(r): resultss = r.groups() cel = 'colspan="' + resultss[0] + '"' else: cel = 'colspan="' + str(round(len(result[0]) / 2)) + '"' t = re.search("<\|((?:(?!>).)*)>", result[1]) if(t): resultss = t.groups() row = 'rowspan="' + resultss[0] + '"' ba = re.search("<rowbgcolor=(#[0-9a-f-A-F]{6})>", result[1]) bb = re.search("<rowbgcolor=(#[0-9a-f-A-F]{3})>", result[1]) bc = re.search("<rowbgcolor=(\w+)>", result[1]) if(ba): resultss = ba.groups() rowstyle += 'background:' + resultss[0] + ';' elif(bb): resultss = bb.groups() rowstyle += 'background:' + resultss[0] + ';' elif(bc): resultss = bc.groups() rowstyle += 'background:' + resultss[0] + ';' z = re.search("<table\s?bordercolor=(#[0-9a-f-A-F]{6})>", result[1]) x = re.search("<table\s?bordercolor=(#[0-9a-f-A-F]{3})>", result[1]) c = re.search("<table\s?bordercolor=(\w+)>", result[1]) if(z): resultss = z.groups() alltable += 'border:' + resultss[0] + ' 2px solid;' elif(x): resultss = x.groups() alltable += 'border:' + resultss[0] + ' 2px solid;' elif(c): resultss = c.groups() alltable += 'border:' + resultss[0] + ' 2px solid;' aq = re.search("<table\s?bgcolor=(#[0-9a-f-A-F]{6})>", result[1]) aw = re.search("<table\s?bgcolor=(#[0-9a-f-A-F]{3})>", result[1]) ae = re.search("<table\s?bgcolor=(\w+)>", result[1]) if(aq): resultss = aq.groups() alltable += 'background:' + resultss[0] + ';' elif(aw): resultss = aw.groups() alltable += 'background:' + resultss[0] + ';' elif(ae): resultss = ae.groups() alltable += 'background:' + resultss[0] + ';' j = re.search("<bgcolor=(#[0-9a-f-A-F]{6})>", result[1]) k = re.search("<bgcolor=(#[0-9a-f-A-F]{3})>", result[1]) l = re.search("<bgcolor=(\w+)>", result[1]) if(j): resultss = j.groups() celstyle += 'background:' + resultss[0] + ';' elif(k): resultss = k.groups() celstyle += 'background:' + resultss[0] + ';' elif(l): resultss = l.groups() celstyle += 'background:' + resultss[0] + ';' aa = re.search("<(#[0-9a-f-A-F]{6})>", result[1]) ab = re.search("<(#[0-9a-f-A-F]{3})>", result[1]) ac = re.search("<(\w+)>", result[1]) if(aa): resultss = aa.groups() celstyle += 'background:' + resultss[0] + ';' elif(ab): resultss = ab.groups() celstyle += 'background:' + resultss[0] + ';' elif(ac): resultss = ac.groups() celstyle += 'background:' + resultss[0] + ';' qa = re.search("<width=((?:(?!>).)*)>", result[1]) qb = re.search("<height=((?:(?!>).)*)>", result[1]) if(qa): resultss = qa.groups() celstyle += 'width:' + resultss[0] + ';' if(qb): resultss = qb.groups() celstyle += 'height:' + resultss[0] + ';' i = re.search("<\)>", result[1]) o = re.search("<:>", result[1]) p = re.search("<\(>", result[1]) if(i): celstyle += 'text-align:right;' elif(o): celstyle += 'text-align:center;' elif(p): celstyle += 'text-align:left;' alltable += '"' celstyle += '"' rowstyle += '"' table = re.sub("^(\|\|(?:(?:\|\|)+)?)((?:<(?:(?:(?!>).)*)>)+)?", "
    ", table, 1) else: cel = 'colspan="' + str(round(len(result[0]) / 2)) + '"' table = re.sub("^(\|\|(?:(?:\|\|)+)?)((?:<(?:(?:(?!>).)*)>)+)?", "
    ", table, 1) else: break table = re.sub("\|\|$", "
    ", table) while(True): b = re.search("\|\|\r\n(\|\|(?:(?:\|\|)+)?)((?:<(?:(?:(?!>).)*)>)+)?", table) if(b): row = '' cel = '' celstyle = '' rowstyle = '' result = b.groups() if(result[1]): celstyle = 'style="' rowstyle = 'style="' r = re.search("<-((?:(?!>).)*)>", result[1]) if(r): resultss = r.groups() cel = 'colspan="' + resultss[0] + '"' else: cel = 'colspan="' + str(round(len(result[0]) / 2)) + '"' t = re.search("<\|((?:(?!>).)*)>", result[1]) if(t): resultss = t.groups() row = 'rowspan="' + resultss[0] + '"' ba = re.search("<rowbgcolor=(#[0-9a-f-A-F]{6})>", result[1]) bb = re.search("<rowbgcolor=(#[0-9a-f-A-F]{3})>", result[1]) bc = re.search("<rowbgcolor=(\w+)>", result[1]) if(ba): resultss = ba.groups() rowstyle = rowstyle + 'background:' + resultss[0] + ';' elif(bb): resultss = bb.groups() rowstyle = rowstyle + 'background:' + resultss[0] + ';' elif(bc): resultss = bc.groups() rowstyle = rowstyle + 'background:' + resultss[0] + ';' j = re.search("<bgcolor=(#[0-9a-f-A-F]{6})>", result[1]) k = re.search("<bgcolor=(#[0-9a-f-A-F]{3})>", result[1]) l = re.search("<bgcolor=(\w+)>", result[1]) if(j): resultss = j.groups() celstyle = celstyle + 'background:' + resultss[0] + ';' elif(k): resultss = k.groups() celstyle = celstyle + 'background:' + resultss[0] + ';' elif(l): resultss = l.groups() celstyle = celstyle + 'background:' + resultss[0] + ';' aa = re.search("<(#[0-9a-f-A-F]{6})>", result[1]) ab = re.search("<(#[0-9a-f-A-F]{3})>", result[1]) ac = re.search("<(\w+)>", result[1]) if(aa): resultss = aa.groups() celstyle = celstyle + 'background:' + resultss[0] + ';' elif(ab): resultss = ab.groups() celstyle = celstyle + 'background:' + resultss[0] + ';' elif(ac): resultss = ac.groups() celstyle = celstyle + 'background:' + resultss[0] + ';' qa = re.search("<width=((?:(?!>).)*)>", result[1]) qb = re.search("<height=((?:(?!>).)*)>", result[1]) if(qa): resultss = qa.groups() celstyle = celstyle + 'width:' + resultss[0] + ';' if(qb): resultss = qb.groups() celstyle = celstyle + 'height:' + resultss[0] + ';' i = re.search("<\)>", result[1]) o = re.search("<:>", result[1]) p = re.search("<\(>", result[1]) if(i): celstyle = celstyle + 'text-align:right;' elif(o): celstyle = celstyle + 'text-align:center;' elif(p): celstyle = celstyle + 'text-align:left;' celstyle = celstyle + '"' rowstyle = rowstyle + '"' table = re.sub("\|\|\r\n(\|\|(?:(?:\|\|)+)?)((?:<(?:(?:(?!>).)*)>)+)?", "
    ", table, 1) else: cel = 'colspan="' + str(round(len(result[0]) / 2)) + '"' table = re.sub("\|\|\r\n(\|\|(?:(?:\|\|)+)?)((?:<(?:(?:(?!>).)*)>)+)?", "
    ", table, 1) else: break while(True): c = re.search("(\|\|(?:(?:\|\|)+)?)((?:<(?:(?:(?!>).)*)>)+)?", table) if(c): row = '' cel = '' celstyle = '' result = c.groups() if(result[1]): celstyle = 'style="' r = re.search("<-((?:(?!>).)*)>", result[1]) if(r): resultss = r.groups() cel = 'colspan="' + resultss[0] + '"'; else: cel = 'colspan="' + str(round(len(result[0]) / 2)) + '"' t = re.search("<\|((?:(?!>).)*)>", result[1]) if(t): resultss = t.groups() row = 'rowspan="' + resultss[0] + '"'; j = re.search("<bgcolor=(#[0-9a-f-A-F]{6})>", result[1]) k = re.search("<bgcolor=(#[0-9a-f-A-F]{3})>", result[1]) l = re.search("<bgcolor=(\w+)>", result[1]) if(j): resultss = j.groups() celstyle = celstyle + 'background:' + resultss[0] + ';' elif(k): resultss = k.groups() celstyle = celstyle + 'background:' + resultss[0] + ';' elif(l): resultss = l.groups() celstyle = celstyle + 'background:' + resultss[0] + ';' aa = re.search("<(#[0-9a-f-A-F]{6})>", result[1]) ab = re.search("<(#[0-9a-f-A-F]{3})>", result[1]) ac = re.search("<(\w+)>", result[1]) if(aa): resultss = aa.groups() celstyle = celstyle + 'background:' + resultss[0] + ';' elif(ab): resultss = ab.groups() celstyle = celstyle + 'background:' + resultss[0] + ';' elif(ac): resultss = ac.groups() celstyle = celstyle + 'background:' + resultss[0] + ';' qa = re.search("<width=((?:(?!>).)*)>", result[1]) qb = re.search("<height=((?:(?!>).)*)>", result[1]) if(qa): resultss = qa.groups() celstyle = celstyle + 'width:' + resultss[0] + ';' if(qb): resultss = qb.groups() celstyle = celstyle + 'height:' + resultss[0] + ';' i = re.search("<\)>", result[1]) o = re.search("<:>", result[1]) p = re.search("<\(>", result[1]) if(i): celstyle = celstyle + 'text-align:right;' elif(o): celstyle = celstyle + 'text-align:center;' elif(p): celstyle = celstyle + 'text-align:left;' celstyle = celstyle + '"' table = re.sub("(\|\|(?:(?:\|\|)+)?)((?:<(?:(?:(?!>).)*)>)+)?", "", table, 1) else: cel = 'colspan="' + str(round(len(result[0]) / 2)) + '"' table = re.sub("(\|\|(?:(?:\|\|)+)?)((?:<(?:(?:(?!>).)*)>)+)?", "", table, 1) else: break data = re.sub("(\|\|(?:(?:(?:.*)\n?)\|\|)+)", table, data, 1) else: break data = re.sub("(\n#nobr#|#nobr#\n|#nobr#)", "", data) data = re.sub('<\/blockquote>((\r)?\n){2}
    ', '

    ', data) data = re.sub('\n', '
    ', data) data = re.sub('^
    ', '', data) return(data)