annstasi

drawbot_Задание3

Dec 12th, 2023
893
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.10 KB | None | 0 0
  1. from poetry_data.data import getData
  2. from drawbot_skia.drawbot import *
  3. from datetime import datetime
  4.  
  5. poetry = getData('poetry')
  6. fireballs = getData('fireballs')
  7.  
  8. # # Подсчет авторов, у которых чаще всего падали болиды в день публикации
  9. # author_counts = {}
  10.  
  11. # for fire in fireballs:
  12. #     for poet in poetry:
  13. #         if fire['date'].date() == poet['date'].date():
  14. #             author = poet['author']
  15. #             if author in author_counts:
  16. #                 author_counts[author] += 1
  17. #             else:
  18. #                 author_counts[author] = 1
  19.  
  20. # print(author_counts)
  21. # value_key_pairs = ((value, key) for (key,value) in author_counts.items())
  22. # # Сортировка по частоте
  23. # sorted_value_key_pairs = sorted(value_key_pairs, reverse=True)
  24. # print(sorted_value_key_pairs)
  25.  
  26. # # Итог:
  27. # # 16 Чарльз Буковски, 14 Андрей Гришаев, 13 Михаил Айзенберг, 13 Виталий Пуханов, 13 Василий Бородин
  28. # # 12 Ян Сатуновский, 11 Всеволод Некрасов, 10 Оксана Васякина, 10 Данила Давыдов, 9 София Полякова
  29.  
  30. # Выбор автора
  31. author_name = 'Чарльз Буковски'
  32. # Выбираем одного автора и берем показатели энергии болидов
  33. energies = []
  34.  
  35. for fire in fireballs:
  36.      for poet in poetry:
  37.          if (poet['author'] == author_name) & (fire['date'].date() == poet['date'].date()):
  38.             #print(fire['energy'])
  39.             energies.append(float(fire['energy']))
  40. #print(energies)
  41.  
  42. # Суммируем энергию всех болидов для визуализации
  43. sum_fireballs = sum(energies)
  44. x = 0
  45. y = 0
  46. date_text = 0
  47.  
  48. # Координаты и дату берем у максимального болида
  49. for fire in fireballs:
  50.     if float(fire['energy']) == max(energies):
  51.         x = float(fire['lat'])
  52.         y = float(fire['lon'])
  53.         date_text = fire['date'].date()
  54.  
  55. # Ищем индекс текста автора в день максимального болида
  56. text_index = 0
  57. for index, poet in enumerate(poetry):
  58.    if (poet['date'].date() == date_text) & (poet['author'] == author_name):
  59.        #print(f"Text is at index: {index}")
  60.        text_index = index
  61.        #print(poet['text'])
  62.  
  63. newPage(742.5, 1050)
  64. # Берем текст в дату максимального болида
  65. pub = poetry[text_index]["text"]
  66. fontSize(30)
  67. # font("Times-Italic", 30) не работает..
  68. splitted_pub = pub.split("\n")
  69. y_text = 1050 - 40
  70. for line in splitted_pub:
  71.     text(line, (10, y_text))
  72.     y_text -= 25
  73.  
  74. # Ставим дату максимального болида
  75. text(str(date_text), (550, 1000))
  76.  
  77. # Рисуем черный круг, где x = lat, y = lon максимального болида, радиус = сумма энергий всех болидов
  78. shadow((0, 0), 30, (0, 0, 0))
  79. oval(x, y, sum_fireballs, sum_fireballs)
  80. fill(0, 0, 0)
  81.  
  82. saveImage("page-001.pdf")
Advertisement
Add Comment
Please, Sign In to add comment