Guest User

Untitled

a guest
Sep 2nd, 2024
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.79 KB | None | 0 0
  1. # Оби-Ван Кеноби сезон 1 серия 4 «Часть IV» (сериал, 2022)
  2. # *ссылка*
  3. # Банды Лондона 1 сезон 1 серия (сериал, 2020)
  4. # *ссылка*
  5. # Детективное агентство Дирка Джентли 1 сезон 1 серия «Горизонты» (сериал, 2016)
  6. # *ссылка*
  7. # Детектив Вистинг 3 сезон 1 серия (сериал, 2019)
  8. # *ссылка*
  9. # Детективное агентство Дирка Джентли 2 сезон 1 серия «Кролик из космоса» (сериал, 2016)
  10. # *ссылка*
  11. # Люцифер 5 сезон 1 серия «Жалкий чёрт» (сериал, 2016-2021)
  12. # *ссылка*
  13. # Люцифер 6 сезон 1 серия «Здесь ничего никогда не меняется» (сериал, 2016-2021)
  14. # *ссылка*
  15. # Детектив Вистинг 2 сезон 1 серия (сериал, 2019)
  16. # *ссылка*
  17.  
  18. import re
  19. from collections import defaultdict
  20.  
  21. def extract_info(description):
  22. """
  23. Extracts the title, season, and episode from the description.
  24. """
  25. # Regular expression to extract title, season, and episode
  26. match = re.match(r'^([а-яА-ЯЁё\s\"\:\«\»\.\-a-zA-Z,/—*!?№]*)(?:(\d+)?\sсезон)?\s*(\d+)(?:\s*серия\s*(\d+))?', description)
  27. if match:
  28. title = match.group(1).strip()
  29. if match.group(4):
  30. season = int(match.group(3)) if match.group(3) else 0
  31. episode = int(match.group(4)) if match.group(3) else 0
  32. else:
  33. season = int(match.group(2)) if match.group(2) else 0
  34. episode = int(match.group(3)) if match.group(3) else 0
  35.  
  36. else:
  37. title = description.strip()
  38. season = 0
  39. episode = 0
  40. return (title, season, episode)
  41.  
  42. def process_file(filename):
  43. """
  44. Processes the file to extract and group episode information.
  45. """
  46. grouped_episodes = defaultdict(list)
  47.  
  48. with open(filename, 'r', encoding='utf-8') as file:
  49. lines = file.readlines()
  50.  
  51. # Process lines in pairs
  52. for i in range(0, len(lines), 2):
  53. description = lines[i].strip()
  54.  
  55. # Remove #EXTINF:-1,4400 if present
  56. clean_description = re.sub(r'#EXTINF:-1,', '', description).strip()
  57.  
  58. link = lines[i + 1].strip() if i + 1 < len(lines) else ""
  59. title, season, episode = extract_info(clean_description)
  60.  
  61. # Add to the appropriate group
  62. grouped_episodes[title].append((season, episode, clean_description, link))
  63.  
  64. return grouped_episodes
  65.  
  66. def print_grouped_episodes(grouped_episodes):
  67. """
  68. Prints the grouped and sorted episodes.
  69. """
  70. for title, episodes in grouped_episodes.items():
  71. print(f"Series: {title}")
  72. # Sort episodes by season and episode
  73. for season, episode, desc, link in sorted(episodes, key=lambda x: (x[0], x[1])):
  74. print(f" {desc}\n {link}")
  75. print()
  76.  
  77. def write_grouped_episodes_to_file(grouped_episodes, output_filename):
  78. """
  79. Writes the grouped and sorted episodes to a file.
  80. """
  81. with open(output_filename, 'w', encoding='utf-8') as file:
  82. for title, episodes in grouped_episodes.items():
  83. file.write(f"Series: {title}\n")
  84. # Sort episodes by season and episode
  85. for season, episode, desc, link in sorted(episodes, key=lambda x: (x[0], x[1])):
  86. file.write(f" {desc}\n {link}\n")
  87. file.write("\n")
  88.  
  89. # Usage example
  90. filename = 'H:\\test.txt'
  91. output_filename = 'H:\\sorted_episodes.txt'
  92. grouped_episodes = process_file(filename)
  93. write_grouped_episodes_to_file(grouped_episodes, output_filename)
  94. #print_grouped_episodes(grouped_episodes)
  95.  
Add Comment
Please, Sign In to add comment