diff --git a/sites/tvmi.mt/__data__/content.html b/sites/tvmi.mt/__data__/content.html new file mode 100644 index 00000000..2295b993 --- /dev/null +++ b/sites/tvmi.mt/__data__/content.html @@ -0,0 +1,1342 @@ + + + + + + + + + + + + + + + + + + + + + + + + L-Iskeda ta' TVM - TVMi.mt + + + + + + + + + + + + + + +
+ + + +
+ +
+ + +
+

L-Iskeda ta' TVM

+

Il-Ġimgħa, 28 ta' Ottubru 2022

+
+ +
+
+ TVM +
+ + TVMnews+ + + + TVMsport+ + + + Magic 91.7 + + + Radju Malta + + + Radju Malta 2 + +
+ +
+
+
+
+
+
ĠIM
+
21
+
+
+
+
+
SIB
+
22
+
+
+
+
+
ĦAD
+
23
+
+
+
+
+
TNE
+
24
+
+
+
+
+
TLI
+
25
+
+
+
+
+
ERB
+
26
+
+
+
+
+
ĦAM
+
27
+
+
+
+
+
ILLUM
+
28
+
+
+
+
+
SIB
+
29
+
+
+
+
+
ĦAD
+
30
+
+
+
+
+
TNE
+
31
+
+
+
+
+
TLI
+
01
+
+
+
+
+
ERB
+
02
+
+
+
+
+
ĦAM
+
03
+
+
+
+
+
ĠIM
+
04
+
+
+
+
+
+
+ +
+
+ + +
+ +
+
+
+
+ +
+ +
+
+ 05:30 +
+
+
+ Bizzilla +
+ +
Storja ta’ tliet familji, tnejn minnhom miżżewġin bejniethom, u familja oħra li għalkemm mhijiex, b’daqshekk ma jfissirx li mhijiex parti ntegrali fil-kompliċitá li ilha għaddejja bejniethom għal dawn l-aħħar tletin sena.
+ +
+
+ +
+ +
+ + +
+ +
+
+
+
+ +
+ +
+
+ 06:30 +
+
+
+ TVAM +
+ +
Il-programm ta’ filgħodu b’informazzjoni utli u varjata għall-bidu tal-ġurnata tiegħek.
+ +
+
+ +
+
+ + +
+ +
+
+
+
+ +
+ +
+
+ 06:40 +
+
+
+ FITkids +
+ +
Iħeġġeġ it-tfal jagħmlu l-eżerċizzju fiżiku b’mod li jieħdu gost jagħmluh u fl-istess ħin jitgħallmu l-benefiċċju tiegħu.
+ +
+
+ +
+
+ + +
+ +
+
+
+
+ +
+ +
+
+ 07:00 +
+
+
+ L-Aħbarijiet +
+ +
Aġġornamenti tal-aħbarijiet matul il-ġurnata
+ +
+
+ +
+
+ + +
+ +
+
+
+
+ +
+ +
+
+ 07:25 +
+
+
+ FITam - Yoga/Pilates/Thai Chi +
+ +
Eżerċizzji żgħar li jieħdu biss ftit tal-ħin biex jitlestew imma fl-istess ħin iservu ta’ benefiċċju għas-saħħa holistika tal-individwu.
+ +
+
+ +
+
+ + +
+ +
+
+
+
+ +
+ +
+
+ 07:40 +
+
+
+ FITam - Isolated Workouts +
+ +
Eżerċizzji żgħar li jieħdu biss ftit tal-ħin biex jitlestew imma fl-istess ħin iservu ta’ benefiċċju għas-saħħa holistika tal-individwu.
+ +
+
+ +
+
+ + +
+ +
+
+
+
+ +
+ +
+
+ 08:00 +
+
+
+ L-Aħbarijiet +
+ +
Aġġornamenti tal-aħbarijiet matul il-ġurnata
+ +
+
+ +
+
+ + +
+ +
+
+
+
+ +
+ +
+
+ 08:40 +
+
+
+ FITam - Full Body Workout +
+ +
Eżerċizzji żgħar li jieħdu biss ftit tal-ħin biex jitlestew imma fl-istess ħin iservu ta’ benefiċċju għas-saħħa holistika tal-individwu.
+ +
+
+ +
+
+ + +
+ +
+
+
+
+ +
+ +
+
+ 09:00 +
+
+
+ L-Aħbarijiet +
+ +
Aġġornamenti tal-aħbarijiet matul il-ġurnata
+ +
+
+ +
+
+ + +
+ +
+
+
+
+ +
+ +
+
+ 09:15 +
+
+
+ Tgħid X'inhu +
+ +
Tgħid x’inhu? jippreżenta diversi oġġetti u artifatti misterjużi u interessanti misjuba f'mużewijiet u f’postijiet ta’ interess varji bl-għan li jiskopri l-istorja tagħhom kif ukoll xi fatti kurjużi dwarhom.
+ +
+
+ +
+
+ + +
+ +
+
+
+
+ +
+ +
+
+ 09:30 +
+
+
+ Quddies +
+ +
Il-Quddiesa mill-Ħadd sal-Ġimgħa Xandira diretta.
+ +
+
+ +
+
+ + +
+ +
+
+
+
+ +
+ +
+
+ 10:00 +
+
+
+ Għaddi s'Hawn +
+ +
Programm immirat għall-familja kollha, b’laqtiet umoristiċi, kompetizzjonijiet, mużika, intervisti, irkejjen edukattivi u ħafna sorpriżi oħra.
+ +
+
+ +
+
+ + +
+ +
+
+
+
+ +
+ +
+
+ 11:45 +
+
+
+ Ilsienna fil-Qosor +
+ +
Sensiela ta’ irkejjen dwar il-lingwa Maltija b’intervisti mal-Maltin kif ukoll esperti f’oqsma differenti tal-Malti
+ +
+
+ +
+
+ + +
+ +
+
+
+
+ +
+ +
+
+ 12:00 +
+
+
+ L-Aħbarijiet +
+ +
Aġġornamenti tal-aħbarijiet matul il-ġurnata
+ +
+
+ +
+
+ + +
+ +
+
+
+
+ +
+ +
+
+ 12:15 +
+
+
+ Niskata +
+ +
Garanzija ta’ divertiment u ftit ħin ta’ rilassament għall-udjenza tiegħu permezz ta' diskussjonijiet u pariri varji
+ +
+
+ +
+
+ + +
+ +
+
+
+
+ +
+ +
+
+ 14:30 +
+
+
+ Naqraw Flimkien +
+ +
Naqraw Flimkien hu programm televiżiv immirat għal tfal ta’ bejn it-3 snin u l-11 il-sena. Matul din is-sensiela televiżiva se jinqraw kotba b’mod interattiv fejn it-tfal jiġu motivati sabiex jitħeġġu jaqraw aktar.
+ +
+
+ +
+
+ + +
+ +
+
+
+
+ +
+ +
+
+ 14:35 +
+
+
+ The Adventures of Puss in Boots +
+ + +
+
+ +
+
+ + +
+ +
+
+
+
+ +
+ +
+
+ 15:05 +
+
+
+ FITkids +
+ +
Iħeġġeġ it-tfal jagħmlu l-eżerċizzju fiżiku b’mod li jieħdu gost jagħmluh u fl-istess ħin jitgħallmu l-benefiċċju tiegħu.
+ +
+
+ +
+
+ + + + +
+
+
+ Play +
+
+
+ +
+ +
+
+ 15:15 +
+
+
+ Action + • Tools to Produce a TV Show +
+ +
Programm għat-tfal dwar l-industrija tal-media u l-films bl-ewwel preżentatur bid-Down syndrome fuq it-televiżjoni Maltija.
+ +
+
+ +
+
+ + +
+ +
+
+
+
+ +
+ +
+
+ 15:25 +
+
+
+ Edukattivi +
+ +
Programm ta’ kompetizzjoni għaż-żgħażagħ b'attivitajiet varjati.
+ +
+
+ +
+
+ + +
+ +
+
+
+
+ +
+ +
+
+ 15:40 +
+
+
+ Maltarti +
+ +
Programm ta’ kuljum li jesplora, jiddiskuti u fuq kollox jiċċelebra x-xena kulturali fil-gżejjer Maltin.
+ +
+
+ +
+
+ + +
+ +
+
+
+
+ +
+ +
+
+ 15:45 +
+
+
+ Bizzilla +
+ +
Ana marret fl-uffiċċju ta’ Max biex tara jekk kellhomx xi aħbarijiet fuq Maria... għaliex insista magħha biex ma tinkwetax?... u għaliex ma kienx qalilha li Maria kienet marret għandu wara li kienet keċċietha hi? Eliza ppruvat tkellem lil Rokku iżda dan kien tassew irrabjat magħha għaliex ħassu użat minnha... x’qaltlu dwar Eric u Lorna? Mark insista ma’ Lorna biex tgħidlu għaliex kienet marret taħdem magħhom... x’qaltlu? Mark u Eliza rċevew vidjow... x’kien fih?... min bagħtu?... u għaliex beżgħu meta rawh?
+ +
+
+ +
+
+ + +
+ +
+
+
+
+ +
+ +
+
+ 16:25 +
+
+
+ Ġnien il-Mistrieħ +
+ +
Ġnien il-mistrieħ se jeħodkom f’post sagru, post li fih hemm jistrieħu fis-sliem mijiet ta’ eluf ta’ Maltin u barranin li ġew midfuna f’dan il-post li nbena fuq l-Għolja tal-Ħorr fuq pjanta tal-Perit Galizia.
+ +
+
+ +
+
+ + +
+ +
+
+
+
+ +
+ +
+
+ 16:30 +
+
+
+ Illum ma' Steph +
+ +
Magazine programme b’taħlita ta’ mistednin ġodda flimkien ma’ oħrajn li diġa nafu b’diskussjoni dwar diversi temi.
+ +
+
+ +
+
+ + +
+ +
+
+
+
+ +
+ +
+
+ 18:15 +
+
+
+ Ron De Vu +
+ +
Programm ta’ divertiment li fih jiltaqgħu in-nies, b’diversi logħob, intervisti divertenti u mużika, bi preżentazzjoni ta' Ron u Jacqui Losco
+ +
+
+ +
+
+ + +
+ +
+
+
+
+ +
+ +
+
+ 18:45 +
+
+
+ Moħħok Hemm +
+ +
Il-parteċipanti lesti li jisfidaw kompetituri oħra u se jieħdu l-opportunita’ sabiex jaqsmu mat-telespettaturi it-talenti tagħhom.
+ +
+
+ +
+
+ + + + +
+
+
+ Play +
+
+
+ +
+ +
+
+ 19:15 +
+
+
+ Kelma Kuljum +
+ +
Xi tfisser din il-kelma u minn fejn ġejja?
+ +
+
+ +
+
+ + +
+ +
+
+
+
+ +
+ +
+
+ 19:30 +
+
+
+ Ninvestigaw x'qed Nieklu +
+ +
Informazzjoni dwar l-ikel li nikkunsmaw, b’diskussjoni ma’ xjentisti, ekonomisti u storiċi fost oħrajn.
+ +
+
+ +
+
+ + +
+ +
+
+
+
+ +
+ +
+
+ 19:40 +
+
+
+ Ben & Co +
+ +
Ben Camille & Co fih taħlita diversa ta’ mistednin, li kull ġimgħa se jilagħbu logħob differenti. Irilassa u gawdi ftit minuti ta’ divertiment, daħk u good vibes eżatt qabel l-aħbarijiet tat-8pm.
+ +
+
+ +
+
+ + +
+ +
+
+
+
+ +
+ +
+
+ 19:47 +
+
+
+ Lil Hinn miż-Żmien +
+ +
Lil Hinn Miż-Żmien jieħu lit-telespettaturi fuq vjaġġ artistiku b’varjetà ta’ arti minn diversi epoki.
+ +
+
+ +
+
+ + +
+ +
+
+
+
+ +
+ +
+
+ 20:00 +
+
+
+ L-Aħbarijiet tat-8pm +
+ +
L-Aħbarijiet ta' Television Malta bl-aħħar aġġornament dwar dak li qiegħed jiġri fil-gżejjer Maltin u lil hinn minn xtutna.
+ +
+
+ +
+
+ + +
+ +
+
+
+
+ +
+ +
+
+ 20:55 +
+
+
+ Ron De Vu Xorts +
+ + +
+
+ +
+
+ + +
+ +
+
+
+
+ +
+ +
+
+ 21:00 +
+
+
+ The Voice Kids +
+ +
Jagħti t-tfal ta' bejn it-8 snin u l-14 -il sena l-opportunità li jkantaw u jiġu ġġudikati minn ġurija magħmula minn Gianluca Bezzina,Destiny u Owen Luellen
+ +
+
+ +
+
+ + +
+ +
+
+
+
+ +
+ +
+
+ 22:45 +
+
+
+ Luxdesign +
+ +
Luxdesign il-programm għal min iħobb id-djar, b’ideat dwar kif jistgħu jieħdu ħsieb djarhom u jirranġawhom.
+ +
+
+ +
+
+ +
+ +
+ IXXERJA + + + +
+ + + + + + + + +
+ + + +
+ + + + + + + + + diff --git a/sites/tvmi.mt/tvmi.mt.config.js b/sites/tvmi.mt/tvmi.mt.config.js index 561deb15..ce32316f 100644 --- a/sites/tvmi.mt/tvmi.mt.config.js +++ b/sites/tvmi.mt/tvmi.mt.config.js @@ -8,20 +8,30 @@ dayjs.extend(timezone) module.exports = { site: 'tvmi.mt', - url: function ({ date }) { - return `https://www.tvmi.mt/mt/tvmi/skeda/?sd-date=${date.format('YYYY-MM-DD')}` + url: function ({ date, channel }) { + return `https://tvmi.mt/schedule/${channel.site_id}/${date.format('YYYY-MM-DD')}` }, - parser: function ({ content, channel, date }) { + parser: function ({ content, date }) { let programs = [] - const items = parseItems(content, channel) + const items = parseItems(content) items.forEach(item => { const $item = cheerio.load(item) + const prev = programs[programs.length - 1] + let start = parseStart($item, date) + if (prev) { + if (start.isBefore(prev.start)) { + start = start.add(1, 'd') + date = date.add(1, 'd') + } + prev.stop = start + } + const stop = start.add(30, 'm') programs.push({ title: parseTitle($item), description: parseDescription($item), icon: parseIcon($item), - start: parseStart($item, date), - stop: parseStop($item, date) + start, + stop }) }) @@ -30,41 +40,37 @@ module.exports = { } function parseTitle($item) { - return $item('.programme-title').text().trim() + return $item('div > div:nth-child(2) > div:nth-child(2),a > div:nth-child(2) > div:nth-child(2)') + .text() + .trim() } function parseDescription($item) { - return $item('.description').text().trim() + return $item('div > div:nth-child(2) > div:nth-child(3),a > div:nth-child(2) > div:nth-child(3)') + .text() + .trim() } function parseIcon($item) { - return $item('.image').attr('src') + const bg = $item('div > div:nth-child(1) > div > div,a > div:nth-child(1) > div').data('bg') + + return bg ? `https:${bg}` : null } function parseStart($item, date) { - const times = $item('.title-time > .times').text().trim() - const [_, HH, mm] = times.match(/^(\d{2}):(\d{2}) \-/) || [null, null, null] + const timeString = $item( + 'div > div:nth-child(2) > div:nth-child(1),a > div:nth-child(2) > div:nth-child(1)' + ) + .text() + .trim() + const [_, HH, mm] = timeString.match(/^(\d{2}):(\d{2})/) || [null, null, null] if (!HH || !mm) return null return dayjs.tz(`${date.format('YYYY-MM-DD')} ${HH}:${mm}`, 'YYYY-MM-DD HH:mm', 'Europe/Malta') } -function parseStop($item, date) { - const times = $item('.title-time > .times').text().trim() - const [_, HH, mm] = times.match(/\- (\d{2}):(\d{2})$/) || [null, null, null] - if (!HH || !mm) return null - - return dayjs.tz(`${date.format('YYYY-MM-DD')} ${HH}:${mm}`, 'YYYY-MM-DD HH:mm', 'Europe/Malta') -} - -function parseItems(content, channel) { +function parseItems(content) { const $ = cheerio.load(content) - const channelSchedules = $( - '#content > div.schedule > div.content > div.schedule-bottom > div.schedules > .channel-schedule' - ).toArray() - if (!Array.isArray(channelSchedules)) return [] - const index = parseInt(channel.site_id) - 1 - if (!channelSchedules[index]) return [] - return $(channelSchedules[index], '.programmes').find('.remodal').toArray() + return $('body > main > div.mt-8 > div').toArray() } diff --git a/sites/tvmi.mt/tvmi.mt.test.js b/sites/tvmi.mt/tvmi.mt.test.js index 966a546d..af0c2b46 100644 --- a/sites/tvmi.mt/tvmi.mt.test.js +++ b/sites/tvmi.mt/tvmi.mt.test.js @@ -1,48 +1,47 @@ // npx epg-grabber --config=sites/tvmi.mt/tvmi.mt.config.js --channels=sites/tvmi.mt/tvmi.mt_mt.channels.xml --output=guide.xml --days=2 const { parser, url } = require('./tvmi.mt.config.js') +const fs = require('fs') +const path = require('path') const dayjs = require('dayjs') const utc = require('dayjs/plugin/utc') const customParseFormat = require('dayjs/plugin/customParseFormat') dayjs.extend(customParseFormat) dayjs.extend(utc) -const date = dayjs.utc('2022-04-21', 'YYYY-MM-DD').startOf('d') +const date = dayjs.utc('2022-10-29', 'YYYY-MM-DD').startOf('d') const channel = { - site_id: '1', + site_id: '2', xmltv_id: 'TVM.mt' } it('can generate valid url', () => { - expect(url({ date })).toBe('https://www.tvmi.mt/mt/tvmi/skeda/?sd-date=2022-04-21') + expect(url({ date, channel })).toBe('https://tvmi.mt/schedule/2/2022-10-29') }) it('can parse response', () => { - const content = `

Sorelle – It-Tielet Staġun

06:30 - 07:00

Fit-tielet staġun ta’ Sorelle se naraw lill-aħwa, flimkien ma’ dawk kollha li sofrew taħt idejn Leo, inklużi martu Bella u bintu Janice, ikomplu jagħmlu minn kollox biex jeħilsu darba għal dejjem minnu. Il-fatti se juruna li dan mhu se jkun faċli xejn għax Leo għandu għeruq fil-fond u għalhekk għad baqagħlu ħafna sorpriżi għalihom ilkoll. Dan waqt li flimkien ikomplu jaraw kif jesponu lil dawk li b’xi mod jew ieħor ikun qed jirnexxilhom jaħarbu mill-awtoritajiet.

Ta’ Filgħodu

07:00 - 09:00

Ta' Filgħodu se jkun qed jibda jum ġdid fuq nota pożittiva; b'informazzjoni u aġġornamenti regolari dwar it-traffiku, it-temp u l-ewwel faċċati tal-gazzetti mal-ewwel tazza cafè. Dan iwassalna biex flimkien ma’ Ray Attard niltaqgħu mal-protagonisti li minn wara l-kwinti jkunu qed jagħmlu l-ġurnata ta’ kulħadd waħda isbaħ fl-oqsma rispettivi tagħhom. Ta' Filgħodu se jkun kurrenti imma din id-darba minn angoli oħra ta’ interess, li bis-sewwa se jkunu qed jgħarrfu lit-telespettaturi b'dak kollu li jkun qed jiġri madwarna. Preżentazzjoni ta’ Ray Attard.

` - const result = parser({ content, channel, date }).map(p => { + const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.html')) + const results = parser({ content, date }).map(p => { p.start = p.start.toJSON() p.stop = p.stop.toJSON() return p }) - expect(result).toMatchObject([ - { - start: '2022-04-21T04:30:00.000Z', - stop: '2022-04-21T05:00:00.000Z', - title: 'Sorelle – It-Tielet Staġun', - description: - 'Fit-tielet staġun ta’ Sorelle se naraw lill-aħwa, flimkien ma’ dawk kollha li sofrew taħt idejn Leo, inklużi martu Bella u bintu Janice, ikomplu jagħmlu minn kollox biex jeħilsu darba għal dejjem minnu. Il-fatti se juruna li dan mhu se jkun faċli xejn għax Leo għandu għeruq fil-fond u għalhekk għad baqagħlu ħafna sorpriżi għalihom ilkoll. Dan waqt li flimkien ikomplu jaraw kif jesponu lil dawk li b’xi mod jew ieħor ikun qed jirnexxilhom jaħarbu mill-awtoritajiet.', - icon: 'https://www.tvmi.mt/mt/wp-content/uploads/sites/1/2019/09/pink-leather-11-for-Airing.png' - }, - { - start: '2022-04-21T05:00:00.000Z', - stop: '2022-04-21T07:00:00.000Z', - title: 'Ta’ Filgħodu', - description: - "Ta' Filgħodu se jkun qed jibda jum ġdid fuq nota pożittiva; b'informazzjoni u aġġornamenti regolari dwar it-traffiku, it-temp u l-ewwel faċċati tal-gazzetti mal-ewwel tazza cafè. Dan iwassalna biex flimkien ma’ Ray Attard niltaqgħu mal-protagonisti li minn wara l-kwinti jkunu qed jagħmlu l-ġurnata ta’ kulħadd waħda isbaħ fl-oqsma rispettivi tagħhom. Ta' Filgħodu se jkun kurrenti imma din id-darba minn angoli oħra ta’ interess, li bis-sewwa se jkunu qed jgħarrfu lit-telespettaturi b'dak kollu li jkun qed jiġri madwarna. Preżentazzjoni ta’ Ray Attard.", - icon: 'https://www.tvmi.mt/mt/wp-content/uploads/sites/1/2021/09/ta-Filghodu-02.jpeg' - } - ]) + expect(results[0]).toMatchObject({ + start: '2022-10-29T03:30:00.000Z', + stop: '2022-10-29T04:00:00.000Z', + title: 'Bizzilla', + description: + 'Storja ta’ tliet familji, tnejn minnhom miżżewġin bejniethom, u familja oħra li għalkemm mhijiex, b’daqshekk ma jfissirx li mhijiex parti ntegrali fil-kompliċitá li ilha għaddejja bejniethom għal dawn l-aħħar tletin sena.', + icon: 'https://dist4.tvmi.mt/eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjMyNjEwNywiYXVkIjoiMTg4LjI0Mi40OC45MyIsImV4cCI6MTY2NzAxNjM1OH0.N4de761te_pRvWwSUnF6httRAzdukup5syejwXTUv8g/vod/663927/image.jpg' + }) + + expect(results[1]).toMatchObject({ + start: '2022-10-29T04:00:00.000Z', + stop: '2022-10-29T04:30:00.000Z', + title: 'The Adventures of Puss in Boots', + icon: 'https://dist4.tvmi.mt/eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjMyNjEwNywiYXVkIjoiMTg4LjI0Mi40OC45MyIsImV4cCI6MTY2NzAxNjM1OH0.N4de761te_pRvWwSUnF6httRAzdukup5syejwXTUv8g/vod/747336/image.jpg' + }) }) it('can handle empty guide', () => { diff --git a/sites/tvmi.mt/tvmi.mt_mt.channels.xml b/sites/tvmi.mt/tvmi.mt_mt.channels.xml index 97d83be8..5e39d478 100644 --- a/sites/tvmi.mt/tvmi.mt_mt.channels.xml +++ b/sites/tvmi.mt/tvmi.mt_mt.channels.xml @@ -1,7 +1,8 @@ - TVM - TVMNews+ + TVM + TVMnews+ + TVMsport+