mark.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. from .namumark import namumark
  2. from .tool import *
  3. import re
  4. import os
  5. import html
  6. import sqlite3
  7. import asyncio
  8. import threading
  9. import urllib.parse
  10. conn = ''
  11. curs = ''
  12. if os.path.exists('route/tool/custom.py'):
  13. from .custom import custom_mark
  14. else:
  15. def custom_mark(conn, data, title, num, include):
  16. return [data, '', []]
  17. def load_conn2(data):
  18. global conn
  19. global curs
  20. conn = data
  21. curs = conn.cursor()
  22. def send_parser(data):
  23. if not re.search(r'^<br>$', data):
  24. data = html.escape(data)
  25. data = re.sub(r'javascript:', '', data, flags = re.I)
  26. data = data.replace('&lt;br&gt;', '')
  27. link_re = re.compile(r'&lt;a(?: (?:(?:(?!&gt;).)*))?&gt;(?P<in>(?:(?!&lt;).)*)&lt;\/a&gt;')
  28. link_data = link_re.findall(data)
  29. for i in link_data:
  30. data = link_re.sub('<a href="/w/' + urllib.parse.quote(i).replace('/','%2F') + '">' + i + '</a>', data, 1)
  31. return data
  32. def render_do(title, data, num, include):
  33. # num == 1 -> commit O | html
  34. # num == 2 -> commit X | list
  35. # num == 3 -> commit X
  36. curs.execute(db_change('select data from other where name = "markup"'))
  37. rep_data = curs.fetchall()
  38. if rep_data[0][0] == 'namumark':
  39. data = namumark(conn, data, title, include)
  40. elif rep_data[0][0] == 'custom':
  41. data = custom_mark(conn, data, title, include)
  42. elif rep_data[0][0] == 'js_onmark':
  43. include = (include + '_') if include else ''
  44. data = [
  45. '<div id="' + include + 'render_content">' + html.escape(data) + '</div>',
  46. '''
  47. do_onmark_render(
  48. test_mode = 0,
  49. name_id = "''' + include + '''render_content",
  50. name_include = "'''·+ include + '''",
  51. name_doc = "''' +title.replace('"', '//"') + '''",
  52. );
  53. ''',
  54. []
  55. ]
  56. else:
  57. data = [data, '', []]
  58. if num in [1, 3]:
  59. if data[2] == []:
  60. curs.execute(db_change("insert into back (title, link, type) values ('test', ?, 'nothing')"), [title])
  61. else:
  62. curs.executemany(db_change("insert into back (link, title, type) values (?, ?, ?)"), data[2])
  63. curs.execute(db_change("delete from back where title = ? and type = 'no'"), [title])
  64. if num != 3:
  65. conn.commit()
  66. if num == 2:
  67. return [data[0], data[1]]
  68. else:
  69. return data[0] + '<script>' + data[1] + '</script>'