mirror of
https://github.com/iptv-org/epg.git
synced 2025-05-10 00:50:09 -04:00
Merge pull request #2626 from iptv-org/add-xem.kplus.vn
Add xem.kplus.vn
This commit is contained in:
commit
2e28ca2539
7 changed files with 330 additions and 0 deletions
1
sites/xem.kplus.vn/__data__/content.json
Normal file
1
sites/xem.kplus.vn/__data__/content.json
Normal file
File diff suppressed because one or more lines are too long
1
sites/xem.kplus.vn/__data__/no_content.json
Normal file
1
sites/xem.kplus.vn/__data__/no_content.json
Normal file
|
@ -0,0 +1 @@
|
|||
{"Message":"Invalid query"}
|
1
sites/xem.kplus.vn/__data__/session.json
Normal file
1
sites/xem.kplus.vn/__data__/session.json
Normal file
|
@ -0,0 +1 @@
|
|||
{"language":"en_US","userName":"y1Kq52eeNaO-Kq_q1zct6w","userLogin":"y1Kq52eeNaO-Kq_q1zct6w@vstv.solocoo.tv","params":{"FPData.FPIsAliveUrl":"https:\/\/fp.kplus.vn\/api\/fp\/isalivesg","User.Status":"sg.ui.sso.user.status.anonymous","FPData.FPKey":"uZnqUXcx96ZpSOry9oxAFJp83MK4GHgEVre6nCsGDM0=","FPData.FPKeyGenDate":1486305098,"FPData.FPTimeInterval":120},"demo":true,"countryCode":"VN","communityName":"VSTV","brandName":"K+","consent":false,"ssoToken":"eyJrZXkiOiJ2c3R2IiwiYWxnIjoiZGlyIiwiZW5jIjoiQTEyOENCQy1IUzI1NiJ9..4iiGNAPVdVI3F6pi_XrTMA.VL3zg6XsqkNGPpbSzCUp-mrNj0iGRUJFrka_yaQlQOncczgVCaZErKPRRg0lJmvcOcI7no_odo8vK5t-qb-Ad3lNo0PamQ8tyMB61exMG7I4DMI1obN4H13pe2s5G4V5SYuLWzRaiMfJ_mg-6D-F7089TVFvG8Ic2g5btAbHadxh8xlCsngHLKjVggxZ9QN7pf1pLbffcr3-B6Kty9qXHHK2abl5Mr4e7C5pT0smAoMnk4Zbi5rdHgrM9377voeA3rDmEAeKlNxgGrKDYxZPrKqUSVD3jZrFfvLS90ymDyUz05UdtEuNTbLoroFUstEDabYXEnBqa8CDif3db7pQOm1vRGu273rx3I3Q6NrvDRc7y5MMgwqkZfkAB1R1EEBCo9YKh1z3yzGWIjK2zqhp2L60JM9xQbxWyUrOkJunPBRcjc5zvlBGc3uzVxjmr9DXNrRru62eowsKzW4GVncSirUG2-Wp8T_4-lgCdB4cF64.tH0F17MobUCKVlAPjNkpCA","userId":"c29e8d02-b3e2-79ef-1cfd-efbc55f5de82","token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0di5zb2xvY29vLmF1dGgiOnsicyI6Inc0MDhhMGViMC1kNTBmLTExZWYtYWZmYS1hZjk3NzViODM4YWQiLCJ1IjoiQW8yZXd1S3o3M2tjX2UtOFZmWGVnZyIsImwiOiJlbl9VUyIsImQiOiJQQyIsImRtIjoiQ2hyb21lIiwib20iOiJPIiwiYyI6ImJ6bXZPVEFOM05qdzZadjYtYnZveThwbnMwNHBtbTdxeG9QOUVwaVNQVzAiLCJzdCI6ImZ1bGwiLCJnIjoiZXlKaWNpSTZJblp6ZEhZaUxDSjFjQ0k2SW1Od2FTSXNJbkIwSWpwbVlXeHpaU3dpWkdVaU9pSmljbUZ1WkUxaGNIQnBibWNpTENKa1lpSTZabUZzYzJWOSIsImYiOjYsImIiOiJ2c3R2In0sIm5iZiI6MTczNzE0NTk1NCwiZXhwIjoxNzM3MTYzNzg0LCJpYXQiOjE3MzcxNDU5NTQsImF1ZCI6ImNwaSJ9.25av5gdR38FW0SmnzNiE4EV1D4Gozox2Wgvoh7QKZaM"}
|
21
sites/xem.kplus.vn/readme.md
Normal file
21
sites/xem.kplus.vn/readme.md
Normal file
|
@ -0,0 +1,21 @@
|
|||
# xem.kplus.vn
|
||||
|
||||
https://xem.kplus.vn/
|
||||
|
||||
### Download the guide
|
||||
|
||||
```sh
|
||||
npm run grab --- --site=xem.kplus.vn
|
||||
```
|
||||
|
||||
### Update channel list
|
||||
|
||||
```sh
|
||||
npm run channels:parse --- --config=./sites/xem.kplus.vn/xem.kplus.vn.config.js --output=./sites/xem.kplus.vn/xem.kplus.vn.channels.xml
|
||||
```
|
||||
|
||||
### Test
|
||||
|
||||
```sh
|
||||
npm test --- xem.kplus.vn
|
||||
```
|
85
sites/xem.kplus.vn/xem.kplus.vn.channels.xml
Normal file
85
sites/xem.kplus.vn/xem.kplus.vn.channels.xml
Normal file
|
@ -0,0 +1,85 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<channels>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="0brdJXzat6AY-5tYKnbXA6wTtMOjRlIgSSW5tvRa">HAU GIANG</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="0QLVCGV6d83eNSdVsQ0GIolP3i2YmHon-OcMciKe">Quoc Phong</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="1QsvBohZIRvk57tRMCD_uACbk2xFuOXxItw2AOO2">BINH PHUOC 1</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="03yiXEYHdpRJKOeI8Y7iXLjzKjrFuCYCGgjPm8qW">On Football</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="3wtIVGSgCa6oIbO4Q6VSCk4Bjj2vYFzr7HTB_GmH">VTV2</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="4o9U0OncN2xNqG4W_gqjfKxy4foQxWVzwOQWDTr4">HTV9</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="5UwBQcjTxpjFkTBG2ZdA29Npv1viy_0uIMRHSVEt">HA TINH</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="6FnSMBX5EDN7jL149tXn2MMf4dJRJLg5STfs8vEt">VTV9</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="6VMeiOd9rCVDO7s3lbKzKExXcHZSqbrSerbDIoYi">VTV4</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="7Ar763XCCf_z2LYvU8X6GVYtgMhv2NCdP0xaOFQO">VINH PHUC</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="8dBuYRCYrHgCqied4ukt2yAVuq6U3KOrGXVOFp9a">NHK WORLD</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="8LvlAATMtPHuonzJGHfIySUck5Y5eFTTqiykTG-p">THANH HOA</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="9jB8eRpGRgp3pe37j8LUIfzi65no02me62P5e0Ys">ON SPORTS+</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="9sJe5tumFRryrgv1pn1NjNdwSJOO5qM-Uz3ZF_cI">vstv.channels&vod.nav.sctv14.logo</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="93Fm1pt06G3XN6aYpEY5YAafKvk_MOs_6Qj57Jn9">Cinemax</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="-VyuUALEqcJ99-pPuhujpwWk1gBtA5BlEHINdw5i">ON ECHANNEL</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="_dtUzHgcUW4eJYXtdeId8rSzeitAwasE7dQ63DWy">SON LA</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="_NqZMIGgqqTheZvG1hQooIwl_TFgBJObPxcXKI8k">VTV5</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="ac98BsuoQwW50SBW9c67dYFxGYYGAGvrYQgNFRW9">BINH THUAN</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="At9MqFxfjhvLlcuWM8txMw9V6XGbn_a_cyWfKy3N">DA NANG1</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="chRTksCsqu9YyN_QN6ODbHwQuictD1Jf1hVkvqkF">KBS World</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="ctVDKWuSGol5ZUSNmByrowLyDI9Nley69JzlQrHP">QUANG NAM</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="CVIhugmChcVcfi1CqIVdsOpNIMHKA67KxhDjqb0F">VTV8</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="dDmD0toCd6WBZ9_JIh--ksBTHtpKRN7lVfb-3eHw">VTV3</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="dn1oPY0sKhN45KI2cOcHryYvG9EOsOgvyhk692CH">THAI NGUYEN1</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="DOWqaN4f_2PPDdnUZkrfoJgQN_FXWPWG8I4jZII4">NGHE AN</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="dspTzb0bh2c0I6sfYZ71sG5vKmtBU9C4wMwAGMnf">DAK LAK</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="dYfUW_1HsOU02vKMDFYusLMhxxf90Ms8VIDqmA1N">VUNG TAU</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="DZIm6nVLT_Fvmy5Do4OVeTpJv8p1bjFXkqnh5rsY">HTV2</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="FiDo0bpidpf46QmheFgCTDn6sS0xsQGLdprdgSRi">TV5MONDE</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="FveUWOvtGqlmvEd2br4ByHlAOQSHkXOnlQgxJ145">FRANCE24 ENGLISH</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="G8K9Nb0qvRPNyTOTF4paqB1UQVYEvcdhBDK35Ep6">QTV1</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="GJjKBNWA7p4AMKMbl1MpxZ6gds7-qXJ1dgfpFvSn">ON V FAMILY</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="GYr7KKu9mouGRs8laZSk5dO4T-PHsgNBGTMkBXHQ">On Sports</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="h6yruk_fLs-rDwiDJzekxMYu19MiI_G2XY8jMzLp">HUE</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="He1HcrKA62AEEmNQyFy8dFa2zEY4JOuHe4JhwDcl">SCTV9</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="hGfRyROqeHE1fD4clI7NsO6oIfMNkRFuJrC08rIk">THVL4</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="hYsakA64TnDGHRZil6qpZV64K7vkrnLTQ2maFHmY">ON Vie Dramas</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="I8OHQHTj3jPruBMjBoc060yAU8-qaBnOgeSfjmHJ">QTV3</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="JPNfXNMnfxC4RjW4FmP503P-jCcVuLciRMadCcCB">THVL2</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="kWpedZ7S9A9bIFmZxJY1jX7Vs3D7xVoDQeNxsNCH">ON VieGiaiTri</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="KXiz7EdtAPTDLl6XtwtdGhmLxJm1szxXG9rA4Ii8">LAO CAI</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="l9tXOfwdfoIfGc_lV5O1uk7FVwieFR9d8SsSonF7">FRANCE24 FRENCH</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="lkdL4SevQlnEmuh3Xtd_-MAncLavsdqrv9CGJdBY">DONG NAI2</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="ltl465oq_adpA9PkAJcR7SbfRJezlQCkQ_yM3cAZ">TAY NINH</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="mo255grdX-L7DTnkE7VZXQmx9Tt3CZfjhMBd-5U0">HAI PHONG</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="MXcPi2XP6u2o6rR2NwDcYXf1iB3hrddykkrnN_qT">ON SPORTS NEWS</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="nn6WUId3EhgXRFUVBQDZXQFvBz_QqkbKhAel2xvD">LAM DONG</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="noZPbpCVLFHFwRcQbnLnhrpMGm6K-TJFNOJFnRSm">HTVC Thuần Việt</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="NqN7bjzeFaVUSpeEUUI_oKRjmw2ryZwnCCaMNXU9">DONG NAI1</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="NwwR2PqSPYCc01B1dLOOdV0ZlKXGioDLYC84O-H6">ON BIBI</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="OfTbJdMN03T3CZRFwyZQgNW6ua90RCS7iZhlz7M6">SCTV PTH</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="p58VLAPdwXZhPLqL46u2evSyD7AWsOBAS5zojHOZ">KHANH HOA</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="pPDPKS9_I8LucOy_DFvOqRuqqmsd7BGuWYsJHHhV">HTV7</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="ppGddOeLML-bb7evYBi3zdPBgrLqyfphaexZK1Z-">DW</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="pq0SYZaa23xM0boki1GJJXVDnOdSuUkDfAnXEUtD">BAC NINH</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="QBDJ8lw9kDReNbLwEWv5pxDxP2jR6HbZE1HAl8uZ">BAC LIEU</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="qCiPWtOsmF2j7RTAHndzdSHtd3mnjddC92VGtoov">BINH THUAN -BTV6</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="RjUg5hsjsM4_FUQBa5Z1UQpkt2iTL1HYvXnQFlVp">THVL1</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="RPlRFqHEFSz6HKHydsyG4QzhOdXmjKMdGnYm0zxv">BINH DINH</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="rT-RWZbXNpD7c2DPd0jaFqImlLFR624hr3FEuypc">THVL3</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="S2tMUo8FUa0KwojYapArN2DvaWiyPOorsHD1IwM4">ON MUSIC</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="SBgRv8LgzajsF57upmh7MzqMPI04QUC_wnmXCjjG">HBO</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="SWn4bdB-AvlQS717rv7HJJDFa5QFttkc3F_aaw1p">VTVCanTho</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="tI1QbHGGNvlIQSCBHvDiNVgcxSrEspqB0Em87SjE">HA NOI1</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="tJI5BT8LyuIlRx2To9jkMlM0pkM6GXskLCcPte0N">ANTV</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="TwTUqV7a7S33qhCrjWZi1pN0r6LtvJReRP2Z8gAG">ON PHIMVIET</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="uRY9Lhx566fKPuaLWcjs55wo_u2yIAkDFcE7F7J6">HTV3</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="VK1WCSqS17JD9sZJAzYM6Ct--bQ_AUbrwzrZJO0D">ON INFOTV</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="W5p8R3WPMSHBdOs7w9uGRmpoUEUfcFlzLr2v8axR">ON GOLF</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="WBSb0vxfNmLVmW814CFu_4CAeEukAj5QxKHd9JwV">VTV1</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="Wq_0dTRDyMQyD8UiLvBQaw44yF-DkC03DmAWw-XL">LONG AN</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="Y-zViGmCqPTLk5QhH_GyVo7hAfd5WZjhe4PMHklx">ON STYLE</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="yAtZc2r_rfTkgaEvVOOPxdh7Ft3_PKMgfArygdW6">HTV TT</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="Yib9xfFfMNS-5wiFrV5MIzRT6GlPeQ8zKliksWwD">HA GIANG</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="Yo93e3168WOgzSKHGc3Vv19xpVcAvZaMtvILHtfe">VTV7</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="zstzQ0jPD6iYzWxP7epeMD4ego0ndKPiCloOhX4t">ON O2TV</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="">K+SPORT1</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="">K+SPORT2</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="">K+CINE</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="">K+ACTION</channel>
|
||||
<channel site="xem.kplus.vn" lang="vi" xmltv_id="" site_id="">K+KIDS</channel>
|
||||
</channels>
|
144
sites/xem.kplus.vn/xem.kplus.vn.config.js
Normal file
144
sites/xem.kplus.vn/xem.kplus.vn.config.js
Normal file
|
@ -0,0 +1,144 @@
|
|||
const dayjs = require('dayjs')
|
||||
const axios = require('axios')
|
||||
const utc = require('dayjs/plugin/utc')
|
||||
const timezone = require('dayjs/plugin/timezone')
|
||||
const customParseFormat = require('dayjs/plugin/customParseFormat')
|
||||
const doFetch = require('@ntlab/sfetch')
|
||||
|
||||
dayjs.extend(utc)
|
||||
dayjs.extend(timezone)
|
||||
dayjs.extend(customParseFormat)
|
||||
|
||||
let session
|
||||
|
||||
module.exports = {
|
||||
site: 'xem.kplus.vn',
|
||||
days: 2,
|
||||
url({ channel, date }) {
|
||||
return `https://tvapi-sgn.solocoo.tv/v1/assets?query=schedule,forrelated,${
|
||||
channel.site_id
|
||||
}&from=${date.format('YYYY-MM-DDTHH:mm:ss[Z]')}&limit=1000`
|
||||
},
|
||||
request: {
|
||||
async headers() {
|
||||
if (!session) {
|
||||
session = await loadSessionDetails()
|
||||
if (!session || !session.token) return null
|
||||
}
|
||||
|
||||
return {
|
||||
authorization: `Bearer ${session.token}`
|
||||
}
|
||||
}
|
||||
},
|
||||
parser: function ({ content, date }) {
|
||||
let programs = []
|
||||
const items = parseItems(content, date)
|
||||
items.forEach(item => {
|
||||
programs.push({
|
||||
title: item.title,
|
||||
categories: parseCategories(item),
|
||||
images: parseImages(item),
|
||||
start: parseStart(item),
|
||||
stop: parseStop(item)
|
||||
})
|
||||
})
|
||||
|
||||
return programs
|
||||
},
|
||||
async channels() {
|
||||
const session = await loadSessionDetails()
|
||||
if (!session || !session.token) throw new Error('The session token is missing')
|
||||
|
||||
const groups = [
|
||||
'Channels_Kplus',
|
||||
'Channels_VTV',
|
||||
'Channels_VTVcab',
|
||||
'Channels_Kênh Quốc Tế',
|
||||
'Channels_SCTV',
|
||||
'Channels_HTV-HTVC',
|
||||
'Channels_THVL',
|
||||
'Channels_Kênh Thiết Yếu',
|
||||
'Channels_Kênh Địa Phương'
|
||||
]
|
||||
|
||||
const queue = groups.map(group => ({
|
||||
url: `https://tvapi-sgn.solocoo.tv/v1/assets?query=nav,${group}&limit=100`,
|
||||
params: {
|
||||
headers: {
|
||||
authorization: `Bearer ${session.token}`
|
||||
}
|
||||
}
|
||||
}))
|
||||
|
||||
let channels = []
|
||||
await doFetch(queue, (url, data) => {
|
||||
data.assets.forEach(channel => {
|
||||
channels.push({
|
||||
lang: 'vi',
|
||||
name: channel.params.internalTitle.replace('Channels_', ''),
|
||||
site_id: channel.params.params.id
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
return channels
|
||||
}
|
||||
}
|
||||
|
||||
function parseCategories(item) {
|
||||
return Array.isArray(item?.params?.genres) ? item.params.genres.map(i => i.title) : []
|
||||
}
|
||||
|
||||
function parseImages(item) {
|
||||
return Array.isArray(item?.images)
|
||||
? item.images
|
||||
.filter(i => i.url.indexOf('orientation=landscape') > 0)
|
||||
.map(i => `${i.url}&w=460&h=260`)
|
||||
: []
|
||||
}
|
||||
|
||||
function parseStart(item) {
|
||||
return item?.params?.start ? dayjs.utc(item.params.start, 'YYYY-MM-DDTHH:mm:ss[Z]') : null
|
||||
}
|
||||
|
||||
function parseStop(item) {
|
||||
return item?.params?.end ? dayjs.utc(item.params.end, 'YYYY-MM-DDTHH:mm:ss[Z]') : null
|
||||
}
|
||||
|
||||
function parseItems(content, date) {
|
||||
try {
|
||||
const data = JSON.parse(content)
|
||||
if (!data || !Array.isArray(data.assets)) return []
|
||||
|
||||
return data.assets.filter(
|
||||
p => p?.params?.start && date.isSame(dayjs.utc(p.params.start, 'YYYY-MM-DDTHH:mm:ss[Z]'), 'd')
|
||||
)
|
||||
} catch (err) {
|
||||
console.log(err)
|
||||
return []
|
||||
}
|
||||
}
|
||||
|
||||
function loadSessionDetails() {
|
||||
return axios
|
||||
.post('https://tvapi-sgn.solocoo.tv/v1/session', {
|
||||
ssoToken:
|
||||
'eyJhbGciOiJkaXIiLCJrZXkiOiJ2c3R2IiwiZW5jIjoiQTEyOENCQy1IUzI1NiJ9..6jMKWv5bSqODWOWLmeERqw._WcKmMW2ij3yPJkhFllQHgXOkW7powvzT-5p6G4_jjYa8vzJybmHu_1CwIEb_s2hVOyaNDi6M-NVLNY9CaNU3aSC-ojZ4UoQ7QLRTFWP-2uY-mL5IgJtL7Xknus5blHJbR8B-xaOODXIJh8PneZORmPHa5EHhs1vOmqpGb1COZwqlw_WFbGT9EsFq6W8fsYH3O5cUqec608Uad-wK59OQIJyofZJwrb6VTthmwwIDxX6Dn-kyYssfdXvPF_BXu5A-e2MFOsdzvMjENdq0FHCk-b9OojzENR6S-JEtSTrZHrgSfHsqb1DwVbtuaetFlV-A3-gxyqqHH7QIvkRM38StNMAp_q8TUauhluwKK3nuXbgogiQ9d9Kc9s7WGoBPOVHsZ4w6wJ9fDBIyhApOJUAdEINi7dLpe1pTBBk6ZA504PVyQ0d6DtdhJhkbT6I88wwxz2U6sF5tInZBcdyZzCa1KKHWQuonTJ4IPcILGQFuzo.lhVv2QaTOaxTS9F4Ht2L3A',
|
||||
osVersion: 'Windows 10',
|
||||
deviceModel: 'Chrome',
|
||||
deviceType: 'PC',
|
||||
deviceSerial: 'w408a0eb0-d50f-11ef-affa-af9775b838ad',
|
||||
deviceOem: 'Chrome',
|
||||
devicePrettyName: 'Chrome 128.0.0.0',
|
||||
appVersion: '12.1',
|
||||
language: 'en_US',
|
||||
brand: 'vstv',
|
||||
memberId: '0',
|
||||
featureLevel: 6,
|
||||
provisionData:
|
||||
'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE3MzcxNDU4MjYsImljIjp0cnVlLCJ1cCI6ImNwaSIsImJyIjoidnN0diIsImRzIjoidzQwOGEwZWIwLWQ1MGYtMTFlZi1hZmZhLWFmOTc3NWI4MzhhZCIsImRlIjoiYnJhbmRNYXBwaW5nIn0.Ou6yh5qXtlK4NhyWHciVszARr98PLL1TkaXKpqQtub8'
|
||||
})
|
||||
.then(r => r.data)
|
||||
.catch(console.log)
|
||||
}
|
77
sites/xem.kplus.vn/xem.kplus.vn.test.js
Normal file
77
sites/xem.kplus.vn/xem.kplus.vn.test.js
Normal file
|
@ -0,0 +1,77 @@
|
|||
const { parser, url, request } = require('./xem.kplus.vn.config.js')
|
||||
const axios = require('axios')
|
||||
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)
|
||||
|
||||
jest.mock('axios')
|
||||
|
||||
axios.post.mockImplementation(url => {
|
||||
if (url === 'https://tvapi-sgn.solocoo.tv/v1/session') {
|
||||
return Promise.resolve({
|
||||
data: JSON.parse(fs.readFileSync(path.resolve(__dirname, '__data__/session.json')))
|
||||
})
|
||||
} else {
|
||||
return Promise.resolve({
|
||||
data: {}
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
const date = dayjs.utc('2025-01-18', 'YYYY-MM-DD').startOf('d')
|
||||
const channel = {
|
||||
site_id: 'F31WvdXdwYNOInUaTeIC-ixsLQVsrSNgUczDSFCN',
|
||||
xmltv_id: 'KPlusKids.vn'
|
||||
}
|
||||
|
||||
it('can generate valid url', () => {
|
||||
expect(url({ channel, date })).toBe(
|
||||
'https://tvapi-sgn.solocoo.tv/v1/assets?query=schedule,forrelated,F31WvdXdwYNOInUaTeIC-ixsLQVsrSNgUczDSFCN&from=2025-01-18T00:00:00Z&limit=1000'
|
||||
)
|
||||
})
|
||||
|
||||
it('can generate valid request headers', async () => {
|
||||
expect(await request.headers()).toMatchObject({
|
||||
authorization:
|
||||
'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0di5zb2xvY29vLmF1dGgiOnsicyI6Inc0MDhhMGViMC1kNTBmLTExZWYtYWZmYS1hZjk3NzViODM4YWQiLCJ1IjoiQW8yZXd1S3o3M2tjX2UtOFZmWGVnZyIsImwiOiJlbl9VUyIsImQiOiJQQyIsImRtIjoiQ2hyb21lIiwib20iOiJPIiwiYyI6ImJ6bXZPVEFOM05qdzZadjYtYnZveThwbnMwNHBtbTdxeG9QOUVwaVNQVzAiLCJzdCI6ImZ1bGwiLCJnIjoiZXlKaWNpSTZJblp6ZEhZaUxDSjFjQ0k2SW1Od2FTSXNJbkIwSWpwbVlXeHpaU3dpWkdVaU9pSmljbUZ1WkUxaGNIQnBibWNpTENKa1lpSTZabUZzYzJWOSIsImYiOjYsImIiOiJ2c3R2In0sIm5iZiI6MTczNzE0NTk1NCwiZXhwIjoxNzM3MTYzNzg0LCJpYXQiOjE3MzcxNDU5NTQsImF1ZCI6ImNwaSJ9.25av5gdR38FW0SmnzNiE4EV1D4Gozox2Wgvoh7QKZaM'
|
||||
})
|
||||
})
|
||||
|
||||
it('can parse response', () => {
|
||||
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.json'))
|
||||
let results = parser({ content, date }).map(p => {
|
||||
p.start = p.start.toJSON()
|
||||
p.stop = p.stop.toJSON()
|
||||
return p
|
||||
})
|
||||
|
||||
expect(results.length).toBe(100)
|
||||
expect(results[0]).toMatchObject({
|
||||
start: '2025-01-18T00:03:00.000Z',
|
||||
stop: '2025-01-18T00:10:00.000Z',
|
||||
title: 'Masha and the Bear S1, Ep01',
|
||||
categories: ['Children'],
|
||||
images: [
|
||||
'https://img.kplus.vn/images?filename=Media/HDVN/2021_11/KID_CAR_21__2660472_0a13b965-0b37-4552-99d5-a5998ca20156.jpg&orientation=landscape&w=460&h=260'
|
||||
]
|
||||
})
|
||||
expect(results[99]).toMatchObject({
|
||||
start: '2025-01-18T20:59:00.000Z',
|
||||
stop: '2025-01-18T21:28:00.000Z',
|
||||
title: 'KID SHOW: BUG SHAPE BOOKMARK - WOODEATER PAPERWEIGHT',
|
||||
categories: ['Children'],
|
||||
images: [
|
||||
'https://img.kplus.vn/images?filename=Media/HDVN/2012_02/KID_EDU_HNCP__VN_20200_9d92b5d2-02da-49ac-969e-4b20aad8ccec.jpg&orientation=landscape&w=460&h=260'
|
||||
]
|
||||
})
|
||||
})
|
||||
|
||||
it('can handle empty guide', () => {
|
||||
const content = fs.readFileSync(path.resolve(__dirname, '__data__/no_content.json'))
|
||||
const result = parser({ content, channel, date })
|
||||
expect(result).toMatchObject([])
|
||||
})
|
Loading…
Add table
Add a link
Reference in a new issue