feat(episode-num): Adjust script to take Season/Episode number and put in episode-num element
Will only do so if season and episode numbers in format "S##E##" are present as the first word in the <desc> element of the <programme> element.
This commit is contained in:
parent
c7c1a90800
commit
8110ecc9ce
53
xml_cleaner_v2.sh
Normal file
53
xml_cleaner_v2.sh
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
#!/bin/bash
|
||||
|
||||
wget --no-check-certificate -O /data/RAW_CANADA.xml https://download2.iptvboss.pro/ZNLS-2213-GCPB-A8O7-QDK1-GIXS-4MOI-1NFG/xmlonly/CANADA.xml
|
||||
wget --no-check-certificate -O /data/RAW_USA.xml https://download2.iptvboss.pro/R5SQ-4GRG-KK00-0XQT-JZ67-7TSA-D5O7-UC1U/xmlonly/USA.xml
|
||||
|
||||
id_list="/data/xml_tv_ids.txt"
|
||||
raw_can_xml="/data/RAW_CANADA.xml"
|
||||
raw_us_xml="/data/RAW_USA.xml"
|
||||
parse_output="/data/parsed_CANADA_USA.xml"
|
||||
update_output="/data/updated_CANADA_USA.xml"
|
||||
format_output="/data/formatted_CANADA_USA.xml"
|
||||
|
||||
rm $parse_output $update_output $format_output
|
||||
|
||||
# XPATHs pour trouver les channels/programmes dans id_list
|
||||
channel_id_xpath=$(awk '{printf "@id='\''%s'\'' or ", $0}' "$id_list" | sed 's/ or $//')
|
||||
programme_channel_xpath=$(awk '{printf "@channel='\''%s'\'' or ", $0}' "$id_list" | sed 's/ or $//')
|
||||
|
||||
# Parse les XMLs complets avec les XPATHs pour copier seulement les channels et programmes dans id_list
|
||||
{
|
||||
echo '<tv source-info-name="EPGBoss">'
|
||||
xmlstarlet sel -t -c "//channel[$channel_id_xpath]" "$raw_can_xml"
|
||||
xmlstarlet sel -t -c "//channel[$channel_id_xpath]" "$raw_us_xml"
|
||||
xmlstarlet sel -t -c "//programme[$programme_channel_xpath]" "$raw_can_xml"
|
||||
xmlstarlet sel -t -c "//programme[$programme_channel_xpath]" "$raw_us_xml"
|
||||
echo '</tv>'
|
||||
} > "$parse_output"
|
||||
|
||||
|
||||
# XPATH pour trouver les programmes avec une description qui commence par SnnEnn
|
||||
EPISODE_PATTERN='/tv/programme[
|
||||
starts-with(desc, "S")
|
||||
and substring(desc, 2, 2) >= "00"
|
||||
and substring(desc, 4, 1) = "E"
|
||||
]'
|
||||
|
||||
# XPATH qui selectionne les elems <episode-num> qui n'ont pas encore un attribut "system"
|
||||
EPISODE_NUM_NOSYSTEM='/tv/programme/episode-num[not(@system)]'
|
||||
|
||||
# XPATH pour mettre à jour tous les <episode-num>
|
||||
EPISODE_NUM_ALL='/tv/programme/episode-num'
|
||||
|
||||
xmlstarlet ed \
|
||||
-s "$EPISODE_PATTERN" \
|
||||
-t elem -n "episode-num" -v "" \
|
||||
-i "/tv/programme/episode-num[not(@system)]" \
|
||||
-t attr -n system -v "onscreen" \
|
||||
-u "$EPISODE_PATTERN/episode-num" \
|
||||
-x "substring-before(../desc, ' ')" \
|
||||
"$parse_output" > "$update_output"
|
||||
|
||||
# On format le xml pour un bon indent
|
||||
xmlstarlet fo -t $update_output > $format_output
|
||||
Loading…
Reference in New Issue
Block a user