lolimoska

Untitled

Apr 20th, 2021
37
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.99 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import tabula
  4. from datetime import datetime
  5. import csv
  6. import requests
  7. from pyunpack import Archive
  8. import os
  9. import io
  10. from pdfminer.converter import TextConverter
  11. from pdfminer.pdfinterp import PDFPageInterpreter
  12. from pdfminer.pdfinterp import PDFResourceManager
  13. from pdfminer.pdfpage import PDFPage
  14. from vk_api.longpoll import VkLongPoll, VkEventType
  15. import vk_api
  16.  
  17.  
  18. znam = 0
  19. # числитель свреху, знаменатель снизу # знаменатель = 1000
  20. spisok = [
  21. {'1': '', '2': 'Горбачева А. В. (Введение в специальность)','3': 'Горбачева Н. Ф. (Химия)', '4': 'Сорокина Д. А. (Биология)','5':'','6': ''},
  22. {'1': 'Солодкая Т. И. (Математика)', '2': 'Сычева В. Ю. (Астрономия)','3': 'Харитонова М. В. (Физическая культура)','4':'','5': '','6': ''},
  23. {'1': 'Попова С. А. (Литература)', '2': 'Сафарова Л. В. (Информатика)','3': 'Солодкая Т. И. (Математика)','4': '','5': '','6': ''},
  24. {'1': '', '2': 'Солодкая Т. И. (Математика)','3': 'Макаров А. А. (Обществознание)','4': 'Вьюгов/Алиева (Иностранный язык)','5': 'Попова С. А. (Литература)','6': ''},
  25. {'1': '', '2': '','3': 'Константинова Н. В. (Физика)','4': 'Макаров А. А. (Обществознание)','5': '','6': ''},
  26. {'1': '', '2': '','3': 'Спирина Н. В. (История)','4': 'Вьюгов/Алиева (Иностранный язык)','5': '','6': ''},
  27. {'1': '', '2': 'Горбачева А. В. (Введение в специальность)', '3': 'Горбачева Н. Ф. (Химия)','4': 'Сорокина Д. А. (Биология)', '5': 'Горбачева А. В. (Введение в специальность)', '6': ''},
  28. {'1': 'Солодкая Т. И. (Математика)', '2': 'Сычева В. Ю. (Астрономия)','3': 'Харитонова М. В. (Физическая культура)', '4': 'Попова С. А. (Литература)', '5': '', '6': ''},
  29. {'1': 'Попова С. А. (Литература)', '2': 'Сафарова Л. В. (Информатика)', '3': 'Солодкая Т. И. (Математика)', '4': '','5': '', '6': ''},
  30. {'1': '', '2': 'Солодкая Т. И. (Математика)', '3': 'Макаров А. А. (Обществознание)','4': 'Вьюгов/Алиева (Иностранный язык)', '5': 'Попова С. А. (Литература)', '6': ''},
  31. {'1': '', '2': '', '3': 'Константинова Н. В. (Физика)', '4': 'Харитонова М. В. (Физическая культура)', '5': '', '6': ''},
  32. {'1': '', '2': '', '3': 'Спирина Н. В. (История)', '4': 'Спирина Н. В. (История)', '5': '', '6': ''},
  33. ]
  34. # +6 надо
  35. print('Старт')
  36. def raspisanieOK():
  37. global raspis
  38. Archive('zameni.rar').extractall('')
  39.  
  40. def extract_text_from_pdf(pdf_path):
  41. resource_manager = PDFResourceManager()
  42. fake_file_handle = io.StringIO()
  43. converter = TextConverter(resource_manager, fake_file_handle)
  44. page_interpreter = PDFPageInterpreter(resource_manager, converter)
  45.  
  46. with open(pdf_path, 'rb') as fh:
  47. for page in PDFPage.get_pages(fh,
  48. caching=True,
  49. check_extractable=True):
  50. page_interpreter.process_page(page)
  51.  
  52. text = fake_file_handle.getvalue()
  53.  
  54. # close open handles
  55. converter.close()
  56. fake_file_handle.close()
  57.  
  58. if text:
  59. return text
  60.  
  61.  
  62. if __name__=='__main__':
  63. text = (extract_text_from_pdf('Замены/' + os.listdir("Замены")[int(len(os.listdir("Замены"))) - 1]))
  64. if 'ЗНАМЕНАТЕЛЬ' in text:
  65. znam = 1
  66. # форматирование
  67. tabula.convert_into('Замены/' + os.listdir("Замены")[int(len(os.listdir("Замены"))) - 1], "zamen.csv",
  68. output_format="csv", pages='all')
  69.  
  70. # сортировка пар
  71. date = datetime.today().weekday() + 1 # получение завтрашнего дня
  72. if znam==1: # если знаменатель то
  73. date + 6
  74. para1 = '1) ' + spisok[date]['1']
  75. para2 = '2) ' + spisok[date]['2']
  76. para3 = '3) ' + spisok[date]['3']
  77. para4 = '4) ' + spisok[date]['4']
  78. para5 = '5) ' + spisok[date]['5']
  79. para6 = '6) ' + spisok[date]['6']
  80.  
  81. group = '12 г'+''
  82. with open('zamen.csv') as csv_file:
  83. csv_reader = csv.reader(csv_file, delimiter=',')
  84. line_count = 0
  85. for row in csv_reader:
  86. if group in row[1]:
  87. print('Пара', row[0], 'Заменить ', row[2], 'на', row[3])
  88. if row[0]=='I':
  89. para1 = '1) ' + row[3].replace("\n", " ")
  90. if row[0]=='II':
  91. para2 = '2) ' + row[3].replace("\n", " ")
  92. if row[0]=='III':
  93. para3 = '3) ' + row[3].replace("\n", " ")
  94. if row[0]=='IV':
  95. para4 = '4) ' + row[3].replace("\n", " ")
  96. if row[0]=='V':
  97. para5 = '5) ' + row[3].replace("\n", " ")
  98. if row[0]=='VI':
  99. para6 = '6) ' + row[3].replace("\n", " ")
  100. raspis = ('' + para1 + '\n' + para2 + '\n' + para3 + '\n' + para4 + '\n' + para5 + '\n' + para6)
  101.  
  102.  
  103.  
  104. file1 = open(str(datetime.strftime(datetime.now(), "%d.%m.%Y"))+'.txt', "a",encoding='utf8')
  105. file1.write(raspis)
  106. file1.close()
  107.  
  108. def raspisanie():
  109. # скачка
  110. API_ENDPOINT = 'https://cloud-api.yandex.net/v1/disk/public/resources/download?public_key={}'
  111. def _get_real_direct_link(sharing_link):
  112. pk_request = requests.get(API_ENDPOINT.format(sharing_link))
  113. return pk_request.json().get('href')
  114. def download_yadisk_link(sharing_link, filename):
  115. direct_link = _get_real_direct_link(sharing_link)
  116. if direct_link:
  117. # Try to recover the filename from the link
  118. download = requests.get(direct_link)
  119. with open(filename, 'wb') as out_file:
  120. out_file.write(download.content)
  121. raspisanieOK()
  122. else:
  123. write_msg(event.user_id, '⛔Замен ещё нет⛔')
  124.  
  125. download_yadisk_link('https://disk.yandex.ru/d/FBIhy2KSHPDSng','zameni.rar')
  126.  
  127.  
  128.  
  129.  
  130. token = ""
  131.  
  132. def write_msg(user_id, message):
  133. vk.method('messages.send', {'user_id': user_id, 'message': message,'random_id' : '0'})
  134.  
  135. vk = vk_api.VkApi(token=token)
  136. longpoll = VkLongPoll(vk)
  137.  
  138. from vk_api.longpoll import VkLongPoll, VkEventType
  139. for event in longpoll.listen():
  140. if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text:
  141. #Слушаем longpoll, если пришло сообщение то:
  142. if event.text == '/koh': #Если написали заданную фразу
  143. if event.from_user: #Если написали в ЛС
  144. write_msg(event.user_id, '✍🏻Думаю...')
  145. try:
  146. handle = open(str(datetime.strftime(datetime.now(), "%d.%m.%Y")) + '.txt', "r", encoding='utf8')
  147. data = handle.readlines() # read just one line
  148. handle.close()
  149. raspis = ''
  150. for i in data:
  151. raspis += i
  152. write_msg(event.user_id, '👿Расписание👿\n' + str(raspis))
  153. except Exception:
  154. raspisanie()
  155. write_msg(event.user_id, '👿Расписание👿\n' + str(raspis))
  156.  
  157. else:
  158. write_msg(event.user_id, 'Что бы узнать рассписание напиши /koh')
  159.  
  160.  
Add Comment
Please, Sign In to add comment