diff --git a/sites/berrymedia.co.kr/__data__/content.html b/sites/berrymedia.co.kr/__data__/content.html
new file mode 100644
index 00000000..0f3eb707
--- /dev/null
+++ b/sites/berrymedia.co.kr/__data__/content.html
@@ -0,0 +1,386 @@
+
+
<
+
+ 01.23
+
월
+
+
+ 01.24
+
화
+
+
+ 01.25
+
수
+
+
+ 01.26
+
목
+
+
+ 01.27
+
금
+
+
+ 01.28
+
토
+
+
+ 01.29
+
일
+
+
>
+
+
+
+
+ 시간
+ 장르
+ 프로그램
+ 회차
+ 세부정보
+ 방송시간
+
+
+
+ 00:00
+
연예/오락
+
+
+ 더트롯쇼
+ 36회
+
+
+ 15
+
HD
+
본
+
생
+
Original
+
+ 60분
+
+
+ 01:00
+
교양
+
+
+ 특종세상
+ 21회
+
+
+ 15
+
HD
+
본
+
생
+
Original
+
+ 70분
+
+
+ 02:10
+
교양
+
+
+ 특종세상
+ 22회
+
+
+ 15
+
HD
+
본
+
생
+
Original
+
+ 70분
+
+
+ 03:20
+
교양
+
+
+ 나는 자연인이다
+ 124회
+
+
+ ALL
+
HD
+
재
+
생
+
Original
+
+ 70분
+
+
+ 04:30
+
패션/뷰티
+
+
+ 탑시크릿란제리HD
+ 1회
+
+
+ 19
+
HD
+
본
+
생
+
Original
+
+ 30분
+
+
+ 05:00
+
연예/오락
+
+
+ SALON INTERNATIONAL DE LA LINGERIE
+ 7회
+
+
+ 19
+
HD
+
본
+
생
+
Original
+
+ 30분
+
+
+ 05:30
+
연예/오락
+
+
+ 노컷 란제리 페스티벌
+ 14회
+
+
+ 19
+
HD
+
본
+
생
+
Original
+
+ 60분
+
+
+ 06:30
+
연예/오락
+
+
+ 요가에 빠지다
+ 7회
+
+
+ 15
+
HD
+
본
+
생
+
Original
+
+ 40분
+
+
+ 07:10
+
연예/오락
+
+
+ 이제 만나러 갑니다
+ 20회
+
+
+ 12
+
HD
+
본
+
생
+
Original
+
+ 70분
+
+
+ 08:20
+
연예/오락
+
+
+ 미스터트롯 영웅들의 탄생
+ 5회
+
+
+ 15
+
HD
+
재
+
생
+
Original
+
+ 100분
+
+
+ 10:00
+
연예/오락
+
+
+ 미스터트롯 영웅들의 탄생
+ 6회
+
+
+ 15
+
HD
+
재
+
생
+
Original
+
+ 100분
+
+
+ 11:40
+
연예/오락
+
+
+ 불타는 트롯맨 5
+ 3회
+
+
+ 15
+
HD
+
재
+
생
+
Original
+
+ 80분
+
+
+ 13:00
+
연예/오락
+
+
+ 화요일은 밤이 좋아
+ 17회
+
+
+ 15
+
HD
+
본
+
생
+
Original
+
+ 130분
+
+
+ 15:10
+
연예/오락
+
+
+ 불타는 트롯맨 6
+ 3회
+
+
+ 15
+
HD
+
재
+
생
+
Original
+
+ 110분
+
+
+ 17:00
+
교양
+
+
+ 행복한 힐링 메이트
+ 41회
+
+
+ 15
+
HD
+
재
+
생
+
Original
+
+ 60분
+
+
+ 18:00
+
연예/오락
+
+
+ 내일은 미스트롯 2
+ 7회
+
+
+ 15
+
HD
+
본
+
생
+
Original
+
+ 180분
+
+
+ 21:00
+
연예/오락
+
+
+ 불타는 트롯맨 3
+ 2회
+
+
+ 15
+
HD
+
재
+
생
+
Original
+
+ 110분
+
+
+ 22:50
+
교양
+
+
+ 나는 자연인이다
+ 154회
+
+
+ ALL
+
HD
+
본
+
생
+
Original
+
+ 70분
+
+
\ No newline at end of file
diff --git a/sites/berrymedia.co.kr/__data__/no_content.html b/sites/berrymedia.co.kr/__data__/no_content.html
new file mode 100644
index 00000000..e1755d0a
--- /dev/null
+++ b/sites/berrymedia.co.kr/__data__/no_content.html
@@ -0,0 +1,44 @@
+
+
<
+
+ 01.23
+
월
+
+
+ 01.24
+
화
+
+
+ 01.25
+
수
+
+
+ 01.26
+
목
+
+
+ 01.27
+
금
+
+
+ 01.28
+
토
+
+
+ 01.29
+
일
+
+
>
+
+
+
+
+ 시간
+ 장르
+ 프로그램
+ 회차
+ 세부정보
+ 방송시간
+
+
+
\ No newline at end of file
diff --git a/sites/berrymedia.co.kr/berrymedia.co.kr.channels.xml b/sites/berrymedia.co.kr/berrymedia.co.kr.channels.xml
new file mode 100644
index 00000000..8d09501d
--- /dev/null
+++ b/sites/berrymedia.co.kr/berrymedia.co.kr.channels.xml
@@ -0,0 +1,11 @@
+
+
+
+ BallTV
+ CookTV
+ GMTV
+ GTV
+ 생활체육TV
+ UHDDreamTV
+
+
diff --git a/sites/berrymedia.co.kr/berrymedia.co.kr.config.js b/sites/berrymedia.co.kr/berrymedia.co.kr.config.js
new file mode 100644
index 00000000..f8b8f2a4
--- /dev/null
+++ b/sites/berrymedia.co.kr/berrymedia.co.kr.config.js
@@ -0,0 +1,93 @@
+const cheerio = require('cheerio')
+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)
+
+dayjs.Ls.en.weekStart = 1
+
+module.exports = {
+ site: 'berrymedia.co.kr',
+ days: 2,
+ url({ channel }) {
+ return `http://www.berrymedia.co.kr/schedule_proc${channel.site_id}.php`
+ },
+ request: {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
+ 'X-Requested-With': 'XMLHttpRequest'
+ },
+ data({ date }) {
+ let params = new URLSearchParams()
+ let startOfWeek = date.startOf('week').format('YYYY-MM-DD')
+ let endOfWeek = date.endOf('week').format('YYYY-MM-DD')
+
+ params.append('week', `${startOfWeek}~${endOfWeek}`)
+ params.append('day', date.format('YYYY-MM-DD'))
+
+ return params
+ }
+ },
+ parser({ content, date }) {
+ const programs = []
+ 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),
+ category: parseCategory($item),
+ rating: parseRating($item),
+ start,
+ stop
+ })
+ })
+
+ return programs
+ }
+}
+
+function parseStart($item, date) {
+ const time = $item('span:nth-child(1)').text().trim()
+
+ return dayjs.tz(`${date.format('YYYY-MM-DD')} ${time}`, 'YYYY-MM-DD HH:mm', 'Asia/Seoul')
+}
+
+function parseTitle($item) {
+ return $item('span.sdfsdf').clone().children().remove().end().text().trim()
+}
+
+function parseCategory($item) {
+ return $item('span:nth-child(2) > p').text().trim()
+}
+
+function parseRating($item) {
+ const rating = $item('span:nth-child(5) > p:nth-child(1)').text().trim()
+
+ return rating
+ ? {
+ system: 'KMRB',
+ value: rating
+ }
+ : null
+}
+
+function parseItems(content, channel, date) {
+ const $ = cheerio.load(content)
+
+ return $('.sc_time dd').toArray()
+}
diff --git a/sites/berrymedia.co.kr/berrymedia.co.kr.test.js b/sites/berrymedia.co.kr/berrymedia.co.kr.test.js
new file mode 100644
index 00000000..7396aafc
--- /dev/null
+++ b/sites/berrymedia.co.kr/berrymedia.co.kr.test.js
@@ -0,0 +1,79 @@
+// npx epg-grabber --config=sites/berrymedia.co.kr/berrymedia.co.kr.config.js --channels=sites/berrymedia.co.kr/berrymedia.co.kr.channels.xml --output=guide.xml --days=2
+
+const { parser, url, request } = require('./berrymedia.co.kr.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('2023-01-26', 'YYYY-MM-DD').startOf('d')
+const channel = {
+ site_id: '',
+ xmltv_id: 'GTV.kr'
+}
+
+it('can generate valid url', () => {
+ expect(url({ channel })).toBe('http://www.berrymedia.co.kr/schedule_proc.php')
+})
+
+it('can generate request method', () => {
+ expect(request.method).toBe('POST')
+})
+
+it('can generate valid request headers', () => {
+ expect(request.headers).toMatchObject({
+ 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
+ 'X-Requested-With': 'XMLHttpRequest'
+ })
+})
+
+it('can generate valid request data', () => {
+ let params = request.data({ date })
+
+ expect(params.get('week')).toBe('2023-01-23~2023-01-29')
+ expect(params.get('day')).toBe('2023-01-26')
+})
+
+it('can parse response', () => {
+ const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.html'), 'utf8')
+ let results = parser({ content, date })
+ results = results.map(p => {
+ p.start = p.start.toJSON()
+ p.stop = p.stop.toJSON()
+ return p
+ })
+
+ expect(results[0]).toMatchObject({
+ start: '2023-01-25T15:00:00.000Z',
+ stop: '2023-01-25T16:00:00.000Z',
+ title: `더트롯쇼`,
+ category: '연예/오락',
+ rating: {
+ system: 'KMRB',
+ value: '15'
+ }
+ })
+
+ expect(results[17]).toMatchObject({
+ start: '2023-01-26T13:50:00.000Z',
+ stop: '2023-01-26T14:20:00.000Z',
+ title: `나는 자연인이다`,
+ category: '교양',
+ rating: {
+ system: 'KMRB',
+ value: 'ALL'
+ }
+ })
+})
+
+it('can handle empty guide', () => {
+ const results = parser({
+ date,
+ content: fs.readFileSync(path.resolve(__dirname, '__data__/no_content.html'), 'utf8')
+ })
+
+ expect(results).toMatchObject([])
+})
diff --git a/sites/flixed.io/flixed.io.channels.xml b/sites/flixed.io/flixed.io.channels.xml
index 978ab25e..bfafdabc 100644
--- a/sites/flixed.io/flixed.io.channels.xml
+++ b/sites/flixed.io/flixed.io.channels.xml
@@ -1,6 +1,498 @@
+ A&E (East)
+ A&E (West)
+
+
+
+
+
+
+
+ ABC News Live
+ ACC Network (East)
+
+ AccuWeather
+ Al Jazeera America
+ Altitude Sports and Entertainment Network
+ AMC (East)
+ AMC (West)
+
+
+ American Heroes Channel
+
+ Animal Planet
+
+ Antenna TV
+ ASPiRE HD
+ AT&T SportsNet Pittsburgh
+ AT&T SportsNet Rocky Mountain
+ AT&T SportsNet Southwest
+ AXS TV
+ Baby TV
+ Bally Sports Arizona
+ Bally Sports Detroit
+ Bally Sports Florida
+ Bally Sports Great Lakes
+ Bally Sports Indiana
+ Bally Sports Kansas City
+ Bally Sports Midwest - Illinois
+ Bally Sports New Orleans (North)
+ Bally Sports North
+ Bally Sports Ohio 1 (Cleveland feed)
+ Bally Sports Ohio 2 (Cincinnati feed)
+ Bally Sports Oklahoma
+ Bally Sports San Diego
+ Bally Sports SoCal
+ Bally Sports South - Main Feed
+ Bally Sports Southeast
+ Bally Sports Southwest (Main Feed)
+ Bally Sports Sun
+ Bally Sports West
+ Bally Sports Wisconsin
+ BBC America
+ BBC World News
+
+
+ beIN Sports HD
+
+ beIN SPORTS 3
+
+ beIN SPORTS 4
+ beIN SPORTS 5
+ beIN SPORTS 6
+ beIN SPORTS 7
+ beIN SPORTS 8
+
+
+ beIN Sports En Español
+
+ BET (East)
+ BET (West)
+
+ BET Her
+
+ BET Jams
+ BET Soul
+
+ Big Ten Network
+ Big Ten Network Overflow
+ Bloomberg Business Television
+ Boomerang
+ Bravo (East)
+ Bravo (West)
+ BYU-TV
+
+ Cartoon Network (East)
+ Cartoon Network (West)
+
+
+ CBS (East)
+
+ CBS (West)
+ CBS News Streaming
+ CBS Sports Network
+
+ Cheddar News
+ Cheddar U
+ Cinemax (East)
+ Cinemax (West)
+ Cleo TV
+ CMT (East)
+ CMT (West)
+
+ CNBC
+ CNBC World
+ CNN
+ CNN en Español
+ CNN International HD
+ Comedy Central (East)
+ Comedy Central (West)
+
+ Comet
+ Cooking Channel
+
+ COZI TV HD
+ Crime & Investigation Network HD
+ CSPAN
+ CSPAN2
+
+ CW (Central)
+ CW (East)
+
+
+ Destination America
+
+ Discovery Channel (East)
+ Discovery Channel (West)
+
+ Discovery en Español
+ Discovery Familia HD
+ Discovery Family Channel
+
+ Discovery Life Channel
+
+ Disney Channel (East)
+ Disney Channel (West)
+ Disney Junior
+
+ Disney XD (East)
+ Disney XD (West)
+
+ Do-It-Yourself Network HD
+ E! Entertainment (East)
+ E! Entertainment (West)
+ El Gourmet
+ ESPN
+
+ ESPN Deportes
+
+ ESPN2
+ ESPN3 South
+ ESPNEWS
+ ESPNU
+ Estrella TV
+ Food Network (East)
+ Food Network (West)
+
+
+
+ FOX (East)
+
+ FOX (West)
+ Fox Business
+
+ Fox Deportes HD
+
+ Fox News Channel
+ Fox Soccer Plus HD
+ Fox Sports 1
+
+ Fox Sports 2
+
+ Freeform (East)
+ Freeform (West)
+
+
+
+
+
+
+
+
+ Fubo Sports Network
+
+
+
+ Fuse
+ Fusion HD
+ FX
+
+ FXM
+ FXX
+
+ FYI
+
+
+
+
+ Galavision Cable Network (East)
+ Galavision Cable Network (West)
+
+ Game Show Network
+
+ getTV
+ GINX eSports TV US
+ Golf Channel
+
+ GOLTV (English) HD
+ GOLTV International HD
+ Hallmark Channel (East)
+ Hallmark Channel (West)
+
+
+ Hallmark Drama
+ Hallmark Movies & Mysteries HD
+
+ HBO (East)
+ HBO (West)
+ HBO Comedy HD
+ HBO Family (East)
+ HBO Family (West)
+ HBO Latino
+ HBO Signature (East)
+ HBO Signature (West)
+ HBO Zone HD
+ HBO2 (East)
+ HBO2 (West)
+ History (East)
+ History (West)
+ History Channel En Español
+
+ HLN
+ Home & Garden Television (East)
+ Home & Garden Television (West)
+
+ IFC
+
+
+ INSP
+
+ Investigation Discovery
+
+
+ ION Television (Central)
+ ION Television (East)
+
+ ION Television (West)
+ Law & Crime Stream
+ Lifetime (East)
+ Lifetime (West)
+
+
+ LMN
+
+
+
+ Logo HD
+ Longhorn Network HD
+ LX
+ Marquee Sports Network HD
+
+ MASN - Mid Atlantic Sports Network
+
+ MavTV HD
+ MGM+ HD (East)
+ MGM+ HD (West)
+ MGM+ Hits HD
+ MGM+ Drive-in HD
+ MGM+ Marquee
+ MLB Network
+ MLB Network Strike Zone
+ MoreMAX (East)
+ MoreMAX (West)
+ MOTORTREND HD
+
+ MSG National
+ MSG Plus HD Zone 2
+ MSG Plus Zone 1
+
+
+
+ MTV - Music Television (East)
+ MTV - Music Television (West)
+
+ MTV Classic
+ MTV España
+ MTV2: Music Television (East)
+ MTV2: Music Television (West)
+
+ MTVLIVE
+
+
+
+
+
+
+ Nat Geo Mundo
+ National Geographic USA
+ National Geographic Wild
+
+ NBA TV
+
+ NBC (Central)
+ NBC (East)
+
+ NBC (West)
+
+ NBC Sports Bay Area
+
+ NBC Sports Bay Area Plus
+ NBC Sports Boston
+
+ NBC Sports California
+
+
+ NBC Sports Chicago HD
+ NBC Sports Northwest
+ NBC Sports Philadelphia
+ NBC Sports Washington
+
+ NBC Sports Washington Plus HD
+
+
+
+
+
+ Newsmax TV HD
+ NewsNation SD
+ Newsy
+ NFL Network HD
+ NFL RedZone
+ NHL Network
+ Nick Jr
+
+ Nick Music
+ Nickelodeon (East)
+ Nickelodeon (West)
+
+ Nicktoons
+
+
+
+ Olympic Channel
+ One America News Network
+ Oprah Winfrey Network (East)
+ Oprah Winfrey Network (West)
+
+ Outdoor Channel
+ Outside Television HD
+ Ovation
+ Oxygen (East)
+ Oxygen (West)
+
+ Pac-12 Arizona HD
+ Pac-12 Bay Area HD
+ Pac-12 Los Angeles HD
+ Pac-12 Mountain HD
+ Pac-12 Network
+
+ Pac-12 Oregon HD
+ Pac-12 Washington HD
+ Paramount Network (East)
+ Paramount Network (West)
+
+ PBS (East)
+ PBS (West)
+ PeopleTV
+ POP
+
+ QVC
+ QVC2
+ Revolt HD
+ ROOT Sports Northwest
+ Science
+
+ SEC Network HD
+ SHO x BET
+
+
+ Showtime (East)
+ Showtime (West)
+ Showtime 2 (East)
+ Showtime 2 (West)
+ Showtime Extreme (East)
+ Showtime Extreme (West)
+
+ Showtime Familyzone HD
+ Showtime Next HD
+ Showtime Showcase (East)
+ Showtime Showcase (West)
+ Showtime Women HD
+ Smithsonian HD Network
+ Sony Cine
+ Sony Movie Channel HD
+ Spectrum SportsNet
+ Spectrum SportsNet LA
+ Sportsnet (Pacific)
+ Sportsnet East
+ Sportsnet MST
+ Sportsnet NY
+ Sportsnet Ontario
+ Stadium College Sports Atlantic
+ Stadium College Sports Central
+ Stadium College Sports Pacific
+ Stadium HD
+
+ Starz (East)
+ Starz (West)
+ Starz Cinema HD
+ Starz Comedy HD
+ Starz Edge
+ Starz Encore (East)
+ Starz Encore (West)
+ Starz Encore Classic
+ Starz in Black
+ Starz Kids
+
+ SundanceTV (East)
+ SundanceTV (West)
+
+ SYFY (East)
+ SYFY (West)
+
+ Tastemade [Str]
+ TBS (East)
+ TBS (West)
+ Teen Nick HD
+ Telefe Internacional
+
+
+ Telemundo (East)
+
+ Telemundo (West)
+ Tennis Channel
+
+ The Fight Network HD
+ The Movie Channel (East)
+ The Movie Channel (West)
+ The Movie Channel Extra (East)
+ The Movie Channel Extra (West)
+ The Sportsman Channel HD
+ The Travel Channel (East)
+ The Travel Channel (West)
+
+ The Weather Channel
+
+ TLC (East)
+ TLC (West)
+
+ TNT (East)
+ TNT (West)
+ Trinity Broadcasting Network
+ truTV (East)
+ truTV (West)
+ TSN1
+ TSN2
+ TSN3
+ TSN4
+ TSN5
+ TUDN
+
+ Turner Classic Movies
+
+
+ TV Land (East)
+ TV Land (West)
+
+
+ TyC Sports International
+ TyC Sports International English
+ UniMas (East)
+ UniMas (West)
+ Universal Kids HD
+ UNIVERSO HD
+
+
+ Univision Network (East)
+
+ Univision Network (West)
+ UPtv HD
+ USA Network (East)
+ USA Network (West)Vegas Sports & Information Network (VSIN)
+ VH1 (East)
+ VH1 (West)
+
+ Vice
+
+ Video Rola HD
+ WAPA America
+ WE tv (East)
+ WE tv (West)
+
+ Yes Network
+
diff --git a/sites/m.tv.sms.cz/m.tv.sms.cz.channels.xml b/sites/m.tv.sms.cz/m.tv.sms.cz.channels.xml
index 326b9c12..85095ce4 100644
--- a/sites/m.tv.sms.cz/m.tv.sms.cz.channels.xml
+++ b/sites/m.tv.sms.cz/m.tv.sms.cz.channels.xml
@@ -86,6 +86,7 @@
Gold TVGolf Channel CzechiaHaHa TV
+ HGTVHBO 2HBO 3HBO
@@ -525,6 +526,7 @@
Arena Sport 2CNL EvropaChuck TV
+ Life TV
diff --git a/sites/novacyprus.com/novacyprus.com.config.js b/sites/novacyprus.com/novacyprus.com.config.js
index fc49bf01..60bf8ac4 100644
--- a/sites/novacyprus.com/novacyprus.com.config.js
+++ b/sites/novacyprus.com/novacyprus.com.config.js
@@ -1,3 +1,5 @@
+process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = 0
+
const axios = require('axios')
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
diff --git a/sites/seezntv.com/seezntv.com.channels.xml b/sites/seezntv.com/seezntv.com.channels.xml
index d91c90c7..4a578a25 100644
--- a/sites/seezntv.com/seezntv.com.channels.xml
+++ b/sites/seezntv.com/seezntv.com.channels.xml
@@ -30,6 +30,7 @@
EBS플러스2(초등1,2)FTVGOLF&PBA
+ 공영쇼핑GS MY SHOPGS SHOP홈&쇼핑
@@ -59,7 +60,7 @@
OBSOCNOGN
- OLIFE
+ OLIFEOlive핑크퐁플레이보이 TV
@@ -73,14 +74,13 @@
프로야구 3프로야구 4프로야구 5
- 공영쇼핑SBS F!LSBS 골프스크린골프존신세계쇼핑쇼핑엔티SK스토아
- skySports
+ skySports텔레노벨라THE MOVIE토마토증권통
diff --git a/sites/tving.com/tving.com.channels.xml b/sites/tving.com/tving.com.channels.xml
index e75bc2c5..fc8dea81 100644
--- a/sites/tving.com/tving.com.channels.xml
+++ b/sites/tving.com/tving.com.channels.xml
@@ -16,13 +16,13 @@
super ActionOGNOlive
- Onstyle
- OtvN
+ Onstyle
+ OtvNTooniversetv조선c timetvN
- Xtvn
+ Xtvn연합뉴스YTNYTN life
diff --git a/sites/tvpassport.com/tvpassport.com.channels.xml b/sites/tvpassport.com/tvpassport.com.channels.xml
index 0189c5de..1bbb5cbd 100644
--- a/sites/tvpassport.com/tvpassport.com.channels.xml
+++ b/sites/tvpassport.com/tvpassport.com.channels.xml
@@ -4,11 +4,15 @@
3ABN English5 StarMax East5StarMax West
- A&E East
- A&E West
+ ABC EasternABC News LiveABC Spark
+ ABC Pacific
+ AccuWeather
+ Actionmax EasternActionmax Pacific HD
+ A&E East
+ A&E WestAMC+AMC WestAnimal Planet West
@@ -26,17 +30,25 @@
Bally Sports New OrleansBally Sports NorthBally Sports Ohio
+ Bally Sports OklahomaBally Sports San DiegoBally Sports SoCalBally Sports SouthBally Sports Southeast
- Bally Sports Southwest
- Bally Sports OklahomaBally Sports South South Carolinas
- Bally Sports Wisconsin
+ Bally Sports Southwest
+ Bally Sports Wisconsin
+ BBC America East
+ BBC World News North America
+ BET EastBET West
+ Bloomberg TV
+ Boomerang US
+ Bravo EastBravo WestCars.TV
+ Cartoon Network East US
+ Cartoon Network West USCBC (CBAT) Fredericton, NB HDCBC (CBET) Windsor, ONCBC (CBHT) Halifax, NS
@@ -45,121 +57,186 @@
CBC (CBNT) St-John's, NLCBC (CBOT) Ottawa, ONCBC (CBRT) Calgary, AB
+ CBS Eastern
+ CBS PacificCBC (CBUT) Vancouver, BCCBC (CBWT) Winnipeg, MBCBC (CBXT) Edmonton, AB
- Comedy Central West
+ Cinemax Eastern
+ Cinemax Pacific
+ CMT EastCNBCCNN
+ Comedy Central East
+ Comedy Central WestCrave 1Crave 2Crave 3Crave 4
+ C-SPAN 2
+ Discovery Channel (US) Eastern FeedDiscovery Channel (US) Pacific Feed
+ Discovery Family (US)
+ Disney Channel USA Eastern Feed
+ Disney Junior USA Eastern Feed
+ Disney XD USA Eastern FeedDisney XD USA Pacific Feed
- MGM+ Hits East
- MGM+ Drive-In
- MGM+ East
- MGM+ Marquee
- MGM+ Pacific
+ ESPN
+ ESPN 2E! WestFlix West
+ Food Network EastFood Network West
+ Fox Business
+ FOX EasternFOX News
+ FOX PacificFreeformFreeform West
+ Fuse East
+ FX East
+ FX Movie ChannelFX West
+ FXX EastFXX West
- FOX (KFJX) Pittsburg, KS
- FOX (KFNB) Casper, WY
- Galavision West
+ FYI East
+ GolTV USGreat American Living
+ GritHallmark Channel EastHallmark Channel WestHallmark Drama
- Hallmark Movies & Mysteries East
+ Hallmark Movies & Mysteries EastHBO Canada 1HBO Canada 2
+ HBO Comedy EastHBO Comedy West
+ HBO East
+ HBO Signature EastHBO Signature West
+ HBO West
+ HBO Zone EastHBO Zone WestHGTV EastHGTV USA HD Pacific Feed
+ HLNIndiePlex EastIndiePlex WestInvestigation Discovery West
+ ABC (KAAL) Austin, MN
+ THIS (KAAL) Austin, MNABC (KABC) Los Angeles, CA
+ ABC (KAKE) Wichita, KS
+ MeTV (KAKE-DT2) Wichita, KSCW (KASW) Phoenix, AZ
- Me TV (KAZA) Los Angeles, CA
+ ABC (KATV) Little Rick, AR
+ Comet (KATV-DT2) Little Rick, AR
+ Charge (KATV-DT3) Little Rick, AR
+ TBD (KATV-DT4) Little Rick, AR
+ Me TV (KAZA) Los Angeles, CACW (KBCW) San Francisco, CAComet (KBCW-DT2) San Francisco, CAMeTV (KCBW-DT3) San Francisco, CATBD (KCBW-DT4) San Francisco, CACircle (KCBW-DT5) San Francisco, CA
+ ABC (KBMT) Beaumont, TV
+ NBC (KBMT-DT2) Beaumont, TV
+ Cozi (KBMT-DT3) Beaumont, TV
+ MeTV (KBMT-DT4) Beaumont, TVKCAL 9 (KCAL) Los Angeles, CACBS (KCBS) Los Angeles, CAKCET (KCET) Los Angeles, CACBS (KCNC-TV) Denver, COKCOP (KCOP) Los Angeles, CA
+ FOX (KCPQ) Tacoma, WA
+ CBS (KDKA-TV) Pittsburgh, PA
+ Start TV (KDKA-TV2) Pittsburgh, PA
+ DABL (KDKA-TV3) Pittsburgh, PA
+ FOX (KDLT-DT2) Sioux Falls, SD
+ FOX (KDVR) Denver, CO
+ NBC (KECI-TV) Missoula, MTABC (KEYT) Santa Barbara, CACBS (KEYT-DT2) Santa Barbara, CAMNT (KEYT-DT3) Santa Barbara, CA
- FOX (KDVR) Denver, CO
- FOX (KDLT-DT2) Sioux Falls, SD
- NBC (KECI-TV) Missoula, MT
+ FOX (KFJX) Pittsburg, KS
+ FOX (KFNB) Casper, WY
+ ABC (KFSN) Fresno, CAFOX (KGAN-DT2) Cedar Rapids, IA
+ ABC (KGO) San Francisco, CACW (KHON-DT2) Honolulu, HI
+ KING (KING) Seattle, WACBS (KION) Salinas, CAFOX (KION-TV2) Monterey, CAION (KION-TV3) Monterey, CA
+ CBS (KIRO) Seattle, WAPBS Kids (KLCS2) Los Angeles, CACreate (KLCS3) Los Angeles, CA
+ ABC (KMBC) Kansas City, MO
+ MeTV (KMBC-DT2) Kansas City, MO
+ ABC (KMGH) Denver, CONBC (KNBC) Los Angeles, CA
+ NBC (KNTV) San Francisco, CA
+ ABC (KNXV) Phoenix, AZPBS (KOCE) Huntington Beach, CA
+ ABC (KOMO) Seattle, WACBS (KPAX-TV) Missoula, MTCW (KPAX-DT2) Missoula, MT
+ CBS (KPHO) Phoenix, AZ
+ CBS (KPIX) San Francisco, CA
+ Start TV (KPIX-DT2) San Francisco, CA
+ DABL (KPIX-DT3) San Francisco, CA
+ Fave TV (KPIX-DT4) San Francisco, CA
+ NBC (KPNX) Phoenix, AZ
+ FOX (KRIV) Houston, TXABC (KSAT) San Antonio, TXMeTV (KSAT-DT2) San Antonio, TXMovies! (KSAT-DT3) San Antonio, TXH&I (KSAT-DT4) San Antonio, TXStart TV (KSAT-DT5) San Antonio, TX
+ FOX (KSAZ) Phoenix, AZH&I (KSFV-CD2) Los Angeles, CAKTLA 5 (KTLA) Los Angeles, CAABC (KTMF) Missoula, MTFOX (KTMF-DT2) Missoula, MTSWX (KTMF-DT3) Missoula, MT
+ ABC (KTRK) Houston, TXFOX (KTTV) Los Angeles, CAMNT (KTVD) Denver, CO
+ NBC (KTVF) Fairbanks, AKCW (KTVQ-DT2) Billings, MT
- PBS (KUFM-TV) Missoula, MT
- CBS (KXDF-CD) Fairbanks, AK
- MeTV Plus (KYAZ-DT2) Houston TXFOX (KTVU) San Francisco, CA
- CBS (KPIX) San Francisco, CA
- Start TV (KPIX-DT2) San Francisco, CA
- DABL (KPIX-DT3) San Francisco, CA
- Fave TV (KPIX-DT4) San Francisco, CA
- ABC (KGO) San Francisco, CA
- NBC (KNTV) San Francisco, CA
- FOX (KSAZ) Phoenix, AZ
- CBS (KPHO) Phoenix, AZ
- ABC (KNXV) Phoenix, AZ
- NBC (KPNX) Phoenix, AZ
- Univision (KMEX) Los Angeles, CA
- UniMás (KMEX-DT2) Los Angeles, CA
- Telemundo (KVEA) Los Angeles, CA
+ PBS (KUFM-TV) Missoula, MT
+ CBS (KWCH) Wichita, KS
+ Circle (KWCH-DT4) Wichita, KS
+ CBS (KXDF-CD) Fairbanks, AK
+ ABC (KXTV) Sacramento, CA
+ MeTV Plus (KYAZ-DT2) Houston TX
+ Logo East
+ Logo West
+ Magnolia EastMeTV Network
+ MGM+ Drive-In
+ MGM+ East
+ MGM+ Hits East
+ MGM+ Marquee
+ MGM+ Pacific
+ MoreMax EasternMoremax Pacific HD
+ MovieMax EasternMovieMax WestMoviePlex EastMoviePlex West
- MSNBCMSG
+ MSNBC
+ NBC Network EasternNBC Sports Boston
+ NBC Network PacificNews12 ConneticutNews12 Long Island
+ Newsmax TVNHL NetworkOuterMax Eastern
+ ReelzRetroPlex EastRetroPlex WestScreenPix
@@ -187,12 +264,19 @@
Starz Encore Suspense HD PacificStarz In Black PacificStarz Kids & Family Pacific
+ SundanceTV EastSyfy EastSyfy WestTBS EastTBS WestTurner Classic Movies CanadaTurner Classic Movies USA
+ Telemundo East
+ Telemundo West
+ The Movie Channel East
+ The Movie Channel Xtra East
+ The Weather Channel
+ Thrillermax EasternThrillermax PacificTLC EastTLC USA HD Pacific
@@ -203,10 +287,12 @@
TSN2TSN3TSN4
- TSN5
+ TSN5TV Land West
+ TV OneUSA Network WestVH1 West
+ ViceHope Channel (W20CQ-D) Hempstead, NYABC (WABC) New York, NYLocalish (WABC-DT2) New York, NY
@@ -216,6 +302,7 @@
NBC (WBAL-TV) Baltimore, MDMeTV (WBAL-DT2) Baltimore, MDThe Grio (WBAL-DT4) Baltimore, MD
+ CBS (WBBM) Chicago, ILIndependent (WBBZ-TV) Springville, NYFOX (WBFF) Baltimore, MDMNT (WBFF-DT2) Baltimore, MD
@@ -229,11 +316,15 @@
CBS (WCBS) New York, NYStart TV (WCBS-TV2) New York, NYDABL (WCBS-TV3) New York, NY
- CBS (WCSC) Charleston, SC
+ CW (WCIU) Chicago, ILStory (WCIU-DT5) Chicago, ILPBS (WCMU-TV) Mount Pleasant, MI
+ CBS (WCSC) Charleston, SCABC (WCVB-TV) Boston, MAMeTV (WCVB-DT2) Boston, MA
+ CW (WCWJ) Jacksonville, FL
+ FOX (WDAF) Kansas City, MO
+ MNT (WDCA) District of ColumbiaPBS (WDCQ-TV) Bad Axe, MIThe Country Network (WDVB) Edison, NJSSTN (WDVB-CD2) Edison, NJ
@@ -242,23 +333,33 @@
PBS (WETA-TV) Washington DCCBS (WEVV) Evansville, INFOX (WEVV-DT2) Evansville, IN
+ ABC (WEWS-TV) Cleveland, OHNBC (WEYI-TV) Saginaw, MIABC (WFAA) Dallas, TXAccuWeather (WFAA-DT2) Dallas, TXTrue Crime Network (WFAA-DT3) Dallas, TXQuest (WFAA-DT4) Dallas, TX
+ FOX (WFLD) Chicago, ILFOX (WFQX-TV) Cadillac, MICW (WFQX-DT2) Cadillac, MI
+ ABC (WFTV) Orlando, FLUniMás (WFTY) Smithtown, NYION Mystery (WFTY-DT4) Smithtown, NYTrue Crime Network (WFUT-DT2) Newark, NJGetTV (WFUT-DT3) Newark, NJION Mystery (WFUT-DT4) Newark, NJ
+ FOX (WFXT) Boston, MA
+ NBC (WGRZ) Buffalo, NYABC (WGTU) Traverse City, MIPBS (WGVU-TV) Grand Rapids, MIIndependent (WHDH) Boston, MATHIS (WHDH) Boston, MANewsNet (WHNE-LD9) Detroit, MI
+ CBS (WIVB) Buffalo, NY
+ CW+ (WJAC-TV4) Johnstown, PA
+ CBS (WJAX) Jacksonville, FL
+ ABC (WJLA) District of Columbia
+ MeTV (WJLP) New JerseyLaff (WJLP2) New JerseyGrit TV (WJLP3) New Jersey/New YorkION Mystery (WJLP4) New Jersey/New York
@@ -267,16 +368,20 @@
Story (WJLP7) Middletown Township, NJMNT (WJMN-TV) Escanaba, MIABC (WJRT-TV) Flint, MI
+ FOX (WJW) Cleveland, OH
+ ABC (WJXX) Jacksonville, FLCBS (WJZ) Baltimore, MDStart TV (WJZ-DT2) Baltimore, MDDABL (WJZ-DT3) Baltimore, MDFave TV (WJZ-DT4) Baltimore, MDPBS (WKAR-TV) East Lansing, MI
+ ABC (WKBW) Buffalo, NYAzteca (WKOB) New York, NYPeace TV (WKOB-LD3) New York, NYSonLife Network (WKOB-LD5) New York, NYShop LC (WKOB-DT7) New York, NYONTV4U (WKOB-DT8) New York, NY
+ ABC (WKRN) Nashville, TNPBS (WLIW) Long Island, NYCreate (WLIW2) Long Island, NYPBS World (WLIW3) Long Island, NY
@@ -289,6 +394,7 @@
Circle (WLNY-TV5) Riverhead, NYNBC (WLUC-TV) Marquette, MIFOX (WLUC-DT2) Marquette, MI
+ NBC (WMAQ) Chicago, ILABC (WMAR) Baltimore, MDGrit TV (WMAR-DT2) Baltimore, MDBounce (WMAR-DT3) Baltimore, MD
@@ -331,13 +437,25 @@
REV'N (WNYX-LD4) New York, NYRetro TV (WNYX-LD5) New York, NYABC (WOI) Des Moines, IA
- CW (WPCW) Jeannette, PA
+ World Fishing Network
+ CW (WPCW) Pittsburgh, PA
+ H&I (WPCW-DT2) Pittsburgh, PA
+ Grit TV (WPCW-DT3) Pittsburgh, PA
+ Circle (WPCW-DT4) Pittsburgh, PA
+ The Grio (WPCW-DT5) Pittsburgh, PA
+ FOX (WPGH) Pittsburgh, PA
+ Antenna (WPGH-DT2) Pittsburgh, PA
+ Charge (WPGH-DT3) Pittsburgh, PACW (WPIX) New York, NYAntenna (WPIX2) New York, NYCourt TV (WPIX3) New York, NYRewind TV US (WPIX4) New York, NY
+ ABC (WPLG) Miami, FLLocalish (WPVI-DT2) Philadelphia, PATHIS (WPVI-TV3) Philadelphia, PA
+ NBC (WPXI) Pittsburgh, PA
+ MeTV (WPXI-DT2) Pittsburgh, PA
+ Laff (WPXI-DT3) Pittsburgh, PAION (WPXN) New York, NYBounce (WPXN-TV2) New York, NYION Mystery (WPXN-TV3) New York, NY
@@ -353,22 +471,33 @@
Circle (WRNN-TV2) New YorkCanal de La Fe (WRNN-DT3) New York, NYQVC2 (WRNN-TV4) New York, NY
+ ABC (WRTV) Indianapolis, IN
+ ABC (WSB) Atlanta, GAPBS (WSBE) Providence, RIFOX (WSMH) Flint, MI
+ ABC (WTAE) Pittsburgh, PA
+ Cozi (WTAE-DT2) Pittsburgh, PAFOX (WTAT) Charleston, SCTBN (WTBY) New York, NYSmile (WTBY-TV2) New York, NYPosiTiV (WTBY-TV4) New York, NY
+ NBC (WTLV) Jacksonville, FLABC (WTNH) SD New Haven, CTRewind TV US (WTNH2) New Haven, CT
+ ABC (WTVD) Raleigh, NC
+ ABC (WTVG) Toledo, OHCW (WTVG-DT2) Toledo, OHMichigan Learning Channel (WTVS-DT5) Detroit, MI
+ FOX (WTVT) Tampa Bay, FL
+ FOX (WUTV) Buffalo, NY
+ FOX (WVUE) New Orleans, LACBS (WWAY2) Wilmington, NCFave TV (WWJ-DT4) Detroit, MIMNT (WWOR) New York, NYCircle (WWOR-TV2) New York, NYBuzzr TV (WWOR-TV3) New York, NYH&I (WWOR-DT4) New York, NY
+ FOX (WXIN) Indianapolis, INCGTN (WXNY-LD) New York, NYCCTV-4 (WXNY-LD2) New York, NYRetro TV (WXNY-LD4) New York, NY
@@ -376,8 +505,15 @@
Bounce (WXTV-DT2) Paterson, NJTwist (WXTV-DT3) Paterson, NJGrit TV (WXTV-DT4) Paterson, NJ
+ ABC (WXYZ) Detroit, MICGTN (WYXN-LD) New York, NYCBS (WZMQ-DT2) Marquette, MI
+ YES Network
+ Youtoo America - Network
+ Galavision West
+ Univision (KMEX) Los Angeles, CA
+ UniMás (KMEX-DT2) Los Angeles, CA
+ Telemundo (KVEA) Los Angeles, CAEsperanza (W20CQ-D2) Hempstead, NYEstrella (WASA-LD) Port Jervis, NYUNI (WFTY-DT2) New York, NY
@@ -392,9 +528,5 @@
Enlace (WTBY-TV3) New York, NYCGTN Spanish (WXNY-LD3) New York, NYUNI (WXTV) Teaneck, NJ
- CW+ (WJAC-TV4) Johnstown, PA
- World Fishing Network
- YES Network
- Youtoo America - Network
diff --git a/sites/tvtv.us/tvtv.us.channels.xml b/sites/tvtv.us/tvtv.us.channels.xml
index b5c6159b..bef0a164 100644
--- a/sites/tvtv.us/tvtv.us.channels.xml
+++ b/sites/tvtv.us/tvtv.us.channels.xml
@@ -1619,7 +1619,7 @@
TVG2TV GuideTV Japan
- TVK2
+ TVK2TV Land EastTV Land WestTV One
diff --git a/sites/wavve.com/wavve.com.channels.xml b/sites/wavve.com/wavve.com.channels.xml
index 6627bd52..0c036621 100644
--- a/sites/wavve.com/wavve.com.channels.xml
+++ b/sites/wavve.com/wavve.com.channels.xml
@@ -53,7 +53,7 @@
MBNMBN 플러스머니투데이방송
- 매일경제TV
+ 매일경제TVNS홈쇼핑NS SHOP+국회방송
@@ -70,7 +70,7 @@
신세계TV쇼핑쇼핑엔티SmileTV Plus
- TVasia Plus
+ TVasia PlusTV CHOSUNTV CHOSUN2텔레노벨라
diff --git a/sites/worldfishingnetwork.com/__data__/content.html b/sites/worldfishingnetwork.com/__data__/content.html
new file mode 100644
index 00000000..b4c5956f
--- /dev/null
+++ b/sites/worldfishingnetwork.com/__data__/content.html
@@ -0,0 +1,2177 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+WFN - Schedule - World Fishing Network
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sites/worldfishingnetwork.com/__data__/no_content.html b/sites/worldfishingnetwork.com/__data__/no_content.html
new file mode 100644
index 00000000..59a04991
--- /dev/null
+++ b/sites/worldfishingnetwork.com/__data__/no_content.html
@@ -0,0 +1,896 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+WFN - Schedule - World Fishing Network
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sites/worldfishingnetwork.com/worldfishingnetwork.com.channels.xml b/sites/worldfishingnetwork.com/worldfishingnetwork.com.channels.xml
new file mode 100644
index 00000000..68fa1bed
--- /dev/null
+++ b/sites/worldfishingnetwork.com/worldfishingnetwork.com.channels.xml
@@ -0,0 +1,6 @@
+
+
+
+ World Fishing Network
+
+
diff --git a/sites/worldfishingnetwork.com/worldfishingnetwork.com.config.js b/sites/worldfishingnetwork.com/worldfishingnetwork.com.config.js
new file mode 100644
index 00000000..fa126d0a
--- /dev/null
+++ b/sites/worldfishingnetwork.com/worldfishingnetwork.com.config.js
@@ -0,0 +1,79 @@
+const cheerio = require('cheerio')
+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: 'worldfishingnetwork.com',
+ days: 2,
+ url({ date }) {
+ return `https://www.worldfishingnetwork.com/schedule/77420?day=${date.format('ddd')}`
+ },
+ parser({ content, date }) {
+ const programs = []
+ const items = parseItems(content, date)
+ items.forEach(item => {
+ let $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),
+ sub_title: parseSubTitle($item),
+ description: parseDescription($item),
+ icon: parseIcon($item),
+ start,
+ stop
+ })
+ })
+
+ return programs
+ }
+}
+
+function parseTitle($item) {
+ return $item('.show-title > h3').text().trim()
+}
+
+function parseSubTitle($item) {
+ return $item('.show-title').clone().children().remove().end().text().trim()
+}
+
+function parseDescription($item) {
+ return $item('.show-title > p').text().trim()
+}
+
+function parseIcon($item) {
+ const url = $item('.show-img > img').attr('src')
+
+ return url ? `https:${url}` : null
+}
+
+function parseStart($item, date) {
+ const time = $item('.show-time > h2').clone().children().remove().end().text().trim()
+ const period = $item('.show-time > h2 > span > strong').text().trim()
+
+ return dayjs.tz(
+ `${date.format('YYYY-MM-DD')} ${time} ${period}`,
+ 'YYYY-MM-DD HH:mm A',
+ 'America/New_York'
+ )
+}
+
+function parseItems(content, channel, date) {
+ const $ = cheerio.load(content)
+
+ return $('.show-item').toArray()
+}
diff --git a/sites/worldfishingnetwork.com/worldfishingnetwork.com.test.js b/sites/worldfishingnetwork.com/worldfishingnetwork.com.test.js
new file mode 100644
index 00000000..98b100c6
--- /dev/null
+++ b/sites/worldfishingnetwork.com/worldfishingnetwork.com.test.js
@@ -0,0 +1,59 @@
+// npx epg-grabber --config=sites/worldfishingnetwork.com/worldfishingnetwork.com.config.js --channels=sites/worldfishingnetwork.com/worldfishingnetwork.com.channels.xml --output=guide.xml --days=2
+
+const { parser, url } = require('./worldfishingnetwork.com.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('2023-01-24', 'YYYY-MM-DD').startOf('d')
+const channel = {
+ site_id: '#',
+ xmltv_id: 'WorldFishingNetwork.us'
+}
+
+it('can generate valid url', () => {
+ expect(url({ date })).toBe('https://www.worldfishingnetwork.com/schedule/77420?day=Tue')
+})
+
+it('can parse response', () => {
+ const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.html'), 'utf8')
+ let results = parser({ content, date })
+ results = results.map(p => {
+ p.start = p.start.toJSON()
+ p.stop = p.stop.toJSON()
+ return p
+ })
+
+ expect(results[0]).toMatchObject({
+ start: '2023-01-24T05:00:00.000Z',
+ stop: '2023-01-24T07:00:00.000Z',
+ title: `Major League Fishing`,
+ sub_title: 'Challenge Cup Sudden Death Round 2',
+ description:
+ 'Nine anglers race to a target weight on Lake Wylie in the Lucas Oil Challenge Cup, presented by B&W Trailer Hitches, Rock Hill, South Carolina. Only four will move on to the Championship Round.',
+ icon: 'https://content.osgnetworks.tv/shows/major-league-fishing-thumbnail.jpg'
+ })
+
+ expect(results[41]).toMatchObject({
+ start: '2023-01-25T04:30:00.000Z',
+ stop: '2023-01-25T05:00:00.000Z',
+ title: `Fishing 411`,
+ sub_title: 'Flint Wilderness Walleye',
+ description:
+ 'Mark Romanack and Bryan Darland fish walleye on Klotz Lake in the famed Flint Wilderness of Ontario',
+ icon: 'https://content.osgnetworks.tv/shows/fishin-411-thumbnail.jpg'
+ })
+})
+
+it('can handle empty guide', () => {
+ const results = parser({
+ date,
+ content: fs.readFileSync(path.resolve(__dirname, '__data__/no_content.html'), 'utf8')
+ })
+
+ expect(results).toMatchObject([])
+})