mirror of
https://github.com/iptv-org/epg.git
synced 2025-05-10 00:50:09 -04:00
Merge pull request #2612 from iptv-org/add-thesportplus.com
Add thesportplus.com
This commit is contained in:
commit
7cd9ce61b4
6 changed files with 514 additions and 0 deletions
223
sites/thesportplus.com/__data__/content.html
Normal file
223
sites/thesportplus.com/__data__/content.html
Normal file
|
@ -0,0 +1,223 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta content="width=device-width, initial-scale=1.0" name="viewport" />
|
||||
|
||||
<title>Sport Plus</title>
|
||||
<meta content="" name="description" />
|
||||
<meta content="" name="keywords" />
|
||||
|
||||
<!-- Favicons -->
|
||||
<link href="assets/img/favicon.png" rel="icon" />
|
||||
<link href="assets/img/apple-touch-icon.png" rel="apple-touch-icon" />
|
||||
|
||||
<!-- Google Fonts -->
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,600,600i,700,700i|Raleway:300,300i,400,400i,500,500i,600,600i,700,700i|Satisfy"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
|
||||
<!-- Vendor CSS Files -->
|
||||
<link href="assets/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet" />
|
||||
<link href="assets/vendor/bootstrap-icons/bootstrap-icons.css" rel="stylesheet" />
|
||||
<link href="assets/vendor/boxicons/css/boxicons.min.css" rel="stylesheet" />
|
||||
<link href="assets/vendor/glightbox/css/glightbox.min.css" rel="stylesheet" />
|
||||
<link href="assets/vendor/swiper/swiper-bundle.min.css" rel="stylesheet" />
|
||||
|
||||
<!-- Template Main CSS File -->
|
||||
<link href="assets/css/style.css" rel="stylesheet" />
|
||||
|
||||
<!-- =======================================================
|
||||
* Template Name: Laura - v4.10.0
|
||||
* Template URL: https://bootstrapmade.com/laura-free-creative-bootstrap-theme/
|
||||
* Author: BootstrapMade.com
|
||||
* License: https://bootstrapmade.com/license/
|
||||
======================================================== -->
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- ======= Header ======= -->
|
||||
<header id="header" class="fixed-top d-flex justify-content-center align-items-center">
|
||||
<nav id="navbar" class="navbar">
|
||||
<ul>
|
||||
<li><a class="nav-link scrollto" href="index.php#hero">Home</a></li>
|
||||
<li><a class="nav-link scrollto" href="index.php#about">About</a></li>
|
||||
<li><a class="nav-link scrollto" href="index.php#services">Platforms</a></li>
|
||||
<li class="dropdown">
|
||||
<a href="#"><span>TV Guide</span> <i class="bi bi-chevron-down"></i></a>
|
||||
<ul>
|
||||
<li><a href="schedule_usa.php">Sport Plus U.S.A.</a></li>
|
||||
<li><a href="schedule_aus.php">Sport Plus Australia</a></li>
|
||||
<li><a href="schedule_euro.php">Sport Plus Europe</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="nav-link scrollto" href="index.php#contact">Contact</a></li>
|
||||
</ul>
|
||||
<i class="bi bi-list mobile-nav-toggle"></i>
|
||||
</nav>
|
||||
<!-- .navbar -->
|
||||
</header>
|
||||
<!-- End Header -->
|
||||
|
||||
<main id="main">
|
||||
<!-- ======= My Resume Section ======= -->
|
||||
<section id="resume" class="resume">
|
||||
<div class="container">
|
||||
<div class="section-title">
|
||||
<span>Sport Plus U.S.A.</span>
|
||||
<h2>Sport Plus U.S.A.</h2>
|
||||
<!--<p>Sit sint consectetur velit quisquam cupiditate impedit suscipit alias</p>-->
|
||||
</div>
|
||||
<div class="btn-wrap">
|
||||
<a href="schedule_usa.php?d=2025-01-18" class="btn-buy">«</a>
|
||||
<!--<a href="schedule_usa.php?d=2025-01-18" class="btn-buy">SAT 18/01</a>-->
|
||||
<a href="#" class="btn-buy">SUN 19/01</a>
|
||||
<!--<a href="schedule_usa.php?d=2025-01-20" class="btn-buy">MON 20/01</a>-->
|
||||
<a href="schedule_usa.php?d=2025-01-20" class="btn-buy">»</a>
|
||||
</div>
|
||||
|
||||
<div class="row d-flex align-items-center justify-content-center">
|
||||
<div class="col-lg-4">
|
||||
<!--<h3 class="resume-title">SUNDAY 19/01</h3>-->
|
||||
<h5 class="section-title">*New York time</h5>
|
||||
|
||||
<div class="resume-item">
|
||||
<h4>01:00</h4>
|
||||
<h5>ASTERAS vs ATROMITOS<span style="color: #ff0000"></span></h5>
|
||||
<p><em>Super League Season 24-25 MD 4</em></p>
|
||||
</div>
|
||||
|
||||
<div class="resume-item">
|
||||
<h4>03:00</h4>
|
||||
<h5>KALLITHEA vs VOLOS<span style="color: #ff0000"></span></h5>
|
||||
<p><em>Super League Season 24-25 MD 19</em></p>
|
||||
</div>
|
||||
|
||||
<div class="resume-item">
|
||||
<h4>05:00</h4>
|
||||
<h5>OLYMPIACOS vs MAROUSI<span style="color: #ff0000"></span></h5>
|
||||
<p><em>Greek Basket League 24-25 GD 11</em></p>
|
||||
</div>
|
||||
|
||||
<div class="resume-item">
|
||||
<h4>07:00</h4>
|
||||
<h5>PURE ACTION<span style="color: #ff0000"></span></h5>
|
||||
<p><em>Extreme Sports </em></p>
|
||||
</div>
|
||||
|
||||
<div class="resume-item">
|
||||
<h4>08:00</h4>
|
||||
<h5>ATROMITOS vs OLYMPIACOS<span style="color: #ff0000"> LIVE</span></h5>
|
||||
<p><em>Super League Season 24-25 MD 19</em></p>
|
||||
</div>
|
||||
|
||||
<div class="resume-item">
|
||||
<h4>10:00</h4>
|
||||
<h5>LEVADIAKOS vs ASTERAS<span style="color: #ff0000"></span></h5>
|
||||
<p><em>Super League Season 24-25 MD 19</em></p>
|
||||
</div>
|
||||
|
||||
<div class="resume-item">
|
||||
<h4>12:00</h4>
|
||||
<h5>ARIS vs PAOK<span style="color: #ff0000"> LIVE</span></h5>
|
||||
<p><em>Super League Season 24-25 MD 19</em></p>
|
||||
</div>
|
||||
|
||||
<div class="resume-item">
|
||||
<h4>15:00</h4>
|
||||
<h5>AEK vs PAOK<span style="color: #ff0000"></span></h5>
|
||||
<p><em>Greek Basket League 24-25 GD 15</em></p>
|
||||
</div>
|
||||
|
||||
<div class="resume-item">
|
||||
<h4>14:00</h4>
|
||||
<h5>PURE ACTION<span style="color: #ff0000"></span></h5>
|
||||
<p><em>Extreme Sports </em></p>
|
||||
</div>
|
||||
|
||||
<div class="resume-item">
|
||||
<h4>17:00</h4>
|
||||
<h5>SPORTSHOW<span style="color: #ff0000"></span></h5>
|
||||
<p><em>Super League </em></p>
|
||||
</div>
|
||||
|
||||
<div class="resume-item">
|
||||
<h4>19:00</h4>
|
||||
<h5>ATROMITOS vs OLYMPIACOS<span style="color: #ff0000"></span></h5>
|
||||
<p><em>Super League Season 24-25 MD 19</em></p>
|
||||
</div>
|
||||
|
||||
<div class="resume-item">
|
||||
<h4>21:00</h4>
|
||||
<h5>ARIS vs PAOK<span style="color: #ff0000"></span></h5>
|
||||
<p><em>Super League Season 24-25 MD 19</em></p>
|
||||
</div>
|
||||
|
||||
<div class="resume-item">
|
||||
<h4>23:00</h4>
|
||||
<h5>SPORTSHOW<span style="color: #ff0000"></span></h5>
|
||||
<p><em>Super League </em></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<!-- End My Resume Section -->
|
||||
</main>
|
||||
<!-- End #main -->
|
||||
|
||||
<!-- ======= Footer ======= -->
|
||||
<footer id="footer">
|
||||
<div class="container">
|
||||
<img src="assets/img/logosp.png" class="img-fluid" style="width: 30%" alt="" />
|
||||
<p>Premium sports experience</p>
|
||||
<div class="social-links">
|
||||
<!--<a href="#" class="twitter"><i class="bx bxl-twitter"></i></a>-->
|
||||
<a href="https://www.facebook.com/sportplustv" class="facebook" target="_blank"
|
||||
><i class="bx bxl-facebook"></i
|
||||
></a>
|
||||
<a href="https://www.instagram.com/thesportplustv/" class="instagram" target="_blank"
|
||||
><i class="bx bxl-instagram"></i
|
||||
></a>
|
||||
<!--<a href="#" class="google-plus"><i class="bx bxl-skype"></i></a>-->
|
||||
<!--<a href="#" class="linkedin"><i class="bx bxl-linkedin"></i></a>-->
|
||||
</div>
|
||||
<div class="copyright">
|
||||
© Copyright 2025<strong><span> Sport Plus</span></strong
|
||||
>. All Rights Reserved
|
||||
</div>
|
||||
<div class="credits">
|
||||
<!-- All the links in the footer should remain intact. -->
|
||||
<!-- You can delete the links only if you purchased the pro version. -->
|
||||
<!-- Licensing information: https://bootstrapmade.com/license/ -->
|
||||
<!-- Purchase the pro version with working PHP/AJAX contact form: https://bootstrapmade.com/laura-free-creative-bootstrap-theme/ -->
|
||||
Development by
|
||||
<a href="https://egiannopo.com/" target="_blank" style="color: #28b3ae !important">EG</a
|
||||
> Theme by
|
||||
<a href="https://bootstrapmade.com/" target="_blank" style="color: #28b3ae !important"
|
||||
>BootstrapMade</a
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
<!-- End Footer -->
|
||||
|
||||
<a href="#" class="back-to-top d-flex align-items-center justify-content-center"
|
||||
><i class="bi bi-arrow-up-short"></i
|
||||
></a>
|
||||
|
||||
<!-- Vendor JS Files -->
|
||||
|
||||
<script src="assets/vendor/purecounter/purecounter_vanilla.js"></script>
|
||||
<script src="assets/vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
|
||||
<script src="assets/vendor/glightbox/js/glightbox.min.js"></script>
|
||||
<script src="assets/vendor/isotope-layout/isotope.pkgd.min.js"></script>
|
||||
<script src="assets/vendor/swiper/swiper-bundle.min.js"></script>
|
||||
<script src="assets/vendor/waypoints/noframework.waypoints.js"></script>
|
||||
<!--<script src="assets/vendor/php-email-form/validate.js"></script>-->
|
||||
|
||||
<!-- Template Main JS File -->
|
||||
<script src="assets/js/main.js"></script>
|
||||
</body>
|
||||
</html>
|
145
sites/thesportplus.com/__data__/no_content.html
Normal file
145
sites/thesportplus.com/__data__/no_content.html
Normal file
|
@ -0,0 +1,145 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta content="width=device-width, initial-scale=1.0" name="viewport" />
|
||||
|
||||
<title>Sport Plus</title>
|
||||
<meta content="" name="description" />
|
||||
<meta content="" name="keywords" />
|
||||
|
||||
<!-- Favicons -->
|
||||
<link href="assets/img/favicon.png" rel="icon" />
|
||||
<link href="assets/img/apple-touch-icon.png" rel="apple-touch-icon" />
|
||||
|
||||
<!-- Google Fonts -->
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,600,600i,700,700i|Raleway:300,300i,400,400i,500,500i,600,600i,700,700i|Satisfy"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
|
||||
<!-- Vendor CSS Files -->
|
||||
<link href="assets/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet" />
|
||||
<link href="assets/vendor/bootstrap-icons/bootstrap-icons.css" rel="stylesheet" />
|
||||
<link href="assets/vendor/boxicons/css/boxicons.min.css" rel="stylesheet" />
|
||||
<link href="assets/vendor/glightbox/css/glightbox.min.css" rel="stylesheet" />
|
||||
<link href="assets/vendor/swiper/swiper-bundle.min.css" rel="stylesheet" />
|
||||
|
||||
<!-- Template Main CSS File -->
|
||||
<link href="assets/css/style.css" rel="stylesheet" />
|
||||
|
||||
<!-- =======================================================
|
||||
* Template Name: Laura - v4.10.0
|
||||
* Template URL: https://bootstrapmade.com/laura-free-creative-bootstrap-theme/
|
||||
* Author: BootstrapMade.com
|
||||
* License: https://bootstrapmade.com/license/
|
||||
======================================================== -->
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- ======= Header ======= -->
|
||||
<header id="header" class="fixed-top d-flex justify-content-center align-items-center">
|
||||
<nav id="navbar" class="navbar">
|
||||
<ul>
|
||||
<li><a class="nav-link scrollto" href="index.php#hero">Home</a></li>
|
||||
<li><a class="nav-link scrollto" href="index.php#about">About</a></li>
|
||||
<li><a class="nav-link scrollto" href="index.php#services">Platforms</a></li>
|
||||
<li class="dropdown">
|
||||
<a href="#"><span>TV Guide</span> <i class="bi bi-chevron-down"></i></a>
|
||||
<ul>
|
||||
<li><a href="schedule_usa.php">Sport Plus U.S.A.</a></li>
|
||||
<li><a href="schedule_aus.php">Sport Plus Australia</a></li>
|
||||
<li><a href="schedule_euro.php">Sport Plus Europe</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="nav-link scrollto" href="index.php#contact">Contact</a></li>
|
||||
</ul>
|
||||
<i class="bi bi-list mobile-nav-toggle"></i>
|
||||
</nav>
|
||||
<!-- .navbar -->
|
||||
</header>
|
||||
<!-- End Header -->
|
||||
|
||||
<main id="main">
|
||||
<!-- ======= My Resume Section ======= -->
|
||||
<section id="resume" class="resume">
|
||||
<div class="container">
|
||||
<div class="section-title">
|
||||
<span>Sport Plus U.S.A.</span>
|
||||
<h2>Sport Plus U.S.A.</h2>
|
||||
<!--<p>Sit sint consectetur velit quisquam cupiditate impedit suscipit alias</p>-->
|
||||
</div>
|
||||
<div class="btn-wrap">
|
||||
<a href="schedule_usa.php?d=2026-01-18" class="btn-buy">«</a>
|
||||
<!--<a href="schedule_usa.php?d=2026-01-18" class="btn-buy">SUN 18/01</a>-->
|
||||
<a href="#" class="btn-buy">MON 19/01</a>
|
||||
<!--<a href="schedule_usa.php?d=2026-01-20" class="btn-buy">TUE 20/01</a>-->
|
||||
<a href="schedule_usa.php?d=2026-01-20" class="btn-buy">»</a>
|
||||
</div>
|
||||
|
||||
<div class="row d-flex align-items-center justify-content-center">
|
||||
<div class="col-lg-4">
|
||||
<!--<h3 class="resume-title">MONDAY 19/01</h3>-->
|
||||
<h5 class="section-title">*New York time</h5>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<!-- End My Resume Section -->
|
||||
</main>
|
||||
<!-- End #main -->
|
||||
|
||||
<!-- ======= Footer ======= -->
|
||||
<footer id="footer">
|
||||
<div class="container">
|
||||
<img src="assets/img/logosp.png" class="img-fluid" style="width: 30%" alt="" />
|
||||
<p>Premium sports experience</p>
|
||||
<div class="social-links">
|
||||
<!--<a href="#" class="twitter"><i class="bx bxl-twitter"></i></a>-->
|
||||
<a href="https://www.facebook.com/sportplustv" class="facebook" target="_blank"
|
||||
><i class="bx bxl-facebook"></i
|
||||
></a>
|
||||
<a href="https://www.instagram.com/thesportplustv/" class="instagram" target="_blank"
|
||||
><i class="bx bxl-instagram"></i
|
||||
></a>
|
||||
<!--<a href="#" class="google-plus"><i class="bx bxl-skype"></i></a>-->
|
||||
<!--<a href="#" class="linkedin"><i class="bx bxl-linkedin"></i></a>-->
|
||||
</div>
|
||||
<div class="copyright">
|
||||
© Copyright 2025<strong><span> Sport Plus</span></strong
|
||||
>. All Rights Reserved
|
||||
</div>
|
||||
<div class="credits">
|
||||
<!-- All the links in the footer should remain intact. -->
|
||||
<!-- You can delete the links only if you purchased the pro version. -->
|
||||
<!-- Licensing information: https://bootstrapmade.com/license/ -->
|
||||
<!-- Purchase the pro version with working PHP/AJAX contact form: https://bootstrapmade.com/laura-free-creative-bootstrap-theme/ -->
|
||||
Development by
|
||||
<a href="https://egiannopo.com/" target="_blank" style="color: #28b3ae !important">EG</a
|
||||
> Theme by
|
||||
<a href="https://bootstrapmade.com/" target="_blank" style="color: #28b3ae !important"
|
||||
>BootstrapMade</a
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
<!-- End Footer -->
|
||||
|
||||
<a href="#" class="back-to-top d-flex align-items-center justify-content-center"
|
||||
><i class="bi bi-arrow-up-short"></i
|
||||
></a>
|
||||
|
||||
<!-- Vendor JS Files -->
|
||||
|
||||
<script src="assets/vendor/purecounter/purecounter_vanilla.js"></script>
|
||||
<script src="assets/vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
|
||||
<script src="assets/vendor/glightbox/js/glightbox.min.js"></script>
|
||||
<script src="assets/vendor/isotope-layout/isotope.pkgd.min.js"></script>
|
||||
<script src="assets/vendor/swiper/swiper-bundle.min.js"></script>
|
||||
<script src="assets/vendor/waypoints/noframework.waypoints.js"></script>
|
||||
<!--<script src="assets/vendor/php-email-form/validate.js"></script>-->
|
||||
|
||||
<!-- Template Main JS File -->
|
||||
<script src="assets/js/main.js"></script>
|
||||
</body>
|
||||
</html>
|
17
sites/thesportplus.com/readme.md
Normal file
17
sites/thesportplus.com/readme.md
Normal file
|
@ -0,0 +1,17 @@
|
|||
# thesportplus.com
|
||||
|
||||
US: https://www.thesportplus.com/schedule_usa.php
|
||||
Australia: https://www.thesportplus.com/schedule_aus.php
|
||||
Europe: https://www.thesportplus.com/schedule_euro.php
|
||||
|
||||
### Download the guide
|
||||
|
||||
```sh
|
||||
npm run grab --- --site=thesportplus.com
|
||||
```
|
||||
|
||||
### Test
|
||||
|
||||
```sh
|
||||
npm test --- thesportplus.com
|
||||
```
|
6
sites/thesportplus.com/thesportplus.com.channels.xml
Normal file
6
sites/thesportplus.com/thesportplus.com.channels.xml
Normal file
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<channels>
|
||||
<channel site="thesportplus.com" lang="en" xmltv_id="" site_id="usa">Sport Plus U.S.A.</channel>
|
||||
<channel site="thesportplus.com" lang="en" xmltv_id="" site_id="aus">Sport Plus Australia</channel>
|
||||
<channel site="thesportplus.com" lang="en" xmltv_id="" site_id="euro">Sport Plus Europe</channel>
|
||||
</channels>
|
73
sites/thesportplus.com/thesportplus.com.config.js
Normal file
73
sites/thesportplus.com/thesportplus.com.config.js
Normal file
|
@ -0,0 +1,73 @@
|
|||
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)
|
||||
|
||||
const timezones = {
|
||||
usa: 'America/New_York',
|
||||
aus: 'Australia/Sydney',
|
||||
euro: 'UTC'
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
site: 'thesportplus.com',
|
||||
days: 2,
|
||||
url({ channel, date }) {
|
||||
return `https://www.thesportplus.com/schedule_${channel.site_id}.php?d=${date.format(
|
||||
'YYYY-MM-DD'
|
||||
)}`
|
||||
},
|
||||
parser({ content, date, channel }) {
|
||||
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, channel)
|
||||
if (!start) return
|
||||
if (prev) {
|
||||
if (start.isBefore(prev.start) && start.hour() < 12) {
|
||||
start = start.add(1, 'd')
|
||||
date = date.add(1, 'd')
|
||||
}
|
||||
prev.stop = start
|
||||
}
|
||||
const stop = start.add(1, 'h')
|
||||
programs.push({
|
||||
title: parseTitle($item),
|
||||
description: parseDescription($item),
|
||||
start,
|
||||
stop
|
||||
})
|
||||
})
|
||||
|
||||
return programs
|
||||
}
|
||||
}
|
||||
|
||||
function parseTitle($item) {
|
||||
return $item('h5:last').text().trim()
|
||||
}
|
||||
|
||||
function parseDescription($item) {
|
||||
return $item('p').text().trim()
|
||||
}
|
||||
|
||||
function parseStart($item, date, channel) {
|
||||
const timezone = timezones[channel.site_id]
|
||||
const time = $item('h4').text().trim()
|
||||
const dateString = `${date.format('YYYY-MM-DD')} ${time}`
|
||||
|
||||
return dayjs.tz(dateString, 'YYYY-MM-DD HH:mm', timezone)
|
||||
}
|
||||
|
||||
function parseItems(content) {
|
||||
const $ = cheerio.load(content)
|
||||
|
||||
return $('.resume-item').toArray()
|
||||
}
|
50
sites/thesportplus.com/thesportplus.com.test.js
Normal file
50
sites/thesportplus.com/thesportplus.com.test.js
Normal file
|
@ -0,0 +1,50 @@
|
|||
const { parser, url } = require('./thesportplus.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('2025-01-19', 'YYYY-MM-DD').startOf('d')
|
||||
const channel = {
|
||||
site_id: 'usa',
|
||||
xmltv_id: 'SportPlusUSA.us'
|
||||
}
|
||||
|
||||
it('can generate valid url', () => {
|
||||
expect(url({ channel, date })).toBe('https://www.thesportplus.com/schedule_usa.php?d=2025-01-19')
|
||||
})
|
||||
|
||||
it('can parse response', () => {
|
||||
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.html'))
|
||||
const results = parser({ content, date, channel }).map(p => {
|
||||
p.start = p.start.toJSON()
|
||||
p.stop = p.stop.toJSON()
|
||||
return p
|
||||
})
|
||||
|
||||
expect(results.length).toBe(13)
|
||||
expect(results[0]).toMatchObject({
|
||||
start: '2025-01-19T06:00:00.000Z',
|
||||
stop: '2025-01-19T08:00:00.000Z',
|
||||
title: 'ASTERAS vs ATROMITOS',
|
||||
description: 'Super League Season 24-25 MD 4'
|
||||
})
|
||||
expect(results[12]).toMatchObject({
|
||||
start: '2025-01-20T04:00:00.000Z',
|
||||
stop: '2025-01-20T05:00:00.000Z',
|
||||
title: 'SPORTSHOW',
|
||||
description: 'Super League'
|
||||
})
|
||||
})
|
||||
|
||||
it('can handle empty guide', () => {
|
||||
const results = parser({
|
||||
date,
|
||||
channel,
|
||||
content: fs.readFileSync(path.resolve(__dirname, '__data__/no_content.html'))
|
||||
})
|
||||
expect(results).toMatchObject([])
|
||||
})
|
Loading…
Add table
Add a link
Reference in a new issue