diff --git a/sites/rev.bs/readme.md b/sites/rev.bs/readme.md deleted file mode 100644 index 370c3bb1..00000000 --- a/sites/rev.bs/readme.md +++ /dev/null @@ -1,15 +0,0 @@ -# rev.bs - -https://www.rev.bs/ - -### Download the guide - -```sh -npm run grab --- --site=rev.bs -``` - -### Test - -```sh -npm test --- rev.bs -``` diff --git a/sites/rev.bs/rev.bs.channels.xml b/sites/rev.bs/rev.bs.channels.xml deleted file mode 100644 index ecf78acc..00000000 --- a/sites/rev.bs/rev.bs.channels.xml +++ /dev/null @@ -1,183 +0,0 @@ - - - Me TV - 3ABN English - A&E East - Aljazeera English - AMC East - Animal Planet East - Ant1 Satellite - AWE - AXS TV - BabyFirst TV - BBC America East - BBC World News Americas - BCN TV - BET East - BET Gospel - BET Her East - BET Jams - BET Soul - Big Ten Network - Bloomberg TV US - Boomerang US - Bounce - Bravo - Cala Classics - Cala Weather - CaribVision - Cartoon Network East - CBC Toronto - CCTV 4 America - CCTV 9 - CTV Toronto - TVO - Cinemax East - Citytv Toronto - CMT Music - CNBC US - CNN USA - CNN International Latin America - Comedy Central East - Comedy TV - Cooking Channel - Court TV Mystery - Curiosity Channel - Daystar TV - Discovery Channel East - Discovery Home & Health - Discovery Kids - Discovery Science - Discovery Theater - Discovery Turbo - Disney Channel East - Disney Junior East - Disney XD East - DIY Network - DW English - E! East - ESPN 2 Caribbean - ESPN Caribbean - ESPNU - Es TV - Eurochannel - EuroNews English - EWTN US - Fight Network - Food Network East - Fox Business - Fox News Channel - Fox Soccer Plus - FS2 - Fox Sports Racing - FX East - FYI East - Game+ - Game Show Network East - Golf Channel US - Gone Viral Music - Gone Viral TV - Gone Viral Vogue - Gone Viral X-treme - Grit - HBO 2 - HBO East - HBO Family Latinoamérica - HBO + Latinoamérica - HBO Pop Latinoamérica - HBO Xtreme Latinoamérica - HGTV East - History East - HLN - Hope Channel North America - Impact Network - Inspiration TV - Investigation Discovery East - ION Plus East - ION TV East - I-Sat - Island Luck TV - Island TV - JCN Channel 14 - Jewelry TV - Justice Central TV - FOX (KAYU) Spokane, WA - CBS (KIRO) Seattle, WA - KTLA Los Angeles, CA - ABC (KTVX) Salt Lake City, UT - Law & Crime - Lifetime East - Lifetime Movies East - Lifetime Real Women - MavTV - MLB Network - Movies! - MSNBC - MTV 2 East - MTV East - My Destination TV - National Geographic East - National Geographic Wild - NBA TV - NBCSN - NFL Network - Nickelodeon East - NickMusic US - One America News Network - One Caribbean TV - Our TV - Outdoor Channel - Oprah Winfrey Network East - Paramount Network East - PBS Kids - Pursuit Channel - Quest UK - Rai Italia Nord America - Recipe TV - Revolt - SEC Network - Space México - SportsMax - SportsMax 2 - Star Action - Star Cinema - Star Classics - Star Comedy - Star Fun - Star Hits - Star Series - Syfy Panregional - TBN US - TBS East - TCM - TeenNick East - Tele Pacific - Tempo Networks - The Africa Channel - The Parliamentary Channel - The Weather Channel - The Word Network - TLC East - TNT East - Travel Channel East - Treehouse TV - Tru TV East - TSN 1 - TV5Monde États-Unis - TV One - Univisión Este - VH1 East - Vice East - Warner Channel Panregional - CBS (WFOR) Miami, FL - WGN-TV - PBS (WPBT) Miami, FL - WPIX-TV - ABC (WPLG) Miami, FL - NBC (WPTV) West Palm Beach, FL - FOX (WSVN) Miami, FL - NBC (WTVJ) Miami, FL - MyNetworkTV (WWOR) New York, NY - YTV - ZNS TV - diff --git a/sites/rev.bs/rev.bs.config.js b/sites/rev.bs/rev.bs.config.js deleted file mode 100644 index c956fd1c..00000000 --- a/sites/rev.bs/rev.bs.config.js +++ /dev/null @@ -1,68 +0,0 @@ -const _ = require('lodash') -const axios = require('axios') -const dayjs = require('dayjs') -const utc = require('dayjs/plugin/utc') -const timezone = require('dayjs/plugin/timezone') - -dayjs.extend(utc) -dayjs.extend(timezone) - -module.exports = { - site: 'rev.bs', - days: 2, - url: function ({ date }) { - return `https://www.rev.bs/wp-content/uploads/tv-guide/${date.format('YYYY-MM-DD')}_0.json` - }, - parser: async function ({ content, channel, date }) { - const programs = [] - const items0 = parseItems(content, channel) - if (!items0.length) return programs - const items1 = parseItems(await loadNextItems(date, 1), channel) - const items2 = parseItems(await loadNextItems(date, 2), channel) - const items3 = parseItems(await loadNextItems(date, 3), channel) - const items = _.unionBy(items0, items1, items2, items3, 'sid') - items.forEach(item => { - const start = parseStart(item, date) - const stop = start.add(item.duration, 'm') - programs.push({ - title: item.title, - start, - stop - }) - }) - - return programs - } -} - -async function loadNextItems(date, index) { - const url = `https://www.rev.bs/wp-content/uploads/tv-guide/${date.format( - 'YYYY-MM-DD' - )}_${index}.json` - - return axios - .get(url, { - responseType: 'arraybuffer' - }) - .then(res => res.data.toString()) - .catch(console.log) -} - -function parseStart(item, date) { - const shift = parseInt(item.s) - - return dayjs.tz(date.add(shift, 'm').toString(), 'America/New_York') -} - -function parseItems(content, channel) { - let data - try { - data = JSON.parse(content) - } catch { - return [] - } - - if (!data || data.status !== 'OK') return [] - - return data.data.schedule[channel.site_id] || [] -} diff --git a/sites/rev.bs/rev.bs.test.js b/sites/rev.bs/rev.bs.test.js deleted file mode 100644 index d96e6d9a..00000000 --- a/sites/rev.bs/rev.bs.test.js +++ /dev/null @@ -1,80 +0,0 @@ -const { parser, url } = require('./rev.bs.config.js') -const axios = require('axios') -const dayjs = require('dayjs') -const utc = require('dayjs/plugin/utc') -const customParseFormat = require('dayjs/plugin/customParseFormat') - -dayjs.extend(customParseFormat) -dayjs.extend(utc) - -jest.mock('axios') - -const date = dayjs.utc('2021-11-21', 'YYYY-MM-DD').startOf('d') -const channel = { - site_id: '206', - xmltv_id: 'WTVJ.us' -} - -it('can generate valid url', () => { - expect(url({ date, channel })).toBe( - 'https://www.rev.bs/wp-content/uploads/tv-guide/2021-11-21_0.json' - ) -}) - -it('can parse response', done => { - axios.get.mockImplementation(url => { - if (url === 'https://www.rev.bs/wp-content/uploads/tv-guide/2021-11-21_1.json') { - return Promise.resolve({ - data: Buffer.from( - '{"status":"OK","data":{"schedule":{"206":[{"title":"Talk Stoop","sid":43599836,"s":"330.0000","duration":30,"rating":"TVPG"}]}}}' - ) - }) - } else { - return Promise.resolve({ - data: Buffer.from('{"status":"OK","data":{"schedule":{}}}') - }) - } - }) - - const content = - '{"status":"OK","data":{"schedule":{"205":[{"title":"Rev Pulse 5 - Online Classifieds","sid":43576112,"s":"-120.0000","duration":120,"rating":""}],"206":[{"title":"Saturday Night Live","sid":43599827,"s":"-31.0000","duration":93,"rating":"TV14"}]}}}' - parser({ content, channel, date }) - .then(result => { - result = result.map(p => { - p.start = p.start.toJSON() - p.stop = p.stop.toJSON() - return p - }) - expect(result).toMatchObject([ - { - start: '2021-11-21T04:29:00.000Z', - stop: '2021-11-21T06:02:00.000Z', - title: 'Saturday Night Live' - }, - { - start: '2021-11-21T10:30:00.000Z', - stop: '2021-11-21T11:00:00.000Z', - title: 'Talk Stoop' - } - ]) - done() - }) - .catch(err => { - done(err) - }) -}) - -it('can handle empty guide', done => { - parser({ - date, - channel, - content: '' - }) - .then(result => { - expect(result).toMatchObject([]) - done() - }) - .catch(err => { - done(err) - }) -})