Merge pull request #1048 from iptv-org/add-cgates.lt

Add guide from cgates.lt
This commit is contained in:
Aleksandr Statciuk 2022-08-30 02:52:49 +03:00 committed by GitHub
commit 9ffec2ece7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 3678 additions and 0 deletions

17
.github/workflows/cgates.lt.yml vendored Normal file
View file

@ -0,0 +1,17 @@
name: cgates.lt
on:
schedule:
- cron: '0 3 * * *'
workflow_dispatch:
workflow_run:
workflows: [_trigger]
types:
- completed
jobs:
load:
uses: ./.github/workflows/_load.yml
with:
site: ${{github.workflow}}
secrets:
APP_ID: ${{ secrets.APP_ID }}
APP_PRIVATE_KEY: ${{ secrets.APP_PRIVATE_KEY }}

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,91 @@
const dayjs = require('dayjs')
const axios = require('axios')
const cheerio = require('cheerio')
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: 'cgates.lt',
url: function ({ channel }) {
return `https://www.cgates.lt/tv-kanalai/${channel.site_id}/`
},
parser: function ({ content, date }) {
let programs = []
const items = parseItems(content, date)
items.forEach(item => {
const prev = programs[programs.length - 1]
const $item = cheerio.load(item)
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),
start,
stop
})
})
return programs
},
async channels() {
let html = await axios
.get(`https://www.cgates.lt/televizija/tv-programa-savaitei/`)
.then(r => r.data)
.catch(console.log)
let $ = cheerio.load(html)
const items = $('.kanalas_wrap').toArray()
return items.map(item => {
const name = $(item).find('h6').text().trim()
const link = $(item).find('a').attr('href')
const [_, site_id] = link.match(/\/tv-kanalai\/(.*)\//) || [null, null]
return {
lang: 'lt',
site_id,
name
}
})
}
}
function parseTitle($item) {
const title = $item('td:nth-child(2) > .vc_toggle > .vc_toggle_title').text().trim()
return title || $item('td:nth-child(2)').text().trim()
}
function parseDescription($item) {
return $item('.vc_toggle_content > p').text().trim()
}
function parseStart($item, date) {
const time = $item('.laikas')
return dayjs.tz(`${date.format('YYYY-MM-DD')} ${time}`, 'YYYY-MM-DD HH:mm', 'Europe/Vilnius')
}
function parseItems(content, date) {
const $ = cheerio.load(content)
const section = $(
'article > div:nth-child(2) > div.vc_row.wpb_row.vc_row-fluid > div > div > div > div > div'
)
.filter(function () {
return $(`.dt-fancy-title:contains("${date.format('YYYY-MM-DD')}")`, this).length === 1
})
.first()
return $('.tv_programa tr', section).toArray()
}

View file

@ -0,0 +1,52 @@
// npm run channels:parse -- --config=./sites/cgates.lt/cgates.lt.config.js --output=./sites/cgates.lt/cgates.lt_lt.channels.xml
// npx epg-grabber --config=sites/cgates.lt/cgates.lt.config.js --channels=sites/cgates.lt/cgates.lt_lt.channels.xml --output=guide.xml --days=2
const { parser, url } = require('./cgates.lt.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-08-30', 'YYYY-MM-DD').startOf('d')
const channel = {
site_id: 'lrt-televizija-hd',
xmltv_id: 'LRTTV.lt'
}
it('can generate valid url', () => {
expect(url({ channel, date })).toBe('https://www.cgates.lt/tv-kanalai/lrt-televizija-hd/')
})
it('can parse response', () => {
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(results.length).toBe(35)
expect(results[0]).toMatchObject({
start: '2022-08-29T21:05:00.000Z',
stop: '2022-08-29T21:30:00.000Z',
title: '31-oji nuovada (District 31), Drama, 2016',
description:
'Seriale pasakojama apie kasdienius policijos išbandymus ir sunkumus. Vadovybė pertvarko Monrealio miesto policijos struktūrą: išskirsto į 36 policijos nuovadas, kad šios būtų arčiau gyventojų. 31-osios nuovados darbuotojams tenka kone sunkiausias darbas: šiame miesto rajone gyvena socialiai remtinos šeimos, nuolat kovojančios su turtingųjų klase, įsipliekia ir rasinių konfliktų. Be to, čia akivaizdus kartų atotrūkis, o tapti nusikalstamo pasaulio dalimi labai lengva. Serialo siužetas intensyvus, nauji nusikaltimai tiriami kiekvieną savaitę. Čia vaizduojamas nepagražintas nusikalstamas pasaulis, jo poveikis rajono gyventojams. Policijos nuovados darbuotojai narplios įvairiausių nusikaltimų schemas. Tai ir pagrobimai, įsilaužimai, žmogžudystės, smurtas artimoje aplinkoje, lytiniai nusikaltimai, prekyba narkotikais, teroristinių išpuolių grėsmė ir pan. Šis serialas leis žiūrovui įsigilinti į policijos pareigūnų realybę, pateiks skirtingą požiūrį į kiekvieną nusikaltimą.'
})
expect(results[34]).toMatchObject({
start: '2022-08-30T20:45:00.000Z',
stop: '2022-08-30T21:15:00.000Z',
title: '31-oji nuovada (District 31), Drama, 2016!'
})
})
it('can handle empty guide', () => {
const result = parser({
content: ''
})
expect(result).toMatchObject([])
})

View file

@ -0,0 +1,125 @@
<?xml version="1.0" encoding="UTF-8"?>
<site site="cgates.lt">
<channels>
<channel lang="lt" xmltv_id="1Plus1.ua" site_id="1plus1">1+1</channel>
<channel lang="lt" xmltv_id="1Plus2.lv" site_id="1plus2">1+2</channel>
<channel lang="lt" xmltv_id="366TV.ua" site_id="36-6-tv">36.6 TV</channel>
<channel lang="lt" xmltv_id="ArirangTV.kr" site_id="arirang-tv">Arirang TV</channel>
<channel lang="lt" xmltv_id="BabyTV.uk" site_id="baby-tv">Baby TV</channel>
<channel lang="lt" xmltv_id="BBCWorldNewsEurope.uk" site_id="bbc-world-news">BBC World News</channel>
<channel lang="lt" xmltv_id="BloombergTVEMEA.uk" site_id="bloomberg-television">Bloomberg Television</channel>
<channel lang="lt" xmltv_id="BlueHustler.uk" site_id="blue-hustler">Blue Hustler</channel>
<channel lang="lt" xmltv_id="CBSRealityEurope.us" site_id="cbs-reality">CBS Reality</channel>
<channel lang="lt" xmltv_id="CNBCEurope.uk" site_id="cnbc-europe">CNBC Europe</channel>
<channel lang="lt" xmltv_id="CNNInternationalEurope.us" site_id="cnn-international">CNN International</channel>
<channel lang="lt" xmltv_id="Dacha.ua" site_id="dacha">Dacha</channel>
<channel lang="lt" xmltv_id="DocuBoxHD.us" site_id="docubox-hd">DocuBox HD</channel>
<channel lang="lt" xmltv_id="Eurochannel.us" site_id="eurochannel">Eurochannel</channel>
<channel lang="lt" xmltv_id="EuronewsRussian.fr" site_id="euronews-2">Euronews RU</channel>
<channel lang="lt" xmltv_id="ExtremeSportsChannel.nl" site_id="extreme-sports">Extreme Sports</channel>
<channel lang="lt" xmltv_id="FastFunBoxHD.us" site_id="fastfun-box-hd">Fast&amp;Fun Box HD</channel>
<channel lang="lt" xmltv_id="FightSports.us" site_id="fight-sports-hd">Fight Sports HD</channel>
<channel lang="lt" xmltv_id="FilmBoxArthouseWorldwide.us" site_id="filmbox-arthouse">FilmBox ArtHouse</channel>
<channel lang="lt" xmltv_id="FilmUADrama.ua" site_id="film-ua-drama">Film UA Drama</channel>
<channel lang="lt" xmltv_id="Filmzone.ee" site_id="filmzone">FilmZone</channel>
<channel lang="lt" xmltv_id="FilmzonePlus.ee" site_id="filmzone-hd">FilmZone+ HD</channel>
<channel lang="lt" xmltv_id="GametoonHD.us" site_id="game-toon-hd">Game Toon HD</channel>
<channel lang="lt" xmltv_id="GulliGirl.ru" site_id="gulli-girl">Gulli Girl</channel>
<channel lang="lt" xmltv_id="InterPlus.ua" site_id="inter-plus">Inter+</channel>
<channel lang="lt" xmltv_id="KidZoneTV.ee" site_id="kidzone-tv">KidZone TV</channel>
<channel lang="lt" xmltv_id="KusKus.ua" site_id="kus-kus">Kus-Kus</channel>
<channel lang="lt" xmltv_id="LietuvosRytasTV.lt" site_id="lietuvos-ryto-tv-hd">Lietuvos ryto TV HD</channel>
<channel lang="lt" xmltv_id="LNKHD.lt" site_id="lnk-hd">LNK HD</channel>
<channel lang="lt" xmltv_id="LRTLituanica.lt" site_id="lrt-lituanica">LRT Lituanica</channel>
<channel lang="lt" xmltv_id="LRTPlius.lt" site_id="lrt-kultura-hd">LRT Plius HD</channel>
<channel lang="lt" xmltv_id="LRTTV.lt" site_id="lrt-televizija-hd">LRT Televizija HD</channel>
<channel lang="lt" xmltv_id="Mezzo.fr" site_id="mezzo">Mezzo</channel>
<channel lang="lt" xmltv_id="MTV00s.uk" site_id="vh1">MTV 00s</channel>
<channel lang="lt" xmltv_id="MTVHitsEurope.uk" site_id="mtv-hits">MTV Hits</channel>
<channel lang="lt" xmltv_id="PlayboyTVEurope.us" site_id="playboy-tv">Playboy TV</channel>
<channel lang="lt" xmltv_id="Smartzone.ee" site_id="smartzone-hd">Smartzone HD</channel>
<channel lang="lt" xmltv_id="StarCinema.ua" site_id="star-cinema">Star Cinema</channel>
<channel lang="lt" xmltv_id="StarFamily.ua" site_id="star-family">Star Family</channel>
<channel lang="lt" xmltv_id="TijiRussia.ru" site_id="tiji">Tiji</channel>
<channel lang="lt" xmltv_id="TV1000ActionEast.ru" site_id="tv-1000-action">TV 1000 Action</channel>
<channel lang="lt" xmltv_id="TV1000WorldKino.se" site_id="tv-1000-world-kino">TV 1000 World Kino</channel>
<channel lang="lt" xmltv_id="TV3Sport.lv" site_id="viasat-sport-baltic-hd">TV3 Sport HD</channel>
<channel lang="lt" xmltv_id="TV3Sport2.lv" site_id="tvplay-sports-plus-hd">TV3 Sport 2 HD</channel>
<channel lang="lt" xmltv_id="TVPInfo.pl" site_id="tvp-info">TVP Info</channel>
<channel lang="lt" xmltv_id="TVPPolonia.pl" site_id="tvp-polonia">TVP Polonia</channel>
<channel lang="lt" xmltv_id="VIPComedy.ru" site_id="vip-comedy">ViP Comedy</channel>
<channel lang="lt" xmltv_id="VividTouch.us" site_id="vivid-touch">Vivid Touch</channel>
<!-- <channel lang="lt" xmltv_id="" site_id="2tv">2TV</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="amc">AMC</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="animal-planet-hd">Animal Planet HD</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="balticum-auksinis">Balticum Auksinis</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="balticum-platinum-hd">Balticum Platinum HD</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="balticum-tv">Balticum TV</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="bolt">Bolt</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="boomerang">Boomerang</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="btv-hd">BTV HD</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="cartoon-network">Cartoon Network</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="da-vinci-learning">Da Vinci Learning</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="delfi-tv-hd">Delfi TV HD</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="deutsche-welle">Deutsche Welle</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="discovery-channel-hd">Discovery Channel HD</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="discovery-science-hd">Discovery Science HD</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="dtx-hd">DTX HD</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="duo-7">Kanal 7</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="dzukijos-tv">Dzūkijos TV</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="epic-drama-hd">Epic Drama HD</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="euronews">Euronews HD</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="eurosport-1-hd">Eurosport 1 HD</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="eurosport-2-hd">Eurosport 2 HD</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="fashion-tv">Fashion TV</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="film-ua-live">Film UA Live</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="filmbox">FilmBox</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="food-network">Food Network</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="fox">FOX</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="fox-hd">FOX HD</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="fox-life">FOX Life</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="france-24">France 24</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="geru-naujienu-televizija">Gerų naujienų televizija</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="hgtv-hd">HGTV HD</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="history-channel-hd">History Channel HD</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="id-xtra-hd">Investigation Discovery HD</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="info-tv-hd">Info TV HD</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="jim-jam">Jim Jam</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="kidzone-plus-hd">KidZone Mini HD</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="luxe-tv-hd">Luxe.TV HD</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="marijampoles-tv">Marijampolės TV</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="mtv-live-hd">MTV Live HD</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="nastojashcheje-vremya">Nastojashcheje Vremya</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="nat-geo-wild">Nat Geo Wild</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="national-geographic-channel">National Geographic Channel</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="national-geographic-hd">National Geographic HD</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="nick-jr">Nick Jr.</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="nick-toons">Nick Toons</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="nickelodeon">Nickelodeon</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="quiz-tv">Quiz TV</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="rtl">RTL</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="rtv-international">RTV International</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="seimas-tiesiogiai">Seimas tiesiogiai</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="setanta-sports-hd">Setanta Sports 1 HD</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="siauliu-televizija">Šiaulių televizija</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="sony-channel-hd">Duo 3 HD</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="sony-turbo-hd">Duo 6 HD</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="sport-1-hd">Sport 1 HD</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="tlc">TLC</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="travel-channel-hd">Travel Channel HD</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="tv-1000">TV 1000</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="tv-1000-premium-hd">TV3 Film HD</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="tv1-hd">TV1 HD</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="tv3-hd">TV3 HD</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="tv3-plus-hd">TV3 Plus HD</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="tv3-sport-open-hd">TV3 Sport Open HD</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="tv6-hd">TV6 HD</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="tv7">TV7</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="tv8-hd">TV8 HD</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="tvp-wilno">TVP Wilno</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="ukraine-24">Ukraine 24</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="viasat-explore-hd">Viasat Explore HD</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="viasat-history-hd">Viasat History HD</channel> -->
<!-- <channel lang="lt" xmltv_id="" site_id="viasat-nature">Viasat Nature HD</channel> -->
</channels>
</site>