M3U dosyanızda "#EXTINF" ile başlayan açıklama satırı ve hemen altındaki URL satırından oluşan ikili bloklar mevcut. İstemediğiniz kanalları bu blokları silerek kaldırabilirsiniz. Bunu yapmanın birkaç yolu var:
1) Notepad++ + RegEx
1. Dosyayı Notepad++'ta açın.
2. Ara → Değiştir (Ctrl+H) penceresini açın.
3. "Aranan:" kutusuna aşağıdaki Regular Expression'u yapıştırın.
`( #EXTINF[^\r\n]*?(?:YabancıÜlke1|YabancıÜlke2|Adult|XXX)[^\r\n]*\r?\n[^\r\n]*\r?\n )`
– Burada parantez içindeki "YabancıÜlke1|YabancıÜlke2|Adult|XXX" kısmına silmek istediğiniz kanal isimlerini, grup başlıklarını vb. yazın.
4. "Değiştirilecek:" kutusunu boş bırakın.
5. "Düzenli ifade" ve "Yeni satırı . ile eşleştir" seçenekleri işaretli olsun.
6. "Tümünü Değiştir"e basın.
7. Kaydedin.
Bu işlem, içinde belirttiğiniz kelimeleri barındıran "#EXTINF…" blokları ve URL satırlarını birlikte silecektir.
2) Komut satırı (grep veya sed)
Eğer Linux/Mac/Windows WSL kullanıyorsanız:
a) grep + Perl-regex
```
grep -Pzo "(?s)(#EXTINF[^\n]*(?:YabancıÜlke1|Adult|XXX)[^\n]*\n[^\n]*\n)" -v original.m3u > temiz.m3u
```
– `-P` Perl-regex, `-z` satır sonlarını tek blokta görme, `-o` eşleşenleri yakalama, `-v` hariç tutma.
b) sed ile
```
sed -E '/#EXTINF.*(YabancıÜlke1|Adult|XXX)/{N;d;}' original.m3u > temiz.m3u
```
– Bu satırda ilk "#EXTINF…" satırında eşleşme varsa, bir sonraki satırı da (`N`) alıp siler (`d`).
3) Python ile otomatik filtreleme
Aşağıdaki örnek, içerisinde belirttiğiniz anahtar kelimeleri barındıran kanalları atlayarak yeni bir M3U oluşturur:
```python
import re
blacklist = ['Adult', 'YabancıÜlke1', 'XXX']
def is_bad(extinf_line):
return any(k.lower() in extinf_line.lower() for k in blacklist)
with open('original.m3u', encoding='utf-8') as src, \
open('temiz.m3u', 'w', encoding='utf-8') as dst:
lines = src.readlines()
i = 0
while i < len(lines):
if lines.startswith('#EXTINF'):
if is_bad(lines):
i += 2 # EXTINF + URL satırını atla
continue
else:
dst.write(lines)
dst.write(lines[i+1])
i += 2
else:
# Bazı M3U'larda dosyanın başında veya EPG blokları olabilir
dst.write(lines)
i += 1
```
1. `blacklist` listesine silmek istediğiniz anahtar kelimeleri ekleyin.
2. `original.m3u` dosyanızla aynı klasöre kaydedip çalıştırın.
3. `temiz.m3u` adlı yeni dosya oluşacak.
Özetle, Notepad++ ve düzenli ifadelerle ya da komut satırı araçları (grep, sed) ve/veya ufak bir Python betiğiyle istemediğiniz kanalları kolayca silebilirsiniz. M3U Editor'ler bazen toplu filtre sunmadığından bu yöntemler daha esnek ve hızlı olacaktır.