Уведомления

Группа в Telegram: @pythonsu

#1 Март 9, 2022 06:45:10

satfan
Зарегистрирован: 2019-02-02
Сообщения: 140
Репутация: +  -2  -
Профиль   Отправить e-mail  

Скрипт очистки плейлиста выдаёт ошибки.

IDLE (Python 3.10 64-bit)
Windows 10
—————————-
Есть плейлист IPTV — 1.m3u:
#EXTM3U
#EXTINF:-1,AVD Info
https://avdmono.do.am/arm/AVD.mp4
#EXTINF:-1 tvg-id=“40791” tvg-logo="https://avdmono.do.am/avdlogo/Cinema.png",AVD TV
http://v2.catcast.tv/content/40791/index.m3u8
#EXTINF:-1 tvg-id=“40953” tvg-logo="https://avdmono.do.am/logo/NorMax_kids.png",NorKIds
https://autopilot.catcast.tv/content/40953/index.m3u8
#EXTINF:-1 group-title=“Музыкальные ”,Vevo Pop Europe
https://5f3491c50b093e00015a3c4c-samsung.eu.ssai.zype.com/5f3491c50b093e00015a3c4c_samsung_eu/manifest.m3u8
#EXTINF:-1 ,#EXTGRP:Кино
http://livetv.mylifeisgood.ml/mfolive.m3u8?media=vip_premiere
#EXTINF:-1 group-title=“Беларусь”,Белрос
http://uiptv.do.am/1ufc/116316122/playlist.m3u8
#EXTINF:-1 ,#EXTGRP:Познавательные
http://bigteisti2.lifeyosso.fun:56374/EDA/video.m3u8?token=SXZhbnx8TXpRMVpYSjBaR1pu
#EXTINF:-1,Кинохит HD
#EXTGRP:Кино
http://193.33.88.172:8080/kinohit/index.m3u8
————————————————————————
Нужен простой скрипт для удаления ненужного из этого плейлиста.
Должно в итоге получится так:
#EXTM3U
#EXTINF:-1,AVD Info
https://avdmono.do.am/arm/AVD.mp4
#EXTINF:-1,AVD TV
http://v2.catcast.tv/content/40791/index.m3u8
#EXTINF:-1,NorKIds
https://autopilot.catcast.tv/content/40953/index.m3u8
#EXTINF:-1,Vevo Pop Europe
https://5f3491c50b093e00015a3c4c-samsung.eu.ssai.zype.com/5f3491c50b093e00015a3c4c_samsung_eu/manifest.m3u8
#EXTINF:-1,#EXTGRP:Кино
http://livetv.mylifeisgood.ml/mfolive.m3u8?media=vip_premiere
#EXTINF:-1,Белрос
http://uiptv.do.am/1ufc/116316122/playlist.m3u8
#EXTINF:-1,Познавательные
http://bigteisti2.lifeyosso.fun:56374/EDA/video.m3u8?token=SXZhbnx8TXpRMVpYSjBaR1pu
#EXTINF:-1,Кинохит HD
http://193.33.88.172:8080/kinohit/index.m3u8
—————————————————————-
Что мы должны сделать:
1. В строке: #EXTINF:-1, ….. удалить всё до запятой за которой идёт название канала.
2. Удалить полностью строки: #EXTGRP: Здесь могут меняться названия групп (#EXTGRP:Познавательные #EXTGRP:Новостные и т.д)
—————————-
Я ранее очищал Notepad++ так, не всегда срабатывает:
Открыть регулярные выражения.
В том же Notepad++ например, есть “Поиск” –> “Замена”, поставить галочку “Регулярные выражения” и ввести в строку поиска например:
Найти: #EXTINF:-1
# -*- coding: utf-8 -*
import requests
import os
from os import listdir
from os.path import isfile, join
import re

# создаем папку playlists если ее нет
if not os.path.isdir('playlists'):
os.mkdir('playlists')

main()
# получаем список файлов плейлистов из папки playlists
playlists =
for i in playlists:
with open(f'playlists/{i}', encoding='utf-8') as file_in:
txt = file_in.read()
txt = re.sub(r“( tvg-id.*).(\,)”, ‘,’, txt)
txt = re.sub(r“(#EXTGRP.*).(\n)”, ‘', txt)
with open(f’out_{i}', ‘w’) as file_out:
file_out.write(txt)

Выдаёт ошибки:
Traceback (most recent call last):
File “C:\Users\Пк\Desktop\cleaning_plist\cleaning_plist.py”, line 21, in <module>
file_out.write(txt)
File “C:\Python\lib\encodings\cp1251.py”, line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)
UnicodeEncodeError: ‘charmap’ codec can't encode character ‘\U0001f3b6’ in position 243: character maps to <undefined>
————————–
Подскажите как исправить скрипт ?

Отредактировано satfan (Март 9, 2022 08:18:28)

Офлайн

#2 Март 9, 2022 11:28:59

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1360
Репутация: +  119  -
Профиль   Отправить e-mail  

Скрипт очистки плейлиста выдаёт ошибки.

 import re
#
def edit_m3u(m3u_file):
    with open(m3u_file, 'r', encoding='utf-8') as rf:
        with open('edited_m3u.m3u', 'w', encoding='utf-8') as wf:
            for line in rf.readlines():
                if line.startswith('#EXTINF'):
                    wf.writelines(re.sub(r'(#EXTINF:-?\d+)(?:.*)?(,)(?:#EXTGRP:)?(.+)', f"\g<1>\g<2>\g<3>", line))
                elif line.startswith('http'):
                    wf.writelines(line)
                elif line.startswith('#EXTM3U'):
                    wf.writelines(line)
#
edit_m3u('IPTV — 1.m3u')

>>>
#EXTM3U
#EXTINF:-1,AVD Info
https://avdmono.do.am/arm/AVD.mp4
#EXTINF:-1,AVD TV
http://v2.catcast.tv/content/40791/index.m3u8
#EXTINF:-1,NorKIds
https://autopilot.catcast.tv/content/40953/index.m3u8
#EXTINF:-1,Vevo Pop Europe
https://5f3491c50b093e00015a3c4c-samsung.eu.ssai.zype.com/5f3491c50b093e00015a3c4c_samsung_eu/manifest.m3u8
#EXTINF:-1,Кино
http://livetv.mylifeisgood.ml/mfolive.m3u8?media=vip_premiere
#EXTINF:-1,Белрос
http://uiptv.do.am/1ufc/116316122/playlist.m3u8
#EXTINF:-1,Познавательные
http://bigteisti2.lifeyosso.fun:56374/EDA/video.m3u8?token=SXZhbnx8TXpRMVpYSjBaR1pu
#EXTINF:-1,Кинохит HD
http://193.33.88.172:8080/kinohit/index.m3u8

Офлайн

#3 Март 9, 2022 11:55:57

satfan
Зарегистрирован: 2019-02-02
Сообщения: 140
Репутация: +  -2  -
Профиль   Отправить e-mail  

Скрипт очистки плейлиста выдаёт ошибки.

Спасибо xam1816
Я только начинаю учить Python.
————————————-
1. Создаю каталог на рабочем столе: cleaning_plist
2. Создаю ваш скрипт: 01.py
3. Загружаю свой плейлист (1.m3u) в текущий каталог — cleaning_plist.
4. В файл: edited_m3u.m3u — ничего не записывается.
Скрипт срабатывает без ошибок. Но ничего не получаю на выходе.
Что не так ?

Отредактировано satfan (Март 9, 2022 12:09:23)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version