iptv-xml-cleaner/README.md
2025-06-10 15:57:49 -04:00

1.2 KiB

BREAKDOWN

On rends le .txt unix-friendly

sed -i 's/\r//' /data/xmltvids.txt

On fait un big XPATH avec et on truncate le dernier "or"

awk '{printf "@id='''%s''' or ", $0}' | sed 's/ or $//' awk '{printf "@channel='''%s''' or ", $0}' | sed 's/ or $//'

On filter ce qu'on veut

xargs -0 -I{} xmlstarlet sel -t -c "//channel[{}]" CANADA.xml xargs -0 -I{} xmlstarlet sel -t -c "//programme[{}]" /data/CANADA.xml

FINAL CODE

echo '' > filtered_CANADA.xml awk '{printf "@id='''%s''' or ", $0}' /data/xmltvids.txt | sed 's/ or $//' | xargs -0 -I{} xmlstarlet sel -t -c "//channel[{}]" /data/CANADA.xml >> filtered_CANADA.xml awk '{printf "@channel='''%s''' or ", $0}' /data/xmltvids.txt | sed 's/ or $//' | xargs -0 -I{} xmlstarlet sel -t -c "//programme[{}]" /data/CANADA.xml >> filtered_CANADA.xml echo '' >> filtered_CANADA.xml

OPTIONAL PRETTY VERSION

xmlstarlet fo filtered_CANADA.xml > pretty_filtered_CANADA.xml

COUNT CHECK

CANADA.xml --> 739 channels, 129 538 programmes filtered_CANADA.xml --> 173 channels, 39067 programmes

USA.xml --> 11 668 channels, 975 691 programmes filtered_USA.xml --> ???