epg-grabber 0.25.3 → 0.25.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "epg-grabber",
3
- "version": "0.25.3",
3
+ "version": "0.25.4",
4
4
  "description": "Node.js CLI tool for grabbing EPG from different sites",
5
5
  "main": "src/index.js",
6
6
  "preferGlobal": true,
package/src/utils.js CHANGED
@@ -220,14 +220,14 @@ utils.convertToXMLTV = function ({ channels, programs }) {
220
220
  output += '</tv>'
221
221
 
222
222
  function createXMLTVNS(s, e) {
223
- if (!s && !e) return null
223
+ if (!e) return null
224
224
  s = s || 1
225
225
 
226
226
  return `${s - 1}.${e - 1}.0/1`
227
227
  }
228
228
 
229
229
  function createOnScreen(s, e) {
230
- if (!s && !e) return null
230
+ if (!e) return null
231
231
  s = s || 1
232
232
 
233
233
  s = padStart(s, 2, '0')
@@ -95,6 +95,28 @@ it('can convert object to xmltv string without season number', () => {
95
95
  )
96
96
  })
97
97
 
98
+ it('can convert object to xmltv string without episode number', () => {
99
+ const file = fs.readFileSync('./tests/input/example.com.channels.xml', { encoding: 'utf-8' })
100
+ const { channels } = utils.parseChannels(file)
101
+ const programs = [
102
+ {
103
+ title: 'Program 1',
104
+ description: 'Description for Program 1',
105
+ start: 1616133600,
106
+ stop: 1616135400,
107
+ category: 'Test',
108
+ season: 1,
109
+ icon: 'https://example.com/images/Program1.png?x=шеллы&sid=777',
110
+ channel: '1TV.com',
111
+ lang: 'it'
112
+ }
113
+ ]
114
+ const output = utils.convertToXMLTV({ channels, programs })
115
+ expect(output).toBe(
116
+ '<?xml version="1.0" encoding="UTF-8" ?><tv>\r\n<channel id="1TV.com"><display-name>1 TV</display-name><icon src="https://example.com/logos/1TV.png"/><url>https://example.com</url></channel>\r\n<channel id="2TV.com"><display-name>2 TV</display-name><url>https://example.com</url></channel>\r\n<programme start="20210319060000 +0000" stop="20210319063000 +0000" channel="1TV.com"><title lang="it">Program 1</title><desc lang="it">Description for Program 1</desc><category lang="it">Test</category><icon src="https://example.com/images/Program1.png?x=шеллы&amp;sid=777"/></programme>\r\n</tv>'
117
+ )
118
+ })
119
+
98
120
  it('can convert object to xmltv string without categories', () => {
99
121
  const channels = [
100
122
  {
@@ -171,7 +193,7 @@ it('can fetch data', () => {
171
193
  url: 'http://example.com/20210319/1tv.json',
172
194
  withCredentials: true
173
195
  }
174
- utils.fetchData(axios, request).then(jest.fn).catch(jest.fn)
196
+ utils.fetchData(mockAxios, request).then(jest.fn).catch(jest.fn)
175
197
  expect(mockAxios).toHaveBeenCalledWith(
176
198
  expect.objectContaining({
177
199
  data: { accountID: '123' },
@@ -192,37 +214,46 @@ it('can fetch data', () => {
192
214
 
193
215
  it('can build request async', done => {
194
216
  const config = utils.loadConfig(require(path.resolve('./tests/input/async.config.js')))
195
- return utils.buildRequest({}, config).then(request => {
196
- expect(request).toMatchObject({
197
- data: { accountID: '123' },
198
- headers: {
199
- 'Content-Type': 'application/json',
200
- Cookie: 'abc=123',
201
- 'User-Agent':
202
- 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36 Edg/79.0.309.71'
203
- },
204
- maxContentLength: 5242880,
205
- method: 'POST',
206
- responseType: 'arraybuffer',
207
- timeout: 5000,
208
- url: 'http://example.com/20210319/1tv.json',
209
- withCredentials: true
217
+
218
+ utils
219
+ .buildRequest({}, config)
220
+ .then(request => {
221
+ expect(request).toMatchObject({
222
+ data: { accountID: '123' },
223
+ headers: {
224
+ 'Content-Type': 'application/json',
225
+ Cookie: 'abc=123',
226
+ 'User-Agent':
227
+ 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36 Edg/79.0.309.71'
228
+ },
229
+ maxContentLength: 5242880,
230
+ method: 'POST',
231
+ responseType: 'arraybuffer',
232
+ timeout: 5000,
233
+ url: 'http://example.com/20210319/1tv.json',
234
+ withCredentials: true
235
+ })
236
+ done()
210
237
  })
211
- done()
212
- })
238
+ .catch(done)
213
239
  })
214
240
 
215
241
  it('can load logo async', done => {
216
242
  const config = utils.loadConfig(require(path.resolve('./tests/input/async.config.js')))
217
- return utils.loadLogo({}, config).then(logo => {
218
- expect(logo).toBe('http://example.com/logos/1TV.png?x=шеллы&sid=777')
219
- done()
220
- })
243
+
244
+ utils
245
+ .loadLogo({}, config)
246
+ .then(logo => {
247
+ expect(logo).toBe('http://example.com/logos/1TV.png?x=шеллы&sid=777')
248
+ done()
249
+ })
250
+ .catch(done)
221
251
  })
222
252
 
223
253
  it('can parse programs', done => {
224
254
  const config = utils.loadConfig(require(path.resolve('./tests/input/example.com.config.js')))
225
- return utils
255
+
256
+ utils
226
257
  .parsePrograms({ channel: { xmltv_id: '1tv', lang: 'en' } }, config)
227
258
  .then(programs => {
228
259
  expect(programs).toMatchObject([
@@ -240,14 +271,17 @@ it('can parse programs', done => {
240
271
  ])
241
272
  done()
242
273
  })
274
+ .catch(done)
243
275
  })
244
276
 
245
277
  it('can parse programs async', done => {
246
278
  const config = utils.loadConfig(require(path.resolve('./tests/input/async.config.js')))
247
- return utils
279
+
280
+ utils
248
281
  .parsePrograms({ channel: { xmltv_id: '1tv', lang: 'en' } }, config)
249
282
  .then(programs => {
250
283
  expect(programs.length).toBe(0)
251
284
  done()
252
285
  })
286
+ .catch(done)
253
287
  })