Guest User

Untitled

a guest
May 13th, 2020
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.83 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. from selenium import webdriver
  3. from selenium.webdriver.common.keys import Keys
  4. from selenium.webdriver.common.action_chains import ActionChains
  5. import telebot
  6. from telebot import apihelper
  7. from telebot import types
  8. import os
  9. from time import sleep
  10.  
  11. chrome_options = webdriver.ChromeOptions()
  12. chrome_options.binary_location = os.environ.get("GOOGLE_CHROME_BIN")
  13. chrome_options.add_argument("--headless")
  14. chrome_options.add_argument("--disable-dev-shm-usage")
  15. chrome_options.add_argument("--no-sandbox")
  16. driver = webdriver.Chrome(executable_path=os.environ.get("CHROMEDRIVER_PATH"), chrome_options=chrome_options)
  17. driver = webdriver.Chrome('chromedriver')
  18. # переменные
  19. box = []
  20. end = False
  21. rd = []
  22. a = ''
  23.  
  24. TOKEN = 'ЛОЛ ТЫ НЕ УЗНАЕШЬ ТОКЕН АЗАЗЗАЗ'
  25.  
  26. bot = telebot.TeleBot(TOKEN)
  27.  
  28. @bot.message_handler(commands=['start'])
  29. def start(message):
  30. markup = types.ReplyKeyboardMarkup(resize_keyboard=True, row_width=1)
  31. item1 = types.KeyboardButton("Оформить заказ")
  32. item2 = types.KeyboardButton("Очистить корзину")
  33. item3 = types.KeyboardButton("Показать все наличие")
  34.  
  35. markup.add(item1, item2, item3)
  36.  
  37. bot.send_message(message.chat.id, "Введи номер товара".format(message.from_user, bot.get_me()),
  38. parse_mode='html', reply_markup=markup)
  39.  
  40. # заказ
  41. @bot.message_handler(commands=['buy'])
  42. def buy(message):
  43. global box, end
  44. if len(box) != 0:
  45. bot.send_message(message.chat.id, 'В корзине сейчас:')
  46. for i in range(0,len(box)):
  47. bot.send_message(message.chat.id, box[i])
  48.  
  49. bot.send_message(message.chat.id, 'Введите данные получателя одним сообщением')
  50. end = True
  51. if len(box) == 0:
  52. bot.send_message(message.chat.id, 'Наберите товар в корзину')
  53. # очистить корзину
  54. @bot.message_handler(commands=['clear'])
  55. def clear(message):
  56. global box
  57. box = []
  58. bot.send_message(message.chat.id, 'Корзина успешно очистилась!')
  59.  
  60. # посмотреть все товары в наличии
  61. @bot.message_handler(commands=['all_pocces'])
  62. def all_pocces(message):
  63. global rd
  64. bot.send_message(message.chat.id, 'Сейчас мы проверим все картины в наличии...')
  65. bot.send_message(message.chat.id, 'Мы вас оповестим когда закончим поиск (он может занять до 8 минут)')
  66.  
  67. ad = []
  68. rd = []
  69. for n in range(1,2):
  70.  
  71.  
  72. if n == 1:
  73. driver.get('https://ideyka.com.ua/hobby/kartiny-po-nomeram/4050-sm/')
  74. else:
  75. driver.get('https://ideyka.com.ua/hobby/kartiny-po-nomeram/4050-sm/page-' + str(n))
  76. driver.set_window_size(1366,686)
  77. sleep(2)
  78. al = driver.find_elements_by_css_selector('a')
  79. for i in range(0, len(al)):
  80. if 'Картина по номерам' in al[i].text:
  81. ad.append(al[i].get_attribute('href'))
  82. print(len(ad))
  83. for n in range(1,2):
  84.  
  85.  
  86. if n == 1:
  87. driver.get('https://ideyka.com.ua/hobby/kartiny-po-nomeram/4040-sm/')
  88. else:
  89. driver.get('https://ideyka.com.ua/hobby/kartiny-po-nomeram/4040-sm/page-' + str(n))
  90. driver.set_window_size(1366,686)
  91. sleep(2)
  92. al = driver.find_elements_by_css_selector('a')
  93. for i in range(0, len(al)):
  94. if 'Картина по номерам' in al[i].text:
  95. ad.append(al[i].get_attribute('href'))
  96. print(len(ad))
  97. for i in range(0, len(ad)):
  98. driver.get(ad[i])
  99. sleep(2)
  100. try:
  101. nal = driver.find_element_by_xpath('//*[@id="page"]/section/div/div[2]/div[1]/div/div[3]/div/div[2]/b/span')
  102. f = driver.find_element_by_class_name('sku')
  103. rd.append(f.text)
  104. except:
  105. try:
  106. nal = driver.find_element_by_xpath('//*[@id="page"]/section /div/div[2]/div[1]/div/div[3]/div/div[2]/b/span')
  107. f = driver.find_element_by_class_name('sku')
  108. f.text = str.replace(f.text,"арт.", "")
  109. rd.append(f.text)
  110. except:
  111. print('not found')
  112. print(rd)
  113. markup = types.InlineKeyboardMarkup(row_width=1)
  114. item = types.InlineKeyboardButton("Посмотреть", callback_data='see')
  115.  
  116.  
  117. markup.add(item)
  118.  
  119. bot.send_message(message.chat.id, 'Поиск завершен', reply_markup=markup)
  120. driver.quit()
  121.  
  122.  
  123.  
  124. # проверка на слова
  125. @bot.message_handler(content_types=['text'])
  126. def text(message):
  127. global a, end
  128. if message.text == 'Оформить заказ':
  129. buy(message)
  130. elif message.text == 'Очистить корзину':
  131. clear(message)
  132. elif message.text == 'Показать все наличие':
  133. all_pocces(message)
  134. elif end == False:
  135. a = message.text
  136. bot.send_message(message.chat.id, 'Проверяем ' + a)
  137. driver.get('https://ideyka.com.ua/hobby/')
  138. driver.set_window_size(1366,686)
  139. sleep(2)
  140. find = driver.find_element_by_class_name('form-control')
  141. find.click()
  142. find.send_keys(a)
  143. sleep(2)
  144. try:
  145. vis = driver.find_element_by_xpath('//*[@id="search-dropdown"]/li[2]/a/div/div[2]')
  146. vis.click()
  147. sleep(5)
  148. image_name = driver.find_element_by_xpath('//*[@id="page"]/section/div/div[2]/div[1]/div/div[1]/div/h1')
  149. m = image_name.text
  150. m = str.replace(m,"Картины по номерам", "")
  151. try:
  152. nal = driver.find_element_by_xpath('//*[@id="page"]/section/div/div[2]/div[1]/div/div[3]/div/div[2]/b/span')
  153. bot.send_message(message.chat.id, 'Картина ' + m)
  154. bot.send_message(message.chat.id, 'В наличии💃')
  155. markup2 = types.InlineKeyboardMarkup(row_width=1)
  156. item5 = types.InlineKeyboardButton("Добавить в корзину", callback_data='add')
  157. markup2.add(item5)
  158. bot.send_message(message.chat.id, 'Вы можете добавить эту картину в корзину', reply_markup=markup2)
  159. except:
  160. try:
  161. nal = driver.find_element_by_xpath('//*[@id="page"]/section /div/div[2]/div[1]/div/div[3]/div/div[2]/b/span')
  162. bot.send_message(message.chat.id, 'Картина ' + m)
  163. bot.send_message(message.chat.id, 'В наличии💃')
  164. markup2 = types.InlineKeyboardMarkup(row_width=1)
  165. item5 = types.InlineKeyboardButton("Добавить в корзину", callback_data='add')
  166. markup2.add(item5)
  167. bot.send_message(message.chat.id, 'Вы можете добавить эту картину в корзину', reply_markup=markup2)
  168.  
  169. except:
  170. bot.send_message(message.chat.id, 'Картина ' + m)
  171. bot.send_message(message.chat.id, 'Не в наличии🤷‍♀️')
  172. driver.quit()
  173. except:
  174. bot.send_message(message.chat.id, 'Такого номера не существует 🤔')
  175. driver.quit()
  176. elif end == True:
  177. global box
  178. comment = message.text
  179. bot.send_message(message.chat.id, 'Ваш заказ обрабатывается')
  180. try:
  181. comment = message.text
  182. driver.get('https://ideyka.com.ua')
  183. driver.set_window_size(1366, 666)
  184. l_name = '[email protected]'
  185. l_pass = '0000'
  186. sleep(5)
  187. login = driver.find_element_by_class_name('popup_auth')
  188. login.click()
  189. log = driver.find_element_by_class_name('mail_login')
  190. log.click()
  191. log.send_keys(l_name)
  192. pas = driver.find_element_by_name('password')
  193. pas.click()
  194. pas.send_keys(l_pass)
  195. pas_butt = driver.find_element_by_xpath('//*[@id="button_login"]')
  196. pas_butt.click()
  197. sleep(5)
  198.  
  199. if len(box) == 1:
  200. find = driver.find_element_by_class_name('form-control')
  201. find.click()
  202. find.send_keys(box[0])
  203. sleep(2)
  204. vis = driver.find_element_by_xpath('//*[@id="search-dropdown"]/li[2]/a/div/div[2]')
  205. vis.click()
  206. sleep(5)
  207. b = driver.find_element_by_id('button-cart')
  208. b.click()
  209. sleep(7)
  210. butt = driver.find_element_by_xpath('//*[@id="cart"]/div/div/table/tfoot/tr/td/a[2]')
  211. butt.click()
  212. sleep(6)
  213. comm = driver.find_element_by_id('comment')
  214. comm.click()
  215. comm.send_keys(comment)
  216. butt_confirm = driver.find_element_by_xpath('//*[@id="simplecheckout_button_confirm"]')
  217. butt_confirm.click()
  218. sleep(10)
  219. driver.get('https://ideyka.com.ua/index.php?route=checkout/success')
  220. sleep(3)
  221. yes = driver.find_element_by_xpath('//*[@id="content"]/div[3]/div[3]/div/a')
  222. yes.click()
  223. sleep(2)
  224. user = driver.find_element_by_xpath('//*[@id="top-menu"]/div/div[1]/div/div[2]/a[1]')
  225. user.click()
  226. sleep(2)
  227. my_z = driver.find_element_by_xpath('//*[@id="column-right"]/div[1]/div[2]/ul/li[5]/a')
  228. my_z.click()
  229. sleep(2)
  230. numb = driver.find_elements_by_class_name('order-id')
  231.  
  232. bot.send_message(message.chat.id, 'Номер вашего заказа: \n' + numb[0].text)
  233. bot.send_message(message.chat.id, 'Товары:')
  234. for m in range(0,len(box)):
  235. bot.send_message(message.chat.id, box[m])
  236. bot.send_message(message.chat.id, 'Комментарий: ' + comment)
  237.  
  238. bot.send_message(message.chat.id, 'Спасибо за ваш заказ!')
  239. driver.quit()
  240. end = False
  241.  
  242. if len(box) > 1:
  243. for i in range(0,len(box)):
  244. find = driver.find_element_by_class_name('form-control')
  245. find.click()
  246. find.send_keys(box[i])
  247. sleep(5)
  248. vis = driver.find_element_by_xpath('//*[@id="search-dropdown"]/li[2]/a/div/div[2]')
  249. vis.click()
  250. sleep(5)
  251. b = driver.find_element_by_id('button-cart')
  252. b.click()
  253. sleep(5)
  254. butt = driver.find_element_by_xpath('//*[@id="popupcart"]/div[1]/a')
  255. butt.click()
  256. sleep(5)
  257. if i == (len(box)-1):
  258. l = driver.find_element_by_xpath('//*[@id="page"]/header/div/div[1]/div/div[3]/a')
  259. l.click()
  260. sleep(5)
  261. comm = driver.find_element_by_id('comment')
  262. comm.click()
  263. comm.send_keys(comment)
  264. sleep(2)
  265. butt_confirm = driver.find_element_by_xpath('//*[@id="simplecheckout_button_confirm"]')
  266. butt_confirm.click()
  267. sleep(10)
  268. driver.get('https://ideyka.com.ua/index.php?route=checkout/success')
  269. sleep(3)
  270. yes = driver.find_element_by_xpath('//*[@id="content"]/div[3]/div[3]/div/a')
  271. yes.click()
  272. sleep(2)
  273. user = driver.find_element_by_xpath('//*[@id="top-menu"]/div/div[1]/div/div[2]/a[1]')
  274. user.click()
  275. sleep(2)
  276. my_z = driver.find_element_by_xpath('//*[@id="column-right"]/div[1]/div[2]/ul/li[5]/a')
  277. my_z.click()
  278. sleep(2)
  279. numb = driver.find_elements_by_class_name('order-id')
  280.  
  281. end = False
  282. bot.send_message(message.chat.id, 'Номер вашего заказа: \n' + numb[0].text)
  283. bot.send_message(message.chat.id, 'Товары:')
  284. for m in range(0,len(box)):
  285. bot.send_message(message.chat.id, box[m])
  286. bot.send_message(message.chat.id, 'Комментарий: ' + comment)
  287.  
  288. bot.send_message(message.chat.id, 'Спасибо за ваш заказ!')
  289. driver.quit()
  290.  
  291.  
  292.  
  293.  
  294. except Exception as e:
  295. print(repr(e))
  296. bot.send_message(message.chat.id, 'Ошибка. Какой-то из товаров недоступен!')
  297. del(box)
  298. box = []
  299. end = False
  300. driver.quit()
  301. del box
  302. box = []
  303.  
  304. @bot.message_handler(commands=['add'])
  305. def add(message):
  306. global box, a
  307. if a in box:
  308. bot.send_message(message.chat.id, 'Товар уже в корзине')
  309. else:
  310. box.append(a)
  311. bot.send_message(message.chat.id, 'Товар ' + a + ' добавлен в корзину')
  312.  
  313. @bot.message_handler(commands=['see'])
  314. def see(message):
  315. global rd
  316. md = ' '.join(map(str, rd))
  317. bot.send_message(message.chat.id, 'В наличии сейчас: ' + md)
  318. sleep(2)
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325. # кнопки
  326.  
  327.  
  328. @bot.callback_query_handler(func=lambda call: True)
  329. def callback_inline(call):
  330. try:
  331. if call.message:
  332.  
  333. if call.data == 'add':
  334. add(call.message)
  335. elif call.data == 'see':
  336. see(call.message)
  337.  
  338. except Exception as e:
  339. print(repr(e))
  340. bot.polling()
Add Comment
Please, Sign In to add comment