Skip to content

Commit c842666

Browse files
committed
Fixes
1 parent 49d1d52 commit c842666

9 files changed

Lines changed: 31 additions & 21 deletions

File tree

data/config_playlist.yaml

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ vodfilter:
99
regex:
1010
- "\\.(mkv|avi|mp4)$"
1111
hidden_groups:
12-
- "\\b(منوعات)|(برامج)|(ليبيا)|(مغربية)|(أجنبية)|(آسيوية)|(هندية)|(مدبلجة)|(رعب)|(ألمانيه)|(مترجمة)|(تركية)|(اغاني)|(أغاني)|(طرب)|(رياضه\\sمتنوعه)\\b"
13-
- "\\b(HANDBALL)|(F1)|(MOTO)|(FOOTBALL)|(wwe)|(CYCLISME)|(GOLF)|(BASKETBALL)|(WRC)\\b"
12+
- "\\b(خليجية)|(جزائرية)|(مسيحية)|(يعرض)|(انمي)|(آسيوي)|(بودكاست)|(أجنبي)|(مدبلج)|(مترجم)|(منوعات)|(برامج)|(ليبيا)|(مغربية)|(أجنبية)|(آسيوية)|(هندية)|(مدبلجة)|(رعب)|(ألمانيه)|(مترجمة)|(تركية)|(اغاني)|(أغاني)|(طرب)|(رياضه\\sمتنوعه)\\b"
13+
- "\\b(HANDBALL)|(F1)|(MOTO)|(FOOTBALL)|(wwe)|(CYCLISME)|(GOLF)|(BASKETBALL)|(WRC)|(Subs)|(Dub)\\b"
1414

1515
displaynamefilter:
1616
priority: 2
@@ -45,9 +45,13 @@ shiftfilter:
4545
cleannamefilter:
4646
priority: 19
4747
regex:
48-
- "\\b(hevc)|(h265)|(XTRA)|(film)|(اغاني)||(طرب)|(مسلسل(?:ات)?(?:ال)?)|(الفلم|فلم|الفيلم|الفیلم|فيلم)|(بودكاست?(ال)?)|(برنامج?(ال)?)|(مسرحية)\\b"
49-
- "\\b(عادل\\sإمام)|(اسماعيل\\sياسين)|(محمد\\sسعد)|(أحمد\\sزكي)\\b"
50-
- "[!$%&«»°'\"()\\*\\+,\\.:/;<=>?@\\[\\]\\^_`{|}~◉\\-]"
48+
- "\\b(hevc)|(h265)|(XTRA)|(Subs)|(film)|(مسلسل)|(اغاني)|(طرب)|(مسلسلات)|(الفلم)|(فلم)|(الفيلم)|(الفیلم)|(فيلم)|(بودكاست)|(برنامج)|(مسرحية)\\b"
49+
- "[!$%&«»°\"\\(\\)\\*\\+,\\.:/;<=>?@\\[\\]\\^_`{|}~◉\\-]"
50+
replacements:
51+
- "عادل إمام"
52+
- "اسماعيل ياسين"
53+
- "محمد سعد"
54+
- "أحمد زكي"
5155

5256
groupingfilter:
5357
priority: 21

main.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@
1515
ENCODING_UTF8,
1616
apply_filters,
1717
download_file,
18+
export_playlist,
1819
get_filter_pool,
1920
get_lines,
2021
load_filters,
21-
save_pl,
2222
save_pl_to_path,
2323
)
2424
from pliptv.models.streams import M3u, Stream
@@ -139,24 +139,28 @@ def main(auto: bool, export: bool, is_generation_vod_enabled: bool, is_cache_ena
139139
[res.get() for res in tqdm(multiple_results, desc="Live Tv processing")],
140140
)
141141

142-
log(f"Saving {m3u.name.capitalize()}", "white")
143-
file_result = save_pl_to_path(m3u, str(pl_info.get("playlist_output_path")))
142+
channels_list = M3u(m3u.name, list(filter(lambda x: not x.meta.is_vod and not x.meta.hidden, m3u)))
143+
log(f"Saving {m3u.name.capitalize()} with {len(channels_list.streams)} channels", "yellow")
144+
file_result = save_pl_to_path(channels_list, str(pl_info.get("playlist_output_path")))
145+
144146
log(f"Generated playlist for {m3u.name.capitalize()}: {file_result}", "white")
145147

146148
if is_cache_enabled:
147149
cache_playlist_generation(m3u)
148150

149151
if export:
150-
url: str = save_pl(m3u)
152+
url: str = export_playlist(channels_list)
151153
LOG.debug(f"Playlist Exported to: {url}", "white")
152154

153-
created_streams = vod_processing(is_generation_vod_enabled, pl_info, playlist_config, m3u)
155+
vod_created_streams = vod_processing(is_generation_vod_enabled, pl_info, playlist_config, m3u)
156+
if vod_created_streams:
157+
log(f"Processed {m3u.name.capitalize()} with {len(vod_created_streams)} channels", "yellow")
154158

155159
if is_cache_enabled:
156160
cache_playlist_generation(m3u, "_final")
157161

158-
if created_streams:
159-
cleanup(created_streams, str(pl_info.get("strm_output_path")))
162+
if vod_created_streams:
163+
cleanup(vod_created_streams, str(pl_info.get("strm_output_path")))
160164

161165
# Display report
162166
# get_report(m3u)
@@ -199,7 +203,7 @@ def vod_processing(vod: bool, pl_info: dict[str, Any], playlist_config: Playlist
199203

200204
accepted_cultures = AcceptedFilter(playlist_config).filter_config.language
201205
vod_list: list[Stream] = list(
202-
filter(lambda x: x.meta.isVod and not x.meta.hidden and str.lower(x.meta.culture) in accepted_cultures, m3u.streams)
206+
filter(lambda x: x.meta.is_vod and not x.meta.hidden and str.lower(x.meta.culture) in accepted_cultures, m3u.streams)
203207
)
204208

205209
created_streams: list[str] = []

pliptv/m3u_utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ def shorten_url(url: str, access_token: str) -> str:
125125
return Shortener(api_key=access_token).bitly.short(url)
126126

127127

128-
def save_pl(pl: M3u) -> str:
128+
def export_playlist(pl: M3u) -> str:
129129
"""Save playlist file on azure and return shorten url from bit"""
130130
url = upload_bytes_to_azure(f"{pl.name}.m3u", str(pl))
131131
at = os.getenv("BITLY_ACCESS_TOKEN")

pliptv/models/streams.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,8 @@ class StreamMeta:
5757
def __init__(self, display_name: str, tvg: Tvg | None = None):
5858
self.tvg = tvg if tvg else Tvg()
5959
self.display_name = display_name
60-
self.isVod = False
61-
self.isHeader = False
60+
self.is_vod = False
61+
self.is_header = False
6262
self.hidden = False
6363

6464
def __str__(self):

pliptv/pl_filters/clean_name_filter.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,6 @@ def apply(self, value: Stream) -> Stream:
1717
for reg in self.filter_config.regex:
1818
regex = re.compile(reg, re.IGNORECASE | re.DOTALL)
1919
value.meta.display_name = regex.sub("", value.meta.display_name).strip()
20+
for replacement in self.filter_config.replacements:
21+
value.meta.display_name.replace(replacement, "")
2022
return value

pliptv/pl_filters/grouping_filter.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ def apply(self, value: Stream) -> Stream:
2525
Returns:
2626
Tuple[Optional[str], str] -- culture, group moving filter
2727
"""
28-
if not value.meta.isVod and not value.meta.isHeader:
28+
if not value.meta.is_vod and not value.meta.is_header:
2929
value.meta.hidden = True
3030
for group, regex in self.filter_config.map.__dict__.items():
3131
match = re.search(regex, value.meta.tvg.group_title, re.IGNORECASE)

pliptv/pl_filters/remove_headers_filter.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,12 @@ def apply(self, value: Stream) -> Stream:
3030
match = re.search(r, value.meta.display_name, re.IGNORECASE)
3131
if match:
3232
value.meta.hidden = True
33-
value.meta.isHeader = True
33+
value.meta.is_header = True
3434
break
3535
else:
3636
match = re.search(r, value.meta.tvg.tvg_name, re.IGNORECASE)
3737
if match:
3838
value.meta.hidden = True
39-
value.meta.isHeader = True
39+
value.meta.is_header = True
4040
break
4141
return value

pliptv/pl_filters/vod_filter.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ def apply(self, value: Stream) -> Stream:
2828
for r in self.filter_config.regex:
2929
match = re.search(r, value.url, re.IGNORECASE)
3030
if match:
31-
value.meta.isVod = True
31+
value.meta.is_vod = True
3232
if not value.meta.hidden:
3333
for reg in self.filter_config.hidden_groups:
3434
match_group = re.search(reg, value.meta.tvg.group_title, re.IGNORECASE)

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
setuptools.setup(
77
name="xpl",
8-
version="0.1.3",
8+
version="0.1.4",
99
author="Heni Fazzani",
1010
author_email="heni.fazzani@gmail.com",
1111
description="Simple extensible m3u playlist manager cli",

0 commit comments

Comments
 (0)