diff --git a/sites/rtb.gov.bn/__data__/Aneka 11 November 2021.pdf b/sites/rtb.gov.bn/__data__/Aneka 11 November 2021.pdf deleted file mode 100644 index 46175820..00000000 Binary files a/sites/rtb.gov.bn/__data__/Aneka 11 November 2021.pdf and /dev/null differ diff --git a/sites/rtb.gov.bn/__data__/Sukmaindera 11 November 2021.pdf b/sites/rtb.gov.bn/__data__/Sukmaindera 11 November 2021.pdf deleted file mode 100644 index fb20faf6..00000000 Binary files a/sites/rtb.gov.bn/__data__/Sukmaindera 11 November 2021.pdf and /dev/null differ diff --git a/sites/rtb.gov.bn/readme.md b/sites/rtb.gov.bn/readme.md deleted file mode 100644 index 4643d8a7..00000000 --- a/sites/rtb.gov.bn/readme.md +++ /dev/null @@ -1,15 +0,0 @@ -# rtb.gov.bn - -https://www.rtb.gov.bn/SitePages/Programme%20Guide.aspx - -### Download the guide - -```sh -npm run grab --- --site=rtb.gov.bn -``` - -### Test - -```sh -npm test --- rtb.gov.bn -``` diff --git a/sites/rtb.gov.bn/rtb.gov.bn.channels.xml b/sites/rtb.gov.bn/rtb.gov.bn.channels.xml deleted file mode 100644 index 1b0d0eed..00000000 --- a/sites/rtb.gov.bn/rtb.gov.bn.channels.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - RTB Aneka - RTB Perdana - RTB Sukmaindera - \ No newline at end of file diff --git a/sites/rtb.gov.bn/rtb.gov.bn.config.js b/sites/rtb.gov.bn/rtb.gov.bn.config.js deleted file mode 100644 index 5a4239eb..00000000 --- a/sites/rtb.gov.bn/rtb.gov.bn.config.js +++ /dev/null @@ -1,74 +0,0 @@ -const pdf = require('pdf-parse') -const dayjs = require('dayjs') -const utc = require('dayjs/plugin/utc') -const timezone = require('dayjs/plugin/timezone') -const customParseFormat = require('dayjs/plugin/customParseFormat') - -dayjs.extend(utc) -dayjs.extend(timezone) -dayjs.extend(customParseFormat) - -module.exports = { - site: 'rtb.gov.bn', - days: 2, - url: function ({ channel, date }) { - return encodeURI( - `http://www.rtb.gov.bn/PublishingImages/SitePages/Programme Guide/${ - channel.site_id - } ${date.format('DD MMMM YYYY')}.pdf` - ) - }, - parser: async function ({ buffer, date }) { - let programs = [] - const items = await parseItems(buffer) - items.forEach(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(1, 'h') - programs.push({ - title: item.title, - start, - stop - }) - }) - - return programs - } -} - -function parseStart(item, date) { - const dateString = `${date.format('YYYY-MM-DD')} ${item.time}` - - return dayjs.tz(dateString, 'YYYY-MM-DD HH:mm', 'Asia/Brunei') -} - -async function parseItems(buffer) { - let data - try { - data = await pdf(buffer) - } catch { - return [] - } - - if (!data) return [] - - return data.text - .split('\n') - .filter(s => { - const string = s.trim() - - return string && /^\d{2}:\d{2}/.test(string) - }) - .map(s => { - const [, time, title] = s.trim().match(/^(\d{2}:\d{2}) (.*)/) || [null, null, null] - - return { time, title } - }) -} diff --git a/sites/rtb.gov.bn/rtb.gov.bn.test.js b/sites/rtb.gov.bn/rtb.gov.bn.test.js deleted file mode 100644 index 544b483b..00000000 --- a/sites/rtb.gov.bn/rtb.gov.bn.test.js +++ /dev/null @@ -1,94 +0,0 @@ -const { parser, url } = require('./rtb.gov.bn.config.js') -const path = require('path') -const fs = require('fs') -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('2021-11-11', 'YYYY-MM-DD').startOf('d') -const channel = { - site_id: 'Sukmaindera', - xmltv_id: 'RTBSukmaindera.bn' -} - -it('can generate valid url', () => { - expect(url({ channel, date })).toBe( - 'http://www.rtb.gov.bn/PublishingImages/SitePages/Programme%20Guide/Sukmaindera%2011%20November%202021.pdf' - ) -}) - -it('can parse Sukmaindera 11 November 2021.pdf', done => { - const buffer = fs.readFileSync( - path.resolve(__dirname, '__data__/Sukmaindera 11 November 2021.pdf'), - { - charset: 'utf8' - } - ) - parser({ buffer, date }) - .then(results => { - results = results.map(p => { - p.start = p.start.toJSON() - p.stop = p.stop.toJSON() - return p - }) - expect(results.length).toBe(47) - expect(results[0]).toMatchObject({ - start: '2021-11-10T22:00:00.000Z', - stop: '2021-11-10T22:05:00.000Z', - title: 'NATIONAL ANTHEM' - }) - expect(results[46]).toMatchObject({ - start: '2021-11-11T21:30:00.000Z', - stop: '2021-11-11T22:30:00.000Z', - title: 'BACAAN SURAH YASSIN' - }) - done() - }) - .catch(error => { - done(error) - }) -}) - -it('can parse Aneka 11 November 2021.pdf', done => { - const buffer = fs.readFileSync(path.resolve(__dirname, '__data__/Aneka 11 November 2021.pdf'), { - charset: 'utf8' - }) - parser({ buffer, date }) - .then(results => { - results = results.map(p => { - p.start = p.start.toJSON() - p.stop = p.stop.toJSON() - return p - }) - expect(results.length).toBe(26) - expect(results[4]).toMatchObject({ - start: '2021-11-11T03:00:00.000Z', - stop: '2021-11-11T04:05:00.000Z', - title: 'DRAMA TURKI:' - }) - done() - }) - .catch(error => { - done(error) - }) -}) - -it('can handle empty guide', done => { - parser({ - date, - channel, - content: `Object moved -

Object moved to here.

- -` - }) - .then(result => { - expect(result).toMatchObject([]) - done() - }) - .catch(error => { - done(error) - }) -})