commit ae5a7f2c1251a5a220bb05520bc5cf01cfbe9129 Author: Nicolas Date: Tue Jun 10 15:57:49 2025 -0400 initial commit diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..cff8233 --- /dev/null +++ b/Dockerfile @@ -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"] \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..c49f2c6 --- /dev/null +++ b/README.md @@ -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 '' > 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 --> ??? \ No newline at end of file diff --git a/xml_cleaner.sh b/xml_cleaner.sh new file mode 100644 index 0000000..035cd51 --- /dev/null +++ b/xml_cleaner.sh @@ -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 '' + 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 '' +} > "$output" diff --git a/xml_tv_ids.txt b/xml_tv_ids.txt new file mode 100644 index 0000000..add4160 --- /dev/null +++ b/xml_tv_ids.txt @@ -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