this is based on calsyslab project
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

377 lines
12 KiB

1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
  1. __author__ = 'DarkWeb'
  2. import psycopg2
  3. import traceback
  4. import time
  5. from datetime import date
  6. def connectDataBase():
  7. try:
  8. return psycopg2.connect(host='localhost', user='postgres', password='password', dbname='darkweb_markets_forums')
  9. except:
  10. print ("Data base (darkweb_forums) not found.")
  11. raise SystemExit
  12. def verifyForum(cur, nameForum):
  13. try:
  14. cur.execute("select forum_id from forums where name_forum = %(nameForum)s limit 1", {'nameForum': nameForum})
  15. recset = cur.fetchall()
  16. if recset:
  17. return recset[0][0]
  18. else:
  19. return 0
  20. except:
  21. trace = traceback.format_exc()
  22. print (trace)
  23. def verifyBoard(cur, forum, nameBoard):
  24. try:
  25. cur.execute("select board_id from boards where forum_id = %(forum)s and name_board = %(nameBoard)s limit 1",
  26. {'forum': forum, 'nameBoard': nameBoard})
  27. recset = cur.fetchall()
  28. if recset:
  29. return recset[0][0]
  30. else:
  31. return 0
  32. except:
  33. trace = traceback.format_exc()
  34. print (trace)
  35. def verifyTopic(cur, forumId, boardId, authorId, titleTopic):
  36. try:
  37. cur.execute("select topic_id from topics where forum_id = %(forumId)s and board_id = %(boardId)s and "
  38. "author_id = %(authorId)s and title_topic = %(titleTopic)s limit 1", {'forumId': forumId,
  39. 'boardId': boardId,
  40. 'authorId': authorId,
  41. 'titleTopic': titleTopic})
  42. recset = cur.fetchall()
  43. if recset:
  44. return recset[0][0]
  45. else:
  46. return 0
  47. except:
  48. trace = traceback.format_exc()
  49. print (trace)
  50. def verifyUser(cur, nameUser, forumId):
  51. try:
  52. cur.execute("select user_id from users where name_user = %(nameUser)s and forum_id = %(forumId)s limit 1",
  53. {'nameUser': nameUser, 'forumId': forumId})
  54. recset = cur.fetchall()
  55. if recset:
  56. return recset[0][0]
  57. else:
  58. return 0
  59. except:
  60. trace = traceback.format_exc()
  61. print (trace)
  62. def getLastForum(cur):
  63. try:
  64. cur.execute("select forum_id from forums order by forum_id desc limit 1")
  65. recset = cur.fetchall()
  66. if recset:
  67. return recset[0][0]
  68. else:
  69. return 0
  70. except:
  71. trace = traceback.format_exc()
  72. print (trace)
  73. def getLastBoard(cur):
  74. try:
  75. cur.execute("select board_id from boards order by board_id desc limit 1")
  76. recset = cur.fetchall()
  77. if recset:
  78. return recset[0][0]
  79. else:
  80. return 0
  81. except:
  82. trace = traceback.format_exc()
  83. print (trace)
  84. def getLastTopic(cur):
  85. try:
  86. cur.execute("select topic_id from topics order by topic_id desc limit 1")
  87. recset = cur.fetchall()
  88. if recset:
  89. return recset[0][0]
  90. else:
  91. return 0
  92. except:
  93. trace = traceback.format_exc()
  94. print (trace)
  95. def getLastUser(cur):
  96. try:
  97. cur.execute("select user_id from users order by user_id desc")
  98. recset = cur.fetchall()
  99. if recset:
  100. return recset[0][0]
  101. else:
  102. return 0
  103. except:
  104. trace = traceback.format_exc()
  105. print (trace)
  106. '''
  107. def getLastPost(cur):
  108. try:
  109. cur.execute("select id from Posts order by id desc limit 1")
  110. recset = cur.fetchall()
  111. if recset:
  112. return recset[0][0]
  113. else:
  114. return 0
  115. except:
  116. trace = traceback.format_exc()
  117. print (trace)
  118. '''
  119. def create_forum(cur, row):
  120. forumId = verifyForum(cur, row[0])
  121. if not forumId:
  122. forumId = int(getLastForum(cur) + 1)
  123. sql = "Insert into forums (forum_id, name_forum, url_forum, dateinserted_forum) Values (%s, %s, %s, %s)"
  124. recset = [forumId, row[0], None, row[8]]
  125. cur.execute(sql, recset)
  126. return forumId
  127. def create_board(cur, row, forumId):
  128. boardId = verifyBoard(cur, forumId, row[1])
  129. if not boardId:
  130. boardId = int(getLastBoard(cur) + 1)
  131. sql = "Insert into boards (board_id, forum_id, name_board, dateinserted_board) Values (%s, %s, %s, %s)"
  132. recset = [boardId, forumId, row[1], row[8]]
  133. cur.execute(sql, recset)
  134. return boardId
  135. def create_topic(cur, row, forumId, boardId, authorId):
  136. topicId = verifyTopic(cur, forumId, boardId, authorId, row[3])
  137. if not topicId:
  138. topicId = int(getLastTopic(cur) + 1)
  139. sql = "Insert into topics (topic_id, forum_id, board_id, author_id, title_topic, views_topic, posts_topic, " \
  140. "href_topic, dateadded_topic, dateinserted_topic, classification_topic) Values (%s, %s, %s, %s, %s, %s, " \
  141. "%s, %s, %s, %s, %s)"
  142. recset = [topicId, forumId, boardId, authorId,
  143. row[3],
  144. row[4] if row[4] != '-1' else None,
  145. row[5] if row[5] != '-1' else None,
  146. row[6] if row[6] != '-1' else None,
  147. row[7] if row[7] != '-1' else None,
  148. row[8],
  149. row[17]]
  150. cur.execute(sql, recset)
  151. return topicId
  152. def create_user(cur, row, forumId, index):
  153. userId = verifyUser(cur, row[9][index], forumId)
  154. if not userId:
  155. userId = int(getLastUser(cur) + 1)
  156. sql = "Insert into users (user_id, forum_id, name_user, status_user, reputation_user, interest_user, " \
  157. "signature_user, dateinserted_user) Values (%s, %s, %s, %s, %s, %s, %s, %s)"
  158. recset = [userId, forumId,
  159. row[9][index],
  160. row[10][index] if row[10][index] != '-1' else None,
  161. row[11][index] if row[11][index] != '-1' else None,
  162. row[12][index] if row[12][index] != '-1' else None,
  163. row[13][index] if row[13][index] != '-1' else None,
  164. row[8]]
  165. cur.execute(sql, recset)
  166. return userId
  167. def create_posts(cur, row, forumId, boardId, topicId):
  168. if row[9] != "-1":
  169. for i in range(len(row[9])):
  170. if i != 0:
  171. userId = create_user(cur, row, forumId, i)
  172. else:
  173. userId = verifyUser(cur, row[2], forumId)
  174. sql = "Insert into posts (forum_id, board_id, topic_id, user_id, content_post, feedback_post, " \
  175. "dateadded_post, dateinserted_post) Values (%s, %s, %s, %s, %s, %s, %s, %s)"
  176. recset = [forumId, boardId, topicId, userId,
  177. row[14][i] if row[14][i] != '-1' else None,
  178. row[15][i] if row[15][i] != '-1' else None,
  179. row[16][i] if row[16][i] != '-1' else None,
  180. row[8]]
  181. cur.execute(sql, recset)
  182. def create_database(cur, con):
  183. try:
  184. sql = "create table forums (forum_id integer NOT NULL, name_forum character varying(255) NOT NULL, url_forum " \
  185. "character varying(255) null, dateinserted_forum timestamp(6) with time zone NOT NULL, constraint " \
  186. "forums_pk primary key (forum_id))"
  187. cur.execute(sql)
  188. sql = "create table boards (board_id integer NOT NULL, forum_id integer NOT NULL, name_board character " \
  189. "varying(255) NOT NULL, dateinserted_board timestamp(6) with time zone NOT NULL, constraint boards_pk " \
  190. "primary key (board_id), constraint boards_forum_id_fkey foreign key (forum_id) references forums (" \
  191. "forum_id))"
  192. cur.execute(sql)
  193. sql = "create table users (user_id integer NOT NULL, forum_id integer NOT NULL, name_user character varying(" \
  194. "255) NOT NULL, status_user character varying(255) null, reputation_user character varying(255) null, " \
  195. "interest_user character varying(5000) null, signature_user character varying(1000) null, " \
  196. "dateinserted_user timestamp(6) with time zone NOT NULL, constraint users_pk primary key (user_id), " \
  197. "constraint users_forum_id_fkey foreign key (forum_id) references forums (forum_id))"
  198. cur.execute(sql)
  199. sql = "create table users_history(user_id integer NOT NULL, forum_id integer NOT NULL, name_user character " \
  200. "varying(255) NOT NULL, status_user character varying(255) null, reputation_user character varying(255) " \
  201. "null, interest_user character varying(5000) null, signature_user character varying(1000) null, " \
  202. "dateinserted_user timestamp(6) with time zone NOT NULL, constraint users_history_pk primary key (" \
  203. "user_id, dateinserted_user), constraint users_history_user_id_fkey foreign key (user_id) references " \
  204. "users (user_id), constraint users_history_forum_id_fkey foreign key (forum_id) references forums (" \
  205. "forum_id))"
  206. cur.execute(sql)
  207. sql = "create table topics(topic_id integer NOT NULL, forum_id integer NOT NULL, board_id integer NOT NULL, " \
  208. "author_id integer NOT NULL, title_topic character varying(255) NOT NULL, views_topic integer null, " \
  209. "posts_topic integer null, href_topic character varying(255) null, dateadded_topic timestamp(6) with " \
  210. "time zone null, dateinserted_topic timestamp(6) with time zone NOT NULL, classification_topic double " \
  211. "precision NOT NULL, constraint topics_pk primary key (topic_id), constraint topics_author_id_fkey " \
  212. "foreign key (author_id) references users (user_id), constraint topics_board_id_fkey foreign key (" \
  213. "board_id) references boards (board_id), constraint topics_forum_id_fkey foreign key (forum_id) " \
  214. "references forums (forum_id))"
  215. cur.execute(sql)
  216. sql = "create table topics_history(topic_id integer NOT NULL, forum_id integer NOT NULL, board_id integer NOT " \
  217. "NULL, author_id integer NOT NULL, title_topic character varying(255) NOT NULL, views_topic integer " \
  218. "null, posts_topic integer null, href_topic character varying(255) null, dateadded_topic timestamp(6) " \
  219. "with time zone null, dateinserted_topic timestamp(6) with time zone NOT NULL, classification_topic " \
  220. "double precision NOT NULL, constraint topics_history_pk primary key (topic_id, dateinserted_topic), " \
  221. "constraint topics_history_topic_id_fkey foreign key (topic_id) references topics (topic_id), " \
  222. "constraint topics_history_author_id_fkey foreign key (author_id) references users (user_id), " \
  223. "constraint topics_history_board_id_fkey foreign key (board_id) references boards (board_id), " \
  224. "constraint topics_history_forum_id_fkey foreign key (forum_id) references forums (forum_id))"
  225. cur.execute(sql)
  226. sql = "create table posts(forum_id integer NOT NULL, board_id integer NOT NULL, topic_id integer NOT NULL, " \
  227. "user_id integer NOT NULL, content_post character varying(100000) null, feedback_post integer null, " \
  228. "dateadded_post timestamp(6) with time zone NOT NULL, dateinserted_post timestamp(6) with time zone NOT " \
  229. "NULL, constraint posts_pk primary key (forum_id, board_id, topic_id, user_id, dateadded_post), " \
  230. "constraint posts_author_id_fkey foreign key (user_id) references users (user_id), constraint " \
  231. "posts_board_id_fkey foreign key (board_id) references boards (board_id), constraint " \
  232. "posts_forum_id_fkey foreign key (forum_id) references forums (forum_id), constraint " \
  233. "posts_topic_id_fkey foreign key (topic_id) references topics (topic_id))"
  234. cur.execute(sql)
  235. con.commit()
  236. except:
  237. con.rollback()
  238. trace = traceback.format_exc()
  239. if (trace.find("already exists")==-1):
  240. print ("There was a problem during the database creation." )
  241. raise SystemExit