mark.py 2.6 KB

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