Advertisement
Guest User

Untitled

a guest
Dec 6th, 2016
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.36 KB | None | 0 0
  1. import re
  2. import requests
  3. import json
  4. import xlsxwriter
  5.  
  6. #id диалога поставщика и соответствующий ему тип разреза сообщения
  7. postavshiki = {389113: ['-','Рефы А1-031'], 382405:['-','Прайс Рубин'], 384360:[' ','Старая стив']}
  8.  
  9.  
  10. # страны(2 запись - это Германия, но пишем как Европу, 5 - Финляндия - пишем Европу)
  11. countries = {
  12. "\\xf0\\x9f\\x87\\xa8\\xf0\\x9f\\x87\\xb3":' Китай ',
  13. "\\xf0\\x9f\\x87\\xa9\\xf0\\x9f\\x87\\xaa":' Европа ',
  14. "\\xf0\\x9f\\x87\\xaa\\xf0\\x9f\\x87\\xb8":' Испания ',
  15. "\\xf0\\x9f\\x87\\xab\\xf0\\x9f\\x87\\xb7":' Франция ',
  16. "\\xf0\\x9f\\x87\\xac\\xf0\\x9f\\x87\\xa7":' Великобритания ',
  17. "\\xf0\\x9f\\x87\\xae\\xf0\\x9f\\x87\\xb9":' Италия ',
  18. "\\xf0\\x9f\\x87\\xaf\\xf0\\x9f\\x87\\xb5":' Япония ',
  19. "\\xf0\\x9f\\x87\\xb0\\xf0\\x9f\\x87\\xb7":' Корея ',
  20. "\\xf0\\x9f\\x87\\xb7\\xf0\\x9f\\x87\\xba":' Россия ',
  21. "\\xf0\\x9f\\x87\\xba\\xf0\\x9f\\x87\\xb8":' США ',
  22. "\\xf0\\x9f\\x87\\xaa\\xf0\\x9f\\x87\\xba":' Европа ',
  23. "\\xf0\\x9f\\x87\\xad\\xf0\\x9f\\x87\\xb0":' Гонконг ',
  24. "\\xf0\\x9f\\x87\\xa6\\xf0\\x9f\\x87\\xba":' Австралия ',
  25. "\\xf0\\x9f\\x87\\xae\\xf0\\x9f\\x87\\xb1":' Израиль ',
  26. "\\xf0\\x9f\\x87\\xab\\xf0\\x9f\\x87\\xb1":' Европа '
  27. }
  28.  
  29. # страны производители
  30. manufacturers = ['израиль','австралия', 'гонконг', 'китай', 'германия', 'испания', 'франция', 'великобритания',
  31. 'италия', 'япония', 'корея', 'россия', 'сша', 'европа', 'europe', 'euro', 'russia','rus','ru','arab', 'usa', 'us', 'eu']
  32.  
  33. # символы в аски для замены
  34. chars = {
  35. "\\xd0\\x90":"А",
  36. "\\xd0\\x91":"Б",
  37. "\\xd0\\x92":"В",
  38. "\\xd0\\x93":"Г",
  39. "\\xd0\\x94":"Д",
  40. "\\xd0\\x95":"Е",
  41. "\\xd0\\x96":"Ж",
  42. "\\xd0\\x97":"З",
  43. "\\xd0\\x98":"И",
  44. "\\xd0\\x99":"Й",
  45. "\\xd0\\x9a":"К",
  46. "\\xd0\\x9b":"Л",
  47. "\\xd0\\x9c":"М",
  48. "\\xd0\\x9d":"Н",
  49. "\\xd0\\x9e":"О",
  50. "\\xd0\\x9f":"П",
  51. "\\xd0\\xa0":"Р",
  52. "\\xd0\\xa1":"С",
  53. "\\xd0\\xa2":"Т",
  54. "\\xd0\\xa3":"У",
  55. "\\xd0\\xa4":"Ф",
  56. "\\xd0\\xa5":"Х",
  57. "\\xd0\\xa6":"Ц",
  58. "\\xd0\\xa7":"Ч",
  59. "\\xd0\\xa8":"Ш",
  60. "\\xd0\\xa9":"Щ",
  61. "\\xd0\\xaa":"Ъ",
  62. "\\xd0\\xab":"Ы",
  63. "\\xd0\\xac":"Ь",
  64. "\\xd0\\xad":"Э",
  65. "\\xd0\\xae":"Ю",
  66. "\\xd0\\xaf":"Я",
  67. "\\xd0\\xb0":"а",
  68. "\\xd0\\xb1":"б",
  69. "\\xd0\\xb2":"в",
  70. "\\xd0\\xb3":"г",
  71. "\\xd0\\xb4":"д",
  72. "\\xd0\\xb5":"е",
  73. "\\xd0\\xb6":"ж",
  74. "\\xd0\\xb7":"з",
  75. "\\xd0\\xb8":"и",
  76. "\\xd0\\xb9":"й",
  77. "\\xd0\\xba":"к",
  78. "\\xd0\\xbb":"л",
  79. "\\xd0\\xbc":"м",
  80. "\\xd0\\xbd":"н",
  81. "\\xd0\\xbe":"о",
  82. "\\xd0\\xbf":"п",
  83. "\\xd1\\x80":"р",
  84. "\\xd1\\x81":"с",
  85. "\\xd1\\x82":"т",
  86. "\\xd1\\x83":"у",
  87. "\\xd1\\x84":"ф",
  88. "\\xd1\\x85":"х",
  89. "\\xd1\\x86":"ц",
  90. "\\xd1\\x87":"ч",
  91. "\\xd1\\x88":"ш",
  92. "\\xd1\\x89":"щ",
  93. "\\xd1\\x8a":"ъ",
  94. "\\xd1\\x8b":"ы",
  95. "\\xd1\\x8c":"ь",
  96. "\\xd1\\x8d":"э",
  97. "\\xd1\\x8e":"ю",
  98. "\\xd1\\x8f":"я"
  99. }
  100.  
  101. flags_dop = ['b/a', 'zp', 'ah/a', 'н.а.','rfb']
  102.  
  103. #TOKEN = "fb43c98de66b7ae2f1ade54cb79274"
  104. TOKEN = "1c1e0a1725fed86416a1d5374fcb28"
  105. headers = {"Authorization": TOKEN}
  106.  
  107.  
  108. #получение всех сообщение со сдвигом offset
  109. def get_messages(offset):
  110. response = requests.get("http://api.chat2desk.com/v1/messages/?type=from_client&offset=" + offset + "&limit=100000",headers=headers)
  111. s = response.text
  112. strr = json.loads(s)
  113. return strr
  114.  
  115. #ставит статус прочтения сообщения в true
  116. def setReadTrue(message_id):
  117. requests.get("http://api.chat2desk.com/v1/messages/"+message_id+"/read",headers=headers)
  118.  
  119. # удаляет все utf8 коды типа \xf0
  120. def delete_utf(text):
  121. new_line = ''
  122. i = text.find("\\x")
  123. if(i==-1):
  124. return text
  125.  
  126. i=0
  127. while(i<len(text)):
  128. if(text[i:i+2]=="\\x"):
  129. #print("good")
  130. i+=4
  131. else:
  132. new_line += text[i]
  133. i+=1
  134. return new_line
  135.  
  136. def go(worksheet, razrez):
  137. str = open("new.txt").read()
  138. str = str[2:]
  139. # замена emoji на названия стран
  140. for country in countries:
  141. i = str.find(country)
  142. while (i != (-1)):
  143. str = str.replace(country, countries[country])
  144. i = str.find(country)
  145.  
  146. # замена utf8 русских символов на норм символы
  147. for char in chars:
  148. i = str.find(char)
  149. while (i != (-1)):
  150. str = str.replace(char, chars[char])
  151. i = str.find(char)
  152.  
  153. file = open("out.txt", "w")
  154.  
  155. # убираем переводы строк
  156. i = 0
  157. while (i < len(str)):
  158. if (str[i:i + 2] == "\\n"):
  159. file.write("\n")
  160. i += 2
  161. else:
  162. file.write(str[i])
  163. i += 1
  164. file.write("\n")
  165. file.close()
  166.  
  167. file2 = open("out2.txt", "w")
  168.  
  169. with open('out.txt', 'r') as infile:
  170. data = infile.read() # Read the contents of the file into memory.
  171.  
  172. my_list = data.splitlines()
  173.  
  174. # обработка каждой строки с товаром
  175. count = 1
  176. for line in my_list[:]:
  177. file2.write(line.strip())
  178. # взяли новую строку с товаром
  179. new_line = line.strip()
  180. low_line = new_line.lower()
  181.  
  182. name = ''
  183. cost = ''
  184. country = ''
  185. dop_flags = ''
  186.  
  187. # ищем страну в строке
  188. for country_find in manufacturers:
  189. if(low_line.find(country_find)!=-1):
  190. country = country_find
  191. low_line = low_line.replace(country,' ')
  192. break
  193.  
  194. # ищем дополнительную информацию, находящуюся в скобках
  195. dop_inf_scopes = re.findall('(?<=\()(.*?)(?=\))',low_line)
  196. for dop_ing in dop_inf_scopes:
  197. if(dop_ing.strip().isdecimal() and int(dop_ing.strip())>1000):
  198. dop_flags += dop_ing + ' '
  199. low_line = low_line.replace("("+dop_ing+")",' ')
  200.  
  201. #print(dop_flags)
  202. # ищем допольнительные флаги типо н.а., zp
  203. for dop_flag in flags_dop:
  204. if(low_line.find(dop_flag)!=-1):
  205. dop_flags += dop_flag + ' '
  206. low_line = low_line.replace(dop_flag,' ')
  207.  
  208. # если ценник стоит после -, нужно также сделаеть если разделить " "
  209.  
  210. data = delete_utf(low_line.strip()).rsplit(razrez, maxsplit=1)
  211.  
  212. #data = delete_utf(line.strip()).rsplit(razrez, maxsplit=1)
  213. # data = delete_utf(line.strip()).rsplit(" ", maxsplit=1)
  214.  
  215. # print(data)
  216. if (len(data) > 1):
  217. data_new = data[-1].strip().split(" ")
  218. cost = data_new[0].strip(" ,'\"")
  219. worksheet.write(count, 0, data[0])
  220. worksheet.write(count, 1, re.sub(r'[.,]', '', cost))
  221. worksheet.write(count, 2, country.strip())
  222. worksheet.write(count, 3, dop_flags.strip())
  223. else:
  224. worksheet.write(count, 0, delete_utf(low_line).strip(), bold)
  225.  
  226. dop_flags = ''
  227. count += 1
  228. file2.write("\n")
  229.  
  230.  
  231.  
  232. def main():
  233. # считываем смещение по предыдущим сообщениям
  234. #current_position = str(open("config.txt").read())
  235.  
  236. data = get_messages("0")
  237.  
  238. # отбираем из всех соообщений только те, отправителями которых являются наши поставщики
  239. z=0
  240. for i in range(len(data['data'])):
  241. client_id = data['data'][i]['client_id']
  242.  
  243. # если сообщение от поставщика и непрочитано
  244. if(client_id in postavshiki):
  245. workbook = xlsxwriter.Workbook(postavshiki[client_id][1]+"_"+str(z)+".xlsx")
  246. global bold
  247. bold = workbook.add_format({'bold': True})
  248. worksheet = workbook.add_worksheet(postavshiki[client_id][1])
  249. worksheet.set_column('A:A', 40)
  250. worksheet.set_column('B:B', 40)
  251. worksheet.set_column('C:C', 40)
  252. worksheet.set_column('D:D', 20)
  253. worksheet.write('A1', 'Товар', bold)
  254. worksheet.write('B1', 'Цена', bold)
  255. worksheet.write('C1', 'Производитель', bold)
  256. worksheet.write('D1', 'Дополнительно', bold)
  257.  
  258. open("new.txt", "w").write(str(data['data'][i]['text'].encode("utf8")))
  259. go(worksheet,postavshiki[client_id][0])
  260. #go(worksheet, "-")
  261. z+=1
  262. #setReadTrue(str(data['data'][i]['message_id']))
  263. workbook.close()
  264.  
  265. # записываем сдвиг по сообщениям
  266. #open("config.txt").write(current_position+len(strr['data']))
  267.  
  268. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement