diff --git a/sites/visionplus.id/__data__/content.json b/sites/visionplus.id/__data__/content.json new file mode 100644 index 00000000..a3002eee --- /dev/null +++ b/sites/visionplus.id/__data__/content.json @@ -0,0 +1 @@ +{"data":[{"category_id":16,"channel_code":"ch00000090990000001790","channel_name":"https://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_dash_vmx/RCTI-DD.mpd\r\nhttps://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_hls_vmx/RCTI-DD.m3u8","has_tvod":1,"id":"2","image_url":"https://static.mncnow.id/images/channel/e8b7a6a8/f009.png","player":{"drm":true,"drm_license_url":null,"drm_type":null,"url":""},"schedules":[{"date":"2023-06-30","items":[{"a":"a65a9d95ad17320dc4e684e121ec216494d15e5b46690e01b3d883a0c183473f11c91cfede712ed736bdd4b13fd1e384f8d201e0b6e19a266f6dd8e65413b7a2a0a5d78764cf7c1aff18dd11ada5ca9de1b0158078ca130ac96bb36614b6cdb773ddff08e8fcfbeb993205636ed0d2bfbdad371322a121c6be1c56ab9bd34f737d248be09fd3c9be43","drm":true,"e":"02:00","hls":"https://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_hls_vmx/RCTI-DD.m3u8","is_live":false,"is_playable":false,"k":"a3a92d62f2d9ba6f7bbc09d2a97cb5c34b874672ecf4697c3d4767d8a36ca1308e2733c5b77c3af1b1352d240a303e233f5133e218211f75c39473a662a8745014bf9707198a6ade15cdd1402bbc519b7455807226e67818d064c87c77143eacabda77073b84e1ff98b0778b801681be8761508f7f5ff9c908441dbd6cd1","mpd":"https://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_dash_vmx/RCTI-DD.mpd","s":"01:15","synopsis":"","t":"Hafalan Shalat Delisa"},{"a":"a65a9d95ad17320dc4e684e121ec216494d15e5b46690e01b3d883a0c183473f11c91cfede712ed736bdd4b13fd1e384f8d201e0b6e19a266f6dd8e65413b7a2a0a5d78764cf7c1aff18dd11ada5ca9de1b0158078ca130ac96bb36614b6cdb773ddff08e8fcfbeb993205636ed0d2bfbdad371322a121c6be1c56ab9bd34f737d248be09fd3c9be43","drm":true,"e":"03:00","hls":"https://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_hls_vmx/RCTI-DD.m3u8","is_live":false,"is_playable":false,"k":"a3a92d62f2d9ba6f7bbc09d2a97cb5c34b874672ecf4697c3d4767d8a36ca1308e2733c5b77c3af1b1352d240a303e233f5133e218211f75c39473a662a8745014bf9707198a6ade15cdd1402bbc519b7455807226e67818d064c87c77143eacabda77073b84e1ff98b0778b801681be8761508f7f5ff9c908441dbd6cd1","mpd":"https://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_dash_vmx/RCTI-DD.mpd","s":"02:00","synopsis":"","t":"Hafalan Shalat Delisa"},{"a":"a65a9d95ad17320dc4e684e121ec216494d15e5b46690e01b3d883a0c183473f11c91cfede712ed736bdd4b13fd1e384f8d201e0b6e19a266f6dd8e65413b7a2a0a5d78764cf7c1aff18dd11ada5ca9de1b0158078ca130ac96bb36614b6cdb773ddff08e8fcfbeb993205636ed0d2bfbdad371322a121c6be1c56ab9bd34f737d248be09fd3c9be43","drm":true,"e":"03:15","hls":"https://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_hls_vmx/RCTI-DD.m3u8","is_live":false,"is_playable":false,"k":"a3a92d62f2d9ba6f7bbc09d2a97cb5c34b874672ecf4697c3d4767d8a36ca1308e2733c5b77c3af1b1352d240a303e233f5133e218211f75c39473a662a8745014bf9707198a6ade15cdd1402bbc519b7455807226e67818d064c87c77143eacabda77073b84e1ff98b0778b801681be8761508f7f5ff9c908441dbd6cd1","mpd":"https://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_dash_vmx/RCTI-DD.mpd","s":"03:00","synopsis":"","t":"Kultum"},{"a":"a65a9d95ad17320dc4e684e121ec216494d15e5b46690e01b3d883a0c183473f11c91cfede712ed736bdd4b13fd1e384f8d201e0b6e19a266f6dd8e65413b7a2a0a5d78764cf7c1aff18dd11ada5ca9de1b0158078ca130ac96bb36614b6cdb773ddff08e8fcfbeb993205636ed0d2bfbdad371322a121c6be1c56ab9bd34f737d248be09fd3c9be43","drm":true,"e":"04:00","hls":"https://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_hls_vmx/RCTI-DD.m3u8","is_live":false,"is_playable":false,"k":"a3a92d62f2d9ba6f7bbc09d2a97cb5c34b874672ecf4697c3d4767d8a36ca1308e2733c5b77c3af1b1352d240a303e233f5133e218211f75c39473a662a8745014bf9707198a6ade15cdd1402bbc519b7455807226e67818d064c87c77143eacabda77073b84e1ff98b0778b801681be8761508f7f5ff9c908441dbd6cd1","mpd":"https://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_dash_vmx/RCTI-DD.mpd","s":"03:15","synopsis":"","t":"Pura-Pura Haji"},{"a":"a65a9d95ad17320dc4e684e121ec216494d15e5b46690e01b3d883a0c183473f11c91cfede712ed736bdd4b13fd1e384f8d201e0b6e19a266f6dd8e65413b7a2a0a5d78764cf7c1aff18dd11ada5ca9de1b0158078ca130ac96bb36614b6cdb773ddff08e8fcfbeb993205636ed0d2bfbdad371322a121c6be1c56ab9bd34f737d248be09fd3c9be43","drm":true,"e":"05:30","hls":"https://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_hls_vmx/RCTI-DD.m3u8","is_live":false,"is_playable":false,"k":"a3a92d62f2d9ba6f7bbc09d2a97cb5c34b874672ecf4697c3d4767d8a36ca1308e2733c5b77c3af1b1352d240a303e233f5133e218211f75c39473a662a8745014bf9707198a6ade15cdd1402bbc519b7455807226e67818d064c87c77143eacabda77073b84e1ff98b0778b801681be8761508f7f5ff9c908441dbd6cd1","mpd":"https://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_dash_vmx/RCTI-DD.mpd","s":"04:00","synopsis":"","t":"Seputar iNews Pagi (L)"},{"a":"a65a9d95ad17320dc4e684e121ec216494d15e5b46690e01b3d883a0c183473f11c91cfede712ed736bdd4b13fd1e384f8d201e0b6e19a266f6dd8e65413b7a2a0a5d78764cf7c1aff18dd11ada5ca9de1b0158078ca130ac96bb36614b6cdb773ddff08e8fcfbeb993205636ed0d2bfbdad371322a121c6be1c56ab9bd34f737d248be09fd3c9be43","drm":true,"e":"06:15","hls":"https://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_hls_vmx/RCTI-DD.m3u8","is_live":false,"is_playable":false,"k":"a3a92d62f2d9ba6f7bbc09d2a97cb5c34b874672ecf4697c3d4767d8a36ca1308e2733c5b77c3af1b1352d240a303e233f5133e218211f75c39473a662a8745014bf9707198a6ade15cdd1402bbc519b7455807226e67818d064c87c77143eacabda77073b84e1ff98b0778b801681be8761508f7f5ff9c908441dbd6cd1","mpd":"https://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_dash_vmx/RCTI-DD.mpd","s":"05:30","synopsis":"","t":"Sergap"},{"a":"a65a9d95ad17320dc4e684e121ec216494d15e5b46690e01b3d883a0c183473f11c91cfede712ed736bdd4b13fd1e384f8d201e0b6e19a266f6dd8e65413b7a2a0a5d78764cf7c1aff18dd11ada5ca9de1b0158078ca130ac96bb36614b6cdb773ddff08e8fcfbeb993205636ed0d2bfbdad371322a121c6be1c56ab9bd34f737d248be09fd3c9be43","drm":true,"e":"08:00","hls":"https://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_hls_vmx/RCTI-DD.m3u8","is_live":false,"is_playable":false,"k":"a3a92d62f2d9ba6f7bbc09d2a97cb5c34b874672ecf4697c3d4767d8a36ca1308e2733c5b77c3af1b1352d240a303e233f5133e218211f75c39473a662a8745014bf9707198a6ade15cdd1402bbc519b7455807226e67818d064c87c77143eacabda77073b84e1ff98b0778b801681be8761508f7f5ff9c908441dbd6cd1","mpd":"https://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_dash_vmx/RCTI-DD.mpd","s":"06:15","synopsis":"","t":"Go Spot"},{"a":"a65a9d95ad17320dc4e684e121ec216494d15e5b46690e01b3d883a0c183473f11c91cfede712ed736bdd4b13fd1e384f8d201e0b6e19a266f6dd8e65413b7a2a0a5d78764cf7c1aff18dd11ada5ca9de1b0158078ca130ac96bb36614b6cdb773ddff08e8fcfbeb993205636ed0d2bfbdad371322a121c6be1c56ab9bd34f737d248be09fd3c9be43","drm":true,"e":"09:30","hls":"https://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_hls_vmx/RCTI-DD.m3u8","is_live":false,"is_playable":false,"k":"a3a92d62f2d9ba6f7bbc09d2a97cb5c34b874672ecf4697c3d4767d8a36ca1308e2733c5b77c3af1b1352d240a303e233f5133e218211f75c39473a662a8745014bf9707198a6ade15cdd1402bbc519b7455807226e67818d064c87c77143eacabda77073b84e1ff98b0778b801681be8761508f7f5ff9c908441dbd6cd1","mpd":"https://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_dash_vmx/RCTI-DD.mpd","s":"08:00","synopsis":"","t":"Trending Banget Loh (TBL)"},{"a":"a65a9d95ad17320dc4e684e121ec216494d15e5b46690e01b3d883a0c183473f11c91cfede712ed736bdd4b13fd1e384f8d201e0b6e19a266f6dd8e65413b7a2a0a5d78764cf7c1aff18dd11ada5ca9de1b0158078ca130ac96bb36614b6cdb773ddff08e8fcfbeb993205636ed0d2bfbdad371322a121c6be1c56ab9bd34f737d248be09fd3c9be43","drm":true,"e":"11:30","hls":"https://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_hls_vmx/RCTI-DD.m3u8","is_live":false,"is_playable":false,"k":"a3a92d62f2d9ba6f7bbc09d2a97cb5c34b874672ecf4697c3d4767d8a36ca1308e2733c5b77c3af1b1352d240a303e233f5133e218211f75c39473a662a8745014bf9707198a6ade15cdd1402bbc519b7455807226e67818d064c87c77143eacabda77073b84e1ff98b0778b801681be8761508f7f5ff9c908441dbd6cd1","mpd":"https://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_dash_vmx/RCTI-DD.mpd","s":"09:30","synopsis":"","t":"Silet"},{"a":"a65a9d95ad17320dc4e684e121ec216494d15e5b46690e01b3d883a0c183473f11c91cfede712ed736bdd4b13fd1e384f8d201e0b6e19a266f6dd8e65413b7a2a0a5d78764cf7c1aff18dd11ada5ca9de1b0158078ca130ac96bb36614b6cdb773ddff08e8fcfbeb993205636ed0d2bfbdad371322a121c6be1c56ab9bd34f737d248be09fd3c9be43","drm":true,"e":"12:15","hls":"https://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_hls_vmx/RCTI-DD.m3u8","is_live":false,"is_playable":false,"k":"a3a92d62f2d9ba6f7bbc09d2a97cb5c34b874672ecf4697c3d4767d8a36ca1308e2733c5b77c3af1b1352d240a303e233f5133e218211f75c39473a662a8745014bf9707198a6ade15cdd1402bbc519b7455807226e67818d064c87c77143eacabda77073b84e1ff98b0778b801681be8761508f7f5ff9c908441dbd6cd1","mpd":"https://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_dash_vmx/RCTI-DD.mpd","s":"11:30","synopsis":"","t":"Seputar iNews Siang (L)"},{"a":"a65a9d95ad17320dc4e684e121ec216494d15e5b46690e01b3d883a0c183473f11c91cfede712ed736bdd4b13fd1e384f8d201e0b6e19a266f6dd8e65413b7a2a0a5d78764cf7c1aff18dd11ada5ca9de1b0158078ca130ac96bb36614b6cdb773ddff08e8fcfbeb993205636ed0d2bfbdad371322a121c6be1c56ab9bd34f737d248be09fd3c9be43","drm":true,"e":"14:30","hls":"https://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_hls_vmx/RCTI-DD.m3u8","is_live":false,"is_playable":false,"k":"a3a92d62f2d9ba6f7bbc09d2a97cb5c34b874672ecf4697c3d4767d8a36ca1308e2733c5b77c3af1b1352d240a303e233f5133e218211f75c39473a662a8745014bf9707198a6ade15cdd1402bbc519b7455807226e67818d064c87c77143eacabda77073b84e1ff98b0778b801681be8761508f7f5ff9c908441dbd6cd1","mpd":"https://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_dash_vmx/RCTI-DD.mpd","s":"12:15","synopsis":"","t":"Si Doel Anak Sekolahan S2"},{"a":"a65a9d95ad17320dc4e684e121ec216494d15e5b46690e01b3d883a0c183473f11c91cfede712ed736bdd4b13fd1e384f8d201e0b6e19a266f6dd8e65413b7a2a0a5d78764cf7c1aff18dd11ada5ca9de1b0158078ca130ac96bb36614b6cdb773ddff08e8fcfbeb993205636ed0d2bfbdad371322a121c6be1c56ab9bd34f737d248be09fd3c9be43","drm":true,"e":"15:45","hls":"https://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_hls_vmx/RCTI-DD.m3u8","is_live":false,"is_playable":false,"k":"a3a92d62f2d9ba6f7bbc09d2a97cb5c34b874672ecf4697c3d4767d8a36ca1308e2733c5b77c3af1b1352d240a303e233f5133e218211f75c39473a662a8745014bf9707198a6ade15cdd1402bbc519b7455807226e67818d064c87c77143eacabda77073b84e1ff98b0778b801681be8761508f7f5ff9c908441dbd6cd1","mpd":"https://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_dash_vmx/RCTI-DD.mpd","s":"14:30","synopsis":"","t":"Field Trip Ke Atas Awan"},{"a":"a65a9d95ad17320dc4e684e121ec216494d15e5b46690e01b3d883a0c183473f11c91cfede712ed736bdd4b13fd1e384f8d201e0b6e19a266f6dd8e65413b7a2a0a5d78764cf7c1aff18dd11ada5ca9de1b0158078ca130ac96bb36614b6cdb773ddff08e8fcfbeb993205636ed0d2bfbdad371322a121c6be1c56ab9bd34f737d248be09fd3c9be43","drm":true,"e":"17:00","hls":"https://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_hls_vmx/RCTI-DD.m3u8","is_live":false,"is_playable":false,"k":"a3a92d62f2d9ba6f7bbc09d2a97cb5c34b874672ecf4697c3d4767d8a36ca1308e2733c5b77c3af1b1352d240a303e233f5133e218211f75c39473a662a8745014bf9707198a6ade15cdd1402bbc519b7455807226e67818d064c87c77143eacabda77073b84e1ff98b0778b801681be8761508f7f5ff9c908441dbd6cd1","mpd":"https://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_dash_vmx/RCTI-DD.mpd","s":"15:45","synopsis":"","t":"Hole In The Wall"},{"a":"a65a9d95ad17320dc4e684e121ec216494d15e5b46690e01b3d883a0c183473f11c91cfede712ed736bdd4b13fd1e384f8d201e0b6e19a266f6dd8e65413b7a2a0a5d78764cf7c1aff18dd11ada5ca9de1b0158078ca130ac96bb36614b6cdb773ddff08e8fcfbeb993205636ed0d2bfbdad371322a121c6be1c56ab9bd34f737d248be09fd3c9be43","drm":true,"e":"20:00","hls":"https://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_hls_vmx/RCTI-DD.m3u8","is_live":false,"is_playable":false,"k":"a3a92d62f2d9ba6f7bbc09d2a97cb5c34b874672ecf4697c3d4767d8a36ca1308e2733c5b77c3af1b1352d240a303e233f5133e218211f75c39473a662a8745014bf9707198a6ade15cdd1402bbc519b7455807226e67818d064c87c77143eacabda77073b84e1ff98b0778b801681be8761508f7f5ff9c908441dbd6cd1","mpd":"https://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_dash_vmx/RCTI-DD.mpd","s":"17:00","synopsis":"","t":"Silet Awards 2023 (L)"},{"a":"a65a9d95ad17320dc4e684e121ec216494d15e5b46690e01b3d883a0c183473f11c91cfede712ed736bdd4b13fd1e384f8d201e0b6e19a266f6dd8e65413b7a2a0a5d78764cf7c1aff18dd11ada5ca9de1b0158078ca130ac96bb36614b6cdb773ddff08e8fcfbeb993205636ed0d2bfbdad371322a121c6be1c56ab9bd34f737d248be09fd3c9be43","drm":true,"e":"21:15","hls":"https://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_hls_vmx/RCTI-DD.m3u8","is_live":false,"is_playable":false,"k":"a3a92d62f2d9ba6f7bbc09d2a97cb5c34b874672ecf4697c3d4767d8a36ca1308e2733c5b77c3af1b1352d240a303e233f5133e218211f75c39473a662a8745014bf9707198a6ade15cdd1402bbc519b7455807226e67818d064c87c77143eacabda77073b84e1ff98b0778b801681be8761508f7f5ff9c908441dbd6cd1","mpd":"https://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_dash_vmx/RCTI-DD.mpd","s":"20:00","synopsis":"","t":"Cinta Tanpa Karena"},{"a":"a65a9d95ad17320dc4e684e121ec216494d15e5b46690e01b3d883a0c183473f11c91cfede712ed736bdd4b13fd1e384f8d201e0b6e19a266f6dd8e65413b7a2a0a5d78764cf7c1aff18dd11ada5ca9de1b0158078ca130ac96bb36614b6cdb773ddff08e8fcfbeb993205636ed0d2bfbdad371322a121c6be1c56ab9bd34f737d248be09fd3c9be43","drm":true,"e":"23:15","hls":"https://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_hls_vmx/RCTI-DD.m3u8","is_live":false,"is_playable":false,"k":"a3a92d62f2d9ba6f7bbc09d2a97cb5c34b874672ecf4697c3d4767d8a36ca1308e2733c5b77c3af1b1352d240a303e233f5133e218211f75c39473a662a8745014bf9707198a6ade15cdd1402bbc519b7455807226e67818d064c87c77143eacabda77073b84e1ff98b0778b801681be8761508f7f5ff9c908441dbd6cd1","mpd":"https://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_dash_vmx/RCTI-DD.mpd","s":"21:15","synopsis":"","t":"Ikatan Cinta"},{"a":"a65a9d95ad17320dc4e684e121ec216494d15e5b46690e01b3d883a0c183473f11c91cfede712ed736bdd4b13fd1e384f8d201e0b6e19a266f6dd8e65413b7a2a0a5d78764cf7c1aff18dd11ada5ca9de1b0158078ca130ac96bb36614b6cdb773ddff08e8fcfbeb993205636ed0d2bfbdad371322a121c6be1c56ab9bd34f737d248be09fd3c9be43","drm":true,"e":"00:00","hls":"https://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_hls_vmx/RCTI-DD.m3u8","is_live":false,"is_playable":false,"k":"a3a92d62f2d9ba6f7bbc09d2a97cb5c34b874672ecf4697c3d4767d8a36ca1308e2733c5b77c3af1b1352d240a303e233f5133e218211f75c39473a662a8745014bf9707198a6ade15cdd1402bbc519b7455807226e67818d064c87c77143eacabda77073b84e1ff98b0778b801681be8761508f7f5ff9c908441dbd6cd1","mpd":"https://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_dash_vmx/RCTI-DD.mpd","s":"22:00","synopsis":"","t":"RCTI"},{"a":"a65a9d95ad17320dc4e684e121ec216494d15e5b46690e01b3d883a0c183473f11c91cfede712ed736bdd4b13fd1e384f8d201e0b6e19a266f6dd8e65413b7a2a0a5d78764cf7c1aff18dd11ada5ca9de1b0158078ca130ac96bb36614b6cdb773ddff08e8fcfbeb993205636ed0d2bfbdad371322a121c6be1c56ab9bd34f737d248be09fd3c9be43","drm":true,"e":"01:15","hls":"https://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_hls_vmx/RCTI-DD.m3u8","is_live":false,"is_playable":false,"k":"a3a92d62f2d9ba6f7bbc09d2a97cb5c34b874672ecf4697c3d4767d8a36ca1308e2733c5b77c3af1b1352d240a303e233f5133e218211f75c39473a662a8745014bf9707198a6ade15cdd1402bbc519b7455807226e67818d064c87c77143eacabda77073b84e1ff98b0778b801681be8761508f7f5ff9c908441dbd6cd1","mpd":"https://nyanv-live-cdn.mncnow.id/live/eds/RCTI-DD/sa_dash_vmx/RCTI-DD.mpd","s":"23:15","synopsis":"","t":"Tukang Bubur Pulang Haji"}]}]}],"meta":{"limited_viewing":{"popup_type":"visitor","message_to_show":{"message_title":"Login to your account","message_body":"Please Login to continue watching and enjoy our content on Vision+","button_yes":"Login","button_no":"Later","image_popup":"https://cluster-images.visionplus.id/static/website/popup_login.png","action_type":"login"}}},"success":true,"code":200,"message":"Success","status":{"code":0,"message_client":"Success","message_server":"Success"}} \ No newline at end of file diff --git a/sites/visionplus.id/__data__/no_content.json b/sites/visionplus.id/__data__/no_content.json new file mode 100644 index 00000000..671c5c0b --- /dev/null +++ b/sites/visionplus.id/__data__/no_content.json @@ -0,0 +1 @@ +{"data":null,"meta":{},"success":false,"code":400,"message":"Invalid epg date 2024-06-30","status":{"code":0,"message_client":"Invalid epg date 2024-06-30","message_server":"Invalid epg date 2024-06-30"}} \ No newline at end of file diff --git a/sites/visionplus.id/visionplus.id.channels.xml b/sites/visionplus.id/visionplus.id.channels.xml new file mode 100644 index 00000000..b6bad832 --- /dev/null +++ b/sites/visionplus.id/visionplus.id.channels.xml @@ -0,0 +1,134 @@ + + + + ABC Australia + Al Jazeera English + Al Quran Al Kareem + Anhui TV + ANTV + Arirang + AXN + Baby TV + Bali TV + Bandung TV + BeSmart + BTV + Celestial Movies + CGTN Documentary + Cinemachi + Cinemachi Action + Cinemachi Kids + Cinemachi Max + Cinemachi Xtra + Cinema World + CNBC + DAAI TV + Dreamworks + Entertainment + Fight Sports + FMN + Fox News Channel + Galaxy + Galaxy Premium + Global Trekker + GTV + HITS + Hits Movies + IDX Channel + IMC + iNews + Jak TV + JTV + Kids TV + KIX + Kompas TV + Kompas TV + Life + Lifestyle & Fashion + Metro TV + Metro TV + Miao Mi + MNC News + MNC Sports + MNC Sports 2 + MNC Sports 3 + MNC TV + MTV 90s + MTV Live + Music TV + Music TV + Muslim TV + My Cinema + My Cinema Asia + My Family + My Kidz + National Geographic + Net. + NHK World Japan + NHK World Premium + OK TV + Paramount Network + RCTI + Reformed 21 + Rock Action + Rock Entertainment + SEA Today + Soccer Channel + SPOTV + SPOTV 2 + Tawaf TV + Thrill + Trans 7 + Trans TV + TRT World + TVMu + tvN + tvN Movies + TV One + TV One + Vision Prime + Zee Bioskop + Zoomoo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sites/visionplus.id/visionplus.id.config.js b/sites/visionplus.id/visionplus.id.config.js new file mode 100644 index 00000000..a375c148 --- /dev/null +++ b/sites/visionplus.id/visionplus.id.config.js @@ -0,0 +1,91 @@ +const axios = require('axios') +const dayjs = require('dayjs') +const utc = require('dayjs/plugin/utc') +const timezone = require('dayjs/plugin/timezone') +const customParseFormat = require('dayjs/plugin/customParseFormat') +const cheerio = require('cheerio') + +dayjs.extend(utc) +dayjs.extend(timezone) +dayjs.extend(customParseFormat) + +module.exports = { + site: 'visionplus.id', + days: 2, + request: { + headers: { + Authorization: + 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE5NDY0NTE4OTcsInVpZCI6MCwicGwiOiJ3ZWIiLCJndWVzdF90b2tlbiI6ImNhNGNjMjdiNzc3MjBjODEwNzQ2YzY3MTY4NzNjMDI3NGU4NWYxMWQifQ.tt08jLZ3HiNadUeSgc9O-nhIzEi7WMYRjxMb05lEZ74' + } + }, + url({ date, channel }) { + return `https://epg-api.visionplus.id/api/v1/epg?isLive=false&start_time_from=${date.format( + 'YYYY-MM-DD' + )}&channel_ids=${channel.site_id}` + }, + parser({ content, channel, date }) { + let programs = [] + const items = parseItems(content, channel, date) + items.forEach(item => { + let prev = programs[programs.length - 1] + let start = parseStart(item, date) + let stop = parseStop(item, date) + if (prev) { + if (start.isBefore(prev.start)) { + start = start.add(1, 'd') + } + if (stop.isBefore(prev.stop)) { + stop = stop.add(1, 'd') + } + } + + programs.push({ + title: item.t, + description: item.synopsis, + start, + stop + }) + }) + + return programs + }, + async channels() { + const xml = await axios + .get(`https://www.visionplus.id/sitemap-channels.xml`) + .then(r => r.data) + .catch(console.log) + + const $ = cheerio.load(xml) + const items = $('url').toArray() + + return items.map(item => { + const $item = cheerio.load(item) + const loc = $item('loc').text() + const [, site_id] = loc.match(/channel\/(\d+)\//) || [null, null] + + return { + site_id, + name: $item('video\\:title').text().trim() + } + }) + } +} + +function parseStart(item, date) { + return dayjs.tz(`${date.format('YYYY-MM-DD')} ${item.s}`, 'YYYY-MM-DD HH:mm', 'Asia/Jakarta') +} + +function parseStop(item, date) { + return dayjs.tz(`${date.format('YYYY-MM-DD')} ${item.e}`, 'YYYY-MM-DD HH:mm', 'Asia/Jakarta') +} + +function parseItems(content, channel, date) { + const data = JSON.parse(content) + if (!data || !Array.isArray(data.data)) return [] + const channelData = data.data.find(c => c.id === channel.site_id) + if (!channelData || !Array.isArray(channelData.schedules)) return [] + const daySchedule = channelData.schedules.find(d => d.date === date.format('YYYY-MM-DD')) + if (!daySchedule || !Array.isArray(daySchedule.items)) return [] + + return daySchedule.items +} diff --git a/sites/visionplus.id/visionplus.id.test.js b/sites/visionplus.id/visionplus.id.test.js new file mode 100644 index 00000000..74b1590a --- /dev/null +++ b/sites/visionplus.id/visionplus.id.test.js @@ -0,0 +1,65 @@ +// npm run channels:parse -- --config=./sites/visionplus.id/visionplus.id.config.js --output=./sites/visionplus.id/visionplus.id.channels.xml +// npx epg-grabber --config=sites/visionplus.id/visionplus.id.config.js --channels=sites/visionplus.id/visionplus.id.channels.xml --output=guide.xml + +const { parser, url, request } = require('./visionplus.id.config.js') +const fs = require('fs') +const path = require('path') +const axios = require('axios') +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') + +const date = dayjs.utc('2023-06-30', 'YYYY-MM-DD').startOf('d') +const channel = { + site_id: '2', + xmltv_id: 'RCTI.id' +} + +it('can generate valid url', () => { + expect(url({ channel, date })).toBe( + 'https://epg-api.visionplus.id/api/v1/epg?isLive=false&start_time_from=2023-06-30&channel_ids=2' + ) +}) + +it('can generate valid request headers', () => { + expect(request.headers).toMatchObject({ + Authorization: + 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE5NDY0NTE4OTcsInVpZCI6MCwicGwiOiJ3ZWIiLCJndWVzdF90b2tlbiI6ImNhNGNjMjdiNzc3MjBjODEwNzQ2YzY3MTY4NzNjMDI3NGU4NWYxMWQifQ.tt08jLZ3HiNadUeSgc9O-nhIzEi7WMYRjxMb05lEZ74' + }) +}) + +it('can parse response', () => { + const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.json')) + let results = parser({ content, channel, date }) + results = results.map(p => { + p.start = p.start.toJSON() + p.stop = p.stop.toJSON() + return p + }) + + expect(results.length).toBe(18) + expect(results[0]).toMatchObject({ + start: '2023-06-29T18:15:00.000Z', + stop: '2023-06-29T19:00:00.000Z', + title: 'Hafalan Shalat Delisa', + description: `` + }) + + expect(results[17]).toMatchObject({ + start: '2023-06-30T16:15:00.000Z', + stop: '2023-06-30T18:15:00.000Z', + title: 'Tukang Bubur Pulang Haji', + description: '' + }) +}) + +it('can handle empty guide', () => { + const content = fs.readFileSync(path.resolve(__dirname, '__data__/no_content.json')) + const results = parser({ content, channel }) + + expect(results).toMatchObject([]) +})