diff --git a/.github/workflows/auto-update.yml b/.github/workflows/auto-update.yml index 604a7091..7b5cb28b 100644 --- a/.github/workflows/auto-update.yml +++ b/.github/workflows/auto-update.yml @@ -4,6 +4,21 @@ on: schedule: - cron: '0 0 * * *' jobs: + astro_com_my: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2.3.1 + - name: Install Dependencies + run: npm install + - name: Run EPG Grabber + run: npx epg-grabber --config=sites/astro.com.my.config.js + - name: Deploy to GitHub Pages + uses: JamesIves/github-pages-deploy-action@4.1.1 + with: + branch: gh-pages + folder: .gh-pages + clean: false comteco_com_bo: runs-on: ubuntu-latest steps: diff --git a/README.md b/README.md index 32b42df6..b67d223e 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,7 @@ To load a program guide, all you need to do is copy the link to one of the guide 🇮🇹 Italyhttps://iptv-org.github.io/epg/guides/guidatv.sky.it.guide.xml 🇮🇪 Irelandhttps://iptv-org.github.io/epg/guides/ontvtonight.com.guide.xml 🇰🇿 Kazakhstanhttps://iptv-org.github.io/epg/guides/tv.yandex.ru.guide.xml + 🇲🇾 Malaysiahttps://iptv-org.github.io/epg/guides/astro.com.my.guide.xml 🇲🇽 Mexicohttps://iptv-org.github.io/epg/guides/mi.tv.guide.xml 🇵🇾 Paraguayhttps://iptv-org.github.io/epg/guides/mi.tv.guide.xml 🇵🇪 Peruhttps://iptv-org.github.io/epg/guides/mi.tv.guide.xml diff --git a/sites/astro.com.my.channels.xml b/sites/astro.com.my.channels.xml new file mode 100755 index 00000000..364a39cb --- /dev/null +++ b/sites/astro.com.my.channels.xml @@ -0,0 +1,147 @@ + + + + 8TV + ABC Australia Asia + AXN East Asia + Adithya TV + Al Jazeera English + Animal Planet Southeast Asia + Animax Asia + Asian Food Network + Astro AEC + Astro AOD 311 + Astro AOD 352 + Astro AOD 353 + Astro AOD 354 + Astro AOD 355 + Astro Arena + Astro Aura + Astro Awani + Astro BollyOne HD + Astro Box Office Movies Tayangan Hebat + Astro Box Office Movies Thangathirai + Astro Ceria + Astro Citra + Astro Cricket + Astro Hua Hee Dai + Astro Oasis + Astro Prima + Astro Quan Jia HD + Astro Rania + Astro Ria + Astro Shuang Xing + Astro SuperSport + Astro SuperSport 2 + Astro SuperSport 3 + Astro SuperSport 4 + Astro TVIQ + Astro Tutor TV PT3 + Astro Tutor TV SPM + Astro Tutor TV UPSR + Astro UHD + Astro Vaanavil + Astro Vellithirai + Astro Vinmeen HD + Astro Warna + Astro Xiao Tai Yang + Awesome TV + BBC World News Asia Pacific + BabyTV Asia + Bernama TV + Bloomberg TV Asia + Boo + Boomerang South East Asia + CCTV-4 Asia + CGTN + CNA + CNBC Asia-Pacific + CNN International Asia Pacific + CTi TV Asia + Cartoon Network Asia + Celestial Classic Movies + Celestial Movies Malaysia + Chutti TV Malaysia + Cinemax Asia +1 + Colors TV + Colors Tamil + Crime & Investigation Asia + DMAX Southeast Asia + DW English + Discovery Asia + Discovery Channel Southeast Asia + Discovery Science Southeast Asia + Eurosport Asia + FX Asia +1 + Food Network Asia + Fox Action Movies +1 + Fox Asia + Fox Family Movies + Fox Life Malaysia + Fox Movies Asia +1 + Fox Sports 2 Malaysia + Fox Sports 3 Asia + Fox Sports Malaysia + France 24 English + Go Shop 111 + Go Shop 118 + Go Shop 303 + Go Shop Gaaya + Golf Channel Malaysia + HBO Malaysia + HGTV Asia + Hello + History Asia + Hits + Hits Movies +1 + K-Plus + KBS World + Kix + MTV South East Asia +1 + Makkal TV + NHK World Premium + NJOI TV + NTV7 + Nat Geo People Asia + National Geographic Asia + National Geographic Wild Asia + Naura + Nick Jr Asia + Nickelodeon South East Asia + Oh!K + One + Phoenix Chinese Channel + Phoenix InfoNews Channel + RugbyPass TV + Sky News UK + Star Chinese Channel + Star Vijay Malaysia + Sun Music + Sun TV + TA-DAA! + TLC Southeast Asia + TV Alhijrah + TV Okey + TV1 + TV2 + TV3 + TV9 + TVB Classic + TVB Entertainment News + TVB Jade Malaysia + TVB News + TVB Xing He + TVBS Asia + TVBS News + TVS + WWE Network +1 + Warner TV Southeast Asia + Zee Tamil Malaysia + beIn Sports Malaysia & Singapore + beIn Sports Max Malaysia & Singapore + eGG Network + iQIYI + tvN Movies + tvN Premium + + \ No newline at end of file diff --git a/sites/astro.com.my.config.js b/sites/astro.com.my.config.js new file mode 100644 index 00000000..96bd2f3b --- /dev/null +++ b/sites/astro.com.my.config.js @@ -0,0 +1,55 @@ +const dayjs = require('dayjs') +const utc = require('dayjs/plugin/utc') + +dayjs.extend(utc) + +module.exports = { + lang: 'ms', + site: 'astro.com.my', + channels: 'astro.com.my.channels.xml', + output: '.gh-pages/guides/astro.com.my.guide.xml', + request: { + timeout: 10000 + }, + url: function ({ date, channel }) { + return `http://ams-api.astro.com.my/ams/v3/getEvents?periodStart=${date.format( + 'YYYY-MM-DD' + )}:00:00:00&periodEnd=${date.format('YYYY-MM-DD')}:23:59:59&channelId=${channel.site_id}` + }, + logo: function ({ channel }) { + return `https://divign0fdw3sv.cloudfront.net/Images/ChannelLogo/contenthub/${channel.site_id}_144.png` + }, + parser: function ({ content }) { + const programs = [] + const data = JSON.parse(content) + const items = data.getevent + if (!items.length) return programs + + items.forEach(item => { + if (item.programmeTitle && item.displayDateTimeUtc && item.displayDuration) { + const start = dayjs.utc(item.displayDateTimeUtc) + const duration = parseDuration(item.displayDuration) + const stop = start.add(duration, 's') + programs.push({ + title: item.programmeTitle, + description: item.shortSynopsis, + category: item.subGenre, + icon: item.epgEventImage, + start: start.toString(), + stop: stop.toString() + }) + } + }) + + return programs + } +} + +function parseDuration(duration) { + const match = duration.match(/(\d{2}):(\d{2}):(\d{2})/) + const hours = parseInt(match[1]) + const minutes = parseInt(match[2]) + const seconds = parseInt(match[3]) + + return hours * 3600 + minutes * 60 + seconds +}