• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

В плейлисте m3u удалить дубли каналов

satfan

Green Team
26.06.2022
78
1
BIT
78
Задача - нужен скрипт Python:
В плейлисте m3u удалить дубли каналов.
-------------------------------------
1. Указать путь к файлу плейлиста m3u
2. Найти дубли ссылок на каналы
3. Удалить дубли:
Начинающиеся с этого: #EXTINF:
Заканчивается концом найденой ссылки дубля
4. Оставить только по одной - все дубли удалить.
5. Кодировка: UTF-8
------------------------------
Этот скрипт не работает как надо . Сылки удаляет правильно, а строка с названием канала остаётся.:
Python:
def remove_duplicate_links(input_file_path, output_file_path):
    with open(input_file_path, 'r', encoding='utf-8') as file:
        lines = file.readlines()
 
    unique_links = []
    seen_links = set()
    index = 0
    while index < len(lines):
        if lines[index].startswith("#EXTINF:-1"):
            unique_links.append(lines[index])
            index += 1
            while index < len(lines) and not lines[index].startswith("#EXTINF:-1"):
                if lines[index].strip() not in seen_links:
                    unique_links.append(lines[index])
                    seen_links.add(lines[index].strip())
                index += 1
        else:
            unique_links.append(lines[index])
            index += 1
 
    with open(output_file_path, 'w', encoding='utf-8') as file:
        file.writelines(unique_links)
 
input_file = input("Введите путь к исходному файлу плейлиста m3u: ")
output_file = input("Введите путь для сохранения обработанного файла: ")
remove_duplicate_links(input_file, output_file)
print("Дубликаты ссылок удалены. Результат сохранен по указанному пути.")
Должен удалить так это всё:
#EXTINF:-1 ,Арсенал HD

#EXTINF:-1 ,НТВ

__________
А это осталось неправильно:
#EXTINF:-1 ,Арсенал HD
#EXTINF:-1 ,НТВ
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!