|
1 | 1 | const axios = require('axios')
|
2 | 2 | const dayjs = require('dayjs')
|
3 |
| -const utc = require('dayjs/plugin/utc') |
4 | 3 |
|
5 | 4 | let apiVersion
|
6 | 5 |
|
7 |
| -dayjs.extend(utc) |
8 |
| - |
9 | 6 | module.exports = {
|
10 | 7 | site: 'pickx.be',
|
11 | 8 | days: 2,
|
12 |
| - setApiVersion: function (version) { |
13 |
| - apiVersion = version |
14 |
| - }, |
15 |
| - getApiVersion: function () { |
16 |
| - return apiVersion |
17 |
| - }, |
18 |
| - fetchApiVersion: fetchApiVersion, |
19 |
| - url: async function ({ channel, date }) { |
| 9 | + async url({ channel, date }) { |
20 | 10 | if (!apiVersion) {
|
21 | 11 | await fetchApiVersion()
|
22 | 12 | }
|
| 13 | + |
23 | 14 | return `https://px-epg.azureedge.net/airings/${apiVersion}/${date.format(
|
24 | 15 | 'YYYY-MM-DD'
|
25 | 16 | )}/channel/${channel.site_id}?timezone=Europe%2FBrussels`
|
@@ -49,90 +40,58 @@ module.exports = {
|
49 | 40 | episode: item.program.episodeNumber,
|
50 | 41 | actors: item.program.actors,
|
51 | 42 | director: item.program.director ? [item.program.director] : null,
|
52 |
| - start: dayjs.utc(item.programScheduleStart), |
53 |
| - stop: dayjs.utc(item.programScheduleEnd) |
| 43 | + start: dayjs(item.programScheduleStart), |
| 44 | + stop: dayjs(item.programScheduleEnd) |
54 | 45 | })
|
55 | 46 | })
|
56 | 47 | }
|
57 | 48 |
|
58 | 49 | return programs
|
59 | 50 | },
|
60 |
| - async channels({ lang = '' }) { |
| 51 | + async channels() { |
| 52 | + let channels = [] |
| 53 | + |
61 | 54 | const query = {
|
62 | 55 | operationName: 'getChannels',
|
63 | 56 | variables: {
|
64 |
| - language: lang, |
| 57 | + language: 'fr', |
65 | 58 | queryParams: {},
|
66 | 59 | id: '0',
|
67 | 60 | params: {
|
68 | 61 | shouldReadFromCache: true
|
69 | 62 | }
|
70 | 63 | },
|
71 | 64 | query: `query getChannels($language: String!, $queryParams: ChannelQueryParams, $id: String, $params: ChannelParams) {
|
72 |
| - channels(language: $language, queryParams: $queryParams, id: $id, params: $params) { |
73 |
| - id |
74 |
| - channelReferenceNumber |
75 |
| - name |
76 |
| - callLetter |
77 |
| - number |
78 |
| - logo { |
79 |
| - key |
80 |
| - url |
81 |
| - __typename |
82 |
| - } |
83 |
| - language |
84 |
| - hd |
85 |
| - radio |
86 |
| - replayable |
87 |
| - ottReplayable |
88 |
| - playable |
89 |
| - ottPlayable |
90 |
| - recordable |
91 |
| - subscribed |
92 |
| - cloudRecordable |
93 |
| - catchUpWindowInHours |
94 |
| - isOttNPVREnabled |
95 |
| - ottNPVRStart |
96 |
| - subscription { |
97 |
| - channelRef |
98 |
| - subscribed |
99 |
| - upselling { |
100 |
| - upsellable |
101 |
| - packages |
102 |
| - __typename |
103 |
| - } |
104 |
| - __typename |
105 |
| - } |
106 |
| - packages |
107 |
| - __typename |
108 |
| - } |
109 |
| - }` |
| 65 | + channels(language: $language, queryParams: $queryParams, id: $id, params: $params) { |
| 66 | + id |
| 67 | + name |
| 68 | + language |
| 69 | + radio |
| 70 | + } |
| 71 | + }` |
110 | 72 | }
|
111 |
| - const result = await axios |
| 73 | + |
| 74 | + const data = await axios |
112 | 75 | .post('https://api.proximusmwc.be/tiams/v3/graphql', query)
|
113 | 76 | .then(r => r.data)
|
114 | 77 | .catch(console.error)
|
115 | 78 |
|
116 |
| - return ( |
117 |
| - result?.data?.channels |
118 |
| - .filter( |
119 |
| - channel => |
120 |
| - !channel.radio && (!lang || channel.language === (lang === 'de' ? 'ger' : lang)) |
121 |
| - ) |
122 |
| - .map(channel => { |
123 |
| - return { |
124 |
| - lang: channel.language === 'ger' ? 'de' : channel.language, |
125 |
| - site_id: channel.id, |
126 |
| - name: channel.name |
127 |
| - } |
128 |
| - }) || [] |
129 |
| - ) |
| 79 | + data.data.channels.forEach(channel => { |
| 80 | + let lang = channel.language || 'fr' |
| 81 | + if (channel.language === 'ger') lang = 'de' |
| 82 | + |
| 83 | + channels.push({ |
| 84 | + lang, |
| 85 | + site_id: channel.id, |
| 86 | + name: channel.name |
| 87 | + }) |
| 88 | + }) |
| 89 | + |
| 90 | + return channels |
130 | 91 | }
|
131 | 92 | }
|
| 93 | + |
132 | 94 | async function fetchApiVersion() {
|
133 |
| - // you'll never find what happened here :) |
134 |
| - // load the pickx page and get the hash from the MWC configuration. |
135 |
| - // it's not the best way to get the version but it's the only way to get it. |
136 | 95 | const hashUrl = 'https://www.pickx.be/nl/televisie/tv-gids'
|
137 | 96 | const hashData = await axios
|
138 | 97 | .get(hashUrl)
|
|
0 commit comments