initial commit

This commit is contained in:
Nicolas 2025-06-10 15:57:49 -04:00
commit ae5a7f2c12
4 changed files with 263 additions and 0 deletions

19
Dockerfile Normal file
View File

@ -0,0 +1,19 @@
FROM debian:12-slim
RUN apt update && apt install -y --no-install-recommends \
bash \
wget \
lighttpd \
curl \
xmlstarlet \
&& rm -rf /var/lib/apt/lists/*
COPY xml_tv_ids.txt /data/
COPY xml_cleaner.sh /opt/
# Going to need a static IP adress for this part
# RUN wget -P /data/ --no-check-certificate https://download2.iptvboss.pro/2da279ce-ce9a-4491-8b92-f72c60e92092/xmlonly/CANADA.xml \
# && wget -P /data/ --no-check-certificate https://download2.iptvboss.pro/R5SQ-4GRG-KK00-0XQT-JZ67-7TSA-D5O7-UC1U/xmlonly/USA.xml
# ENTRYPOINT ["/opt/xml_cleaner.sh"]
CMD ["bash"]

27
README.md Normal file
View File

@ -0,0 +1,27 @@
### 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 '<tv source-info-name="IPTVBoss">' > 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 '</tv>' >> 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 --> ???

24
xml_cleaner.sh Normal file
View File

@ -0,0 +1,24 @@
#!/bin/bash
wget -q --no-check-certificate https://download2.iptvboss.pro/2da279ce-ce9a-4491-8b92-f72c60e92092/xmlonly/CANADA.xml > /data/CANADA.xml
wget -q --no-check-certificate https://download2.iptvboss.pro/R5SQ-4GRG-KK00-0XQT-JZ67-7TSA-D5O7-UC1U/xmlonly/USA.xml > /data/USA.xml
ids="/data/xml_tv_ids.txt"
raw_can_xml="/data/CANADA.xml"
raw_us_xml="/data/USA.xml"
dir=$(dirname "$raw_can_xml")
output="/var/www/html/clean_CANADA_US.xml"
# On crée les filtres pour trouver les channels/programmes qui nous intéressent
id_filter=$(awk '{printf "@id='\''%s'\'' or ", $0}' "$ids" | sed 's/ or $//')
prog_filter=$(awk '{printf "@channel='\''%s'\'' or ", $0}' "$ids" | sed 's/ or $//')
# On select avec xmlstarlet les channels et progs qu'on veut et on met ca dans un clean XML
{
echo '<tv source-info-name="IPTVBoss">'
xmlstarlet sel -t -c "//channel[$id_filter]" "$raw_can_xml"
xmlstarlet sel -t -c "//channel[$id_filter]" "$raw_us_xml"
xmlstarlet sel -t -c "//programme[$prog_filter]" "$raw_can_xml"
xmlstarlet sel -t -c "//programme[$prog_filter]" "$raw_us_xml"
echo '</tv>'
} > "$output"

193
xml_tv_ids.txt Normal file
View File

@ -0,0 +1,193 @@
XMLTV ID
GlobalBC-CHAN.ca
ICIGrandMontreal-CBFT.ca
NOOVO-Montreal-CFJP.ca
CBCMontreal-CBMT.ca
TVA-Montreal-CFTM.ca
TeleQuebecMontreal-CIVM.ca
SavoirMedia-CFTU.ca
CityTvMontreal-CJNT.ca
meteomedia.ca
CTVMontreal-CFCF.ca
TV5.ca
ICIMontreal.ca
LeCanalNouvellesTVA.ca
ICI-RDI.ca
ICIARTVCanada.ca
ReseaudesSports-RDS.ca
RDS2.ca
ReseaudesSportsInfo-RDSI.ca
TVASports.ca
TVASports2.ca
BNNBloomberg.ca
CBSWIVB-EAST.ca
ABCWKBW.ca
NBCWBTS-East.ca
FOXWFXT-East.ca
PBSWNED.ca
CHEK.ca
ICIQuebecCity-CBVT.ca
ICITeleVancouver-CBUFT.ca
ICIEstrie-CKSH.ca
TVA-QuebecCity-CFCM.ca
CBCToronto-CBLT.ca
CBCVancouver-CBUT.ca
GlobalToronto-CIII.ca
GlobalKingston-CKWS.ca
CTVToronto-CFTO.ca
ctvvancouverhd.ca
LeCanalVie.ca
CanalD.ca
CanalEvasion.ca
CinePop.ca
Prise2.ca
SeriesPlus.ca
Z.ca
Investigation.ca
ELLEFICTIONS.ca
Max.ca
Historia.ca
TFO.ca
LachaineDisney.ca
TeletoonFrancais.ca
QUB.ca
ADDIKTV.ca
TEMOIN.ca
Zeste.ca
CASA.ca
ICIExplora.ca
SuperEcran.ca
SuperEcran2.ca
SuperEcran3.ca
SuperEcran4.ca
AandE.ca
Slice.ca
CTVDramaChannel.ca
TLC.ca
FX.ca
FXX.ca
ABCSpark.ca
CookingChannel.ca
FoodNetwork.ca
CTVLifeChannel.ca
Lifetime.ca
Treehouse.ca
CTVSciFiChannel.ca
YTV.ca
DisneyJunior.ca
DisneyXD.ca
Nickelodeon.ca
CartoonNetwork.ca
Boomerang.ca
YesTV.ca
CTVComedyChannel.ca
CMT.ca
MTV.ca
MuchMusic.ca
NationalGeographic.ca
NationalGeographicWild.ca
CrimePlusInvestigation.ca
InvestigationDiscovery.ca
OutdoorLifeNetwork.ca
History.ca
HISTORY2.ca
CTVNature.ca
USANetwork.ca
CTVSpeed.ca
CTVWild.ca
DTOUR.ca
CHCH.ca
CWWPIX.us
TodaysShoppingChoice.ca
EEntertainmentTelevision.ca
HGTV.ca
MagnoliaNetwork.ca
CottageLife.ca
WeatherNetwork.ca
Omni1-CFMT.ca
Omni2-CJMT.ca
wgncanada.ca
Crave1.ca
Crave2.ca
Crave3.ca
Crave4.ca
STARZ1.ca
STARZ1.ca
MovieTime.ca
AdultSwim.ca
Showcase.ca
DejaView.ca
TCM.ca
VisionTV.ca
WNetwork.ca
AMC.ca
HBO1.ca
peachtree.ca
TSN1.ca
TSN2.ca
TSN3.ca
TSN4.ca
TSN5.ca
SportsnetEast.ca
SportsnetOntario.ca
SportsnetWest.ca
SportsnetPacific.ca
SportsnetOne.ca
Sportsnet360.ca
SportsnetWorld.ca
GolfChannel.ca
France24.ca
CNN.ca
CBCNewsNetwork.ca
CTVNewsChannel.ca
BBCWorldNews.ca
FoxNewsChannel.ca
HLN.ca
StingrayEnMarge.ca
StingrayFrancoCountry.ca
StingrayFrancoPop.ca
StingrayFrancoRetro.ca
StingrayGreatestHits.us
StingrayHipHop.us
StingrayHitList.ca
StingrayHotCountry.ca
StingrayJammin.ca
StingrayKidsStuff.ca
StingrayJazzNow.ca
StingrayJukeboxOldies.ca
StingrayLePalmarès.ca
StingrayMoussesMusique.ca
StingrayNature.ca
StingrayNostalgie.ca
StingrayPopAdult.ca
StingrayPopularClassical.ca
StingrayFlashback70s.ca
StingrayRememberthe80s.ca
StingrayRock.ca
StingrayAlternative.ca
StingraySmoothJazz.ca
StingraySoundsofSouthIndia.us
StingraySouvenirs.ca
StingrayTheAsianFlavour.us
StingrayTheBlues.ca
StingrayTheChillLounge.ca
StingrayChristianPopandRock.ca
StingrayTheSpa.ca
StingrayHip-Hop_RandB.ca
StingrayEasyListening.ca
CJON-NTV.ca
NBCWPTZ.us
CBSWIVB-EAST.ca
ABCWVNY.us
FOXWFFF.us
CPAC.ca
CPACFrench.ca
CanaldeAssembleeNationale.ca
AmiTV.ca
AMI-tele.ca
UnisTV.ca
tcftv.ca
APTN.ca
LeCanalNouvellesTVA.ca
LeCanalNouvellesTVA.ca
LeCanalNouvellesTVA.ca