Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import re
- import requests
- import json
- import xlsxwriter
- #id диалога поставщика и соответствующий ему тип разреза сообщения
- postavshiki = {389113: ['-','Рефы А1-031'], 382405:['-','Прайс Рубин'], 384360:[' ','Старая стив']}
- # страны(2 запись - это Германия, но пишем как Европу, 5 - Финляндия - пишем Европу)
- countries = {
- "\\xf0\\x9f\\x87\\xa8\\xf0\\x9f\\x87\\xb3":' Китай ',
- "\\xf0\\x9f\\x87\\xa9\\xf0\\x9f\\x87\\xaa":' Европа ',
- "\\xf0\\x9f\\x87\\xaa\\xf0\\x9f\\x87\\xb8":' Испания ',
- "\\xf0\\x9f\\x87\\xab\\xf0\\x9f\\x87\\xb7":' Франция ',
- "\\xf0\\x9f\\x87\\xac\\xf0\\x9f\\x87\\xa7":' Великобритания ',
- "\\xf0\\x9f\\x87\\xae\\xf0\\x9f\\x87\\xb9":' Италия ',
- "\\xf0\\x9f\\x87\\xaf\\xf0\\x9f\\x87\\xb5":' Япония ',
- "\\xf0\\x9f\\x87\\xb0\\xf0\\x9f\\x87\\xb7":' Корея ',
- "\\xf0\\x9f\\x87\\xb7\\xf0\\x9f\\x87\\xba":' Россия ',
- "\\xf0\\x9f\\x87\\xba\\xf0\\x9f\\x87\\xb8":' США ',
- "\\xf0\\x9f\\x87\\xaa\\xf0\\x9f\\x87\\xba":' Европа ',
- "\\xf0\\x9f\\x87\\xad\\xf0\\x9f\\x87\\xb0":' Гонконг ',
- "\\xf0\\x9f\\x87\\xa6\\xf0\\x9f\\x87\\xba":' Австралия ',
- "\\xf0\\x9f\\x87\\xae\\xf0\\x9f\\x87\\xb1":' Израиль ',
- "\\xf0\\x9f\\x87\\xab\\xf0\\x9f\\x87\\xb1":' Европа '
- }
- # страны производители
- manufacturers = ['израиль','австралия', 'гонконг', 'китай', 'германия', 'испания', 'франция', 'великобритания',
- 'италия', 'япония', 'корея', 'россия', 'сша', 'европа', 'europe', 'euro', 'russia','rus','ru','arab', 'usa', 'us', 'eu']
- # символы в аски для замены
- chars = {
- "\\xd0\\x90":"А",
- "\\xd0\\x91":"Б",
- "\\xd0\\x92":"В",
- "\\xd0\\x93":"Г",
- "\\xd0\\x94":"Д",
- "\\xd0\\x95":"Е",
- "\\xd0\\x96":"Ж",
- "\\xd0\\x97":"З",
- "\\xd0\\x98":"И",
- "\\xd0\\x99":"Й",
- "\\xd0\\x9a":"К",
- "\\xd0\\x9b":"Л",
- "\\xd0\\x9c":"М",
- "\\xd0\\x9d":"Н",
- "\\xd0\\x9e":"О",
- "\\xd0\\x9f":"П",
- "\\xd0\\xa0":"Р",
- "\\xd0\\xa1":"С",
- "\\xd0\\xa2":"Т",
- "\\xd0\\xa3":"У",
- "\\xd0\\xa4":"Ф",
- "\\xd0\\xa5":"Х",
- "\\xd0\\xa6":"Ц",
- "\\xd0\\xa7":"Ч",
- "\\xd0\\xa8":"Ш",
- "\\xd0\\xa9":"Щ",
- "\\xd0\\xaa":"Ъ",
- "\\xd0\\xab":"Ы",
- "\\xd0\\xac":"Ь",
- "\\xd0\\xad":"Э",
- "\\xd0\\xae":"Ю",
- "\\xd0\\xaf":"Я",
- "\\xd0\\xb0":"а",
- "\\xd0\\xb1":"б",
- "\\xd0\\xb2":"в",
- "\\xd0\\xb3":"г",
- "\\xd0\\xb4":"д",
- "\\xd0\\xb5":"е",
- "\\xd0\\xb6":"ж",
- "\\xd0\\xb7":"з",
- "\\xd0\\xb8":"и",
- "\\xd0\\xb9":"й",
- "\\xd0\\xba":"к",
- "\\xd0\\xbb":"л",
- "\\xd0\\xbc":"м",
- "\\xd0\\xbd":"н",
- "\\xd0\\xbe":"о",
- "\\xd0\\xbf":"п",
- "\\xd1\\x80":"р",
- "\\xd1\\x81":"с",
- "\\xd1\\x82":"т",
- "\\xd1\\x83":"у",
- "\\xd1\\x84":"ф",
- "\\xd1\\x85":"х",
- "\\xd1\\x86":"ц",
- "\\xd1\\x87":"ч",
- "\\xd1\\x88":"ш",
- "\\xd1\\x89":"щ",
- "\\xd1\\x8a":"ъ",
- "\\xd1\\x8b":"ы",
- "\\xd1\\x8c":"ь",
- "\\xd1\\x8d":"э",
- "\\xd1\\x8e":"ю",
- "\\xd1\\x8f":"я"
- }
- flags_dop = ['b/a', 'zp', 'ah/a', 'н.а.','rfb']
- #TOKEN = "fb43c98de66b7ae2f1ade54cb79274"
- TOKEN = "1c1e0a1725fed86416a1d5374fcb28"
- headers = {"Authorization": TOKEN}
- #получение всех сообщение со сдвигом offset
- def get_messages(offset):
- response = requests.get("http://api.chat2desk.com/v1/messages/?type=from_client&offset=" + offset + "&limit=100000",headers=headers)
- s = response.text
- strr = json.loads(s)
- return strr
- #ставит статус прочтения сообщения в true
- def setReadTrue(message_id):
- requests.get("http://api.chat2desk.com/v1/messages/"+message_id+"/read",headers=headers)
- # удаляет все utf8 коды типа \xf0
- def delete_utf(text):
- new_line = ''
- i = text.find("\\x")
- if(i==-1):
- return text
- i=0
- while(i<len(text)):
- if(text[i:i+2]=="\\x"):
- #print("good")
- i+=4
- else:
- new_line += text[i]
- i+=1
- return new_line
- def go(worksheet, razrez):
- str = open("new.txt").read()
- str = str[2:]
- # замена emoji на названия стран
- for country in countries:
- i = str.find(country)
- while (i != (-1)):
- str = str.replace(country, countries[country])
- i = str.find(country)
- # замена utf8 русских символов на норм символы
- for char in chars:
- i = str.find(char)
- while (i != (-1)):
- str = str.replace(char, chars[char])
- i = str.find(char)
- file = open("out.txt", "w")
- # убираем переводы строк
- i = 0
- while (i < len(str)):
- if (str[i:i + 2] == "\\n"):
- file.write("\n")
- i += 2
- else:
- file.write(str[i])
- i += 1
- file.write("\n")
- file.close()
- file2 = open("out2.txt", "w")
- with open('out.txt', 'r') as infile:
- data = infile.read() # Read the contents of the file into memory.
- my_list = data.splitlines()
- # обработка каждой строки с товаром
- count = 1
- for line in my_list[:]:
- file2.write(line.strip())
- # взяли новую строку с товаром
- new_line = line.strip()
- low_line = new_line.lower()
- name = ''
- cost = ''
- country = ''
- dop_flags = ''
- # ищем страну в строке
- for country_find in manufacturers:
- if(low_line.find(country_find)!=-1):
- country = country_find
- low_line = low_line.replace(country,' ')
- break
- # ищем дополнительную информацию, находящуюся в скобках
- dop_inf_scopes = re.findall('(?<=\()(.*?)(?=\))',low_line)
- for dop_ing in dop_inf_scopes:
- if(dop_ing.strip().isdecimal() and int(dop_ing.strip())>1000):
- dop_flags += dop_ing + ' '
- low_line = low_line.replace("("+dop_ing+")",' ')
- #print(dop_flags)
- # ищем допольнительные флаги типо н.а., zp
- for dop_flag in flags_dop:
- if(low_line.find(dop_flag)!=-1):
- dop_flags += dop_flag + ' '
- low_line = low_line.replace(dop_flag,' ')
- # если ценник стоит после -, нужно также сделаеть если разделить " "
- data = delete_utf(low_line.strip()).rsplit(razrez, maxsplit=1)
- #data = delete_utf(line.strip()).rsplit(razrez, maxsplit=1)
- # data = delete_utf(line.strip()).rsplit(" ", maxsplit=1)
- # print(data)
- if (len(data) > 1):
- data_new = data[-1].strip().split(" ")
- cost = data_new[0].strip(" ,'\"")
- worksheet.write(count, 0, data[0])
- worksheet.write(count, 1, re.sub(r'[.,]', '', cost))
- worksheet.write(count, 2, country.strip())
- worksheet.write(count, 3, dop_flags.strip())
- else:
- worksheet.write(count, 0, delete_utf(low_line).strip(), bold)
- dop_flags = ''
- count += 1
- file2.write("\n")
- def main():
- # считываем смещение по предыдущим сообщениям
- #current_position = str(open("config.txt").read())
- data = get_messages("0")
- # отбираем из всех соообщений только те, отправителями которых являются наши поставщики
- z=0
- for i in range(len(data['data'])):
- client_id = data['data'][i]['client_id']
- # если сообщение от поставщика и непрочитано
- if(client_id in postavshiki):
- workbook = xlsxwriter.Workbook(postavshiki[client_id][1]+"_"+str(z)+".xlsx")
- global bold
- bold = workbook.add_format({'bold': True})
- worksheet = workbook.add_worksheet(postavshiki[client_id][1])
- worksheet.set_column('A:A', 40)
- worksheet.set_column('B:B', 40)
- worksheet.set_column('C:C', 40)
- worksheet.set_column('D:D', 20)
- worksheet.write('A1', 'Товар', bold)
- worksheet.write('B1', 'Цена', bold)
- worksheet.write('C1', 'Производитель', bold)
- worksheet.write('D1', 'Дополнительно', bold)
- open("new.txt", "w").write(str(data['data'][i]['text'].encode("utf8")))
- go(worksheet,postavshiki[client_id][0])
- #go(worksheet, "-")
- z+=1
- #setReadTrue(str(data['data'][i]['message_id']))
- workbook.close()
- # записываем сдвиг по сообщениям
- #open("config.txt").write(current_position+len(strr['data']))
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement