diff --git a/sites/nowplayer.now.com/__data__/content.json b/sites/nowplayer.now.com/__data__/content.json index eafb20207..9444e0fe9 100644 --- a/sites/nowplayer.now.com/__data__/content.json +++ b/sites/nowplayer.now.com/__data__/content.json @@ -1 +1,1033 @@ -[[{"key":"key_202111174524739","vimProgramId":"202111174524739","name":"ViuTVsix Station Closing","start":1637690400000,"end":1637715600000,"date":"20211124","startTime":"02:00AM","endTime":"09:00AM","duration":420,"recordable":false,"restartTv":false,"npvrProg":false,"npvrStartTime":0,"npvrEndTime":0,"cid":"viutvsix station closing","cc":"","isInWatchlist":false}]] \ No newline at end of file +[ + [ + { + "key": "key_202606244351477", + "vimProgramId": "202606244351477", + "name": "Ragna Crimson S1E2 -The Beginning Of The Story", + "start": 1783785600000, + "end": 1783787400000, + "date": "20260712", + "startTime": "12:00AM", + "endTime": "12:30AM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783787400000, + "npvrStartTime": 1783785600000, + "cid": "ragna crimsons1e2the beginning of the story", + "sid": "ragna crimsons1", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351478", + "vimProgramId": "202606244351478", + "name": "Ragna Crimson S1E3 -Instigation", + "start": 1783787400000, + "end": 1783789200000, + "date": "20260712", + "startTime": "12:30AM", + "endTime": "01:00AM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783789200000, + "npvrStartTime": 1783787400000, + "cid": "ragna crimsons1e3instigation", + "sid": "ragna crimsons1", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351479", + "vimProgramId": "202606244351479", + "name": "Ragna Crimson S1E4 -Carrying Out The Plan", + "start": 1783789200000, + "end": 1783791000000, + "date": "20260712", + "startTime": "01:00AM", + "endTime": "01:30AM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783791000000, + "npvrStartTime": 1783789200000, + "cid": "ragna crimsons1e4carrying out the plan", + "sid": "ragna crimsons1", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351480", + "vimProgramId": "202606244351480", + "name": "Ragna Crimson S1E5 -Wing", + "start": 1783791000000, + "end": 1783792800000, + "date": "20260712", + "startTime": "01:30AM", + "endTime": "02:00AM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783792800000, + "npvrStartTime": 1783791000000, + "cid": "ragna crimsons1e5wing", + "sid": "ragna crimsons1", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351481", + "vimProgramId": "202606244351481", + "name": "Black Clover S1E10 -To Protect Someone", + "start": 1783792800000, + "end": 1783794600000, + "date": "20260712", + "startTime": "02:00AM", + "endTime": "02:30AM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783794600000, + "npvrStartTime": 1783792800000, + "cid": "black clovers1e10to protect someone", + "sid": "black clovers1", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351482", + "vimProgramId": "202606244351482", + "name": "Black Clover S1E11 -What Happened One Day In The Castle Town", + "start": 1783794600000, + "end": 1783796400000, + "date": "20260712", + "startTime": "02:30AM", + "endTime": "03:00AM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783796400000, + "npvrStartTime": 1783794600000, + "cid": "black clovers1e11what happened one day in the castle town", + "sid": "black clovers1", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351483", + "vimProgramId": "202606244351483", + "name": "Black Clover S1E12 -The Wizard King Saw", + "start": 1783796400000, + "end": 1783798200000, + "date": "20260712", + "startTime": "03:00AM", + "endTime": "03:30AM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783798200000, + "npvrStartTime": 1783796400000, + "cid": "black clovers1e12the wizard king saw", + "sid": "black clovers1", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351484", + "vimProgramId": "202606244351484", + "name": "Oshi No Ko S1E3 -Manga-Based TV Drama", + "start": 1783798200000, + "end": 1783800000000, + "date": "20260712", + "startTime": "03:30AM", + "endTime": "04:00AM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783800000000, + "npvrStartTime": 1783798200000, + "cid": "oshi no kos1e3manga-based tv drama", + "sid": "oshi no kos1", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351485", + "vimProgramId": "202606244351485", + "name": "Oshi No Ko S1E4 -Actors", + "start": 1783800000000, + "end": 1783801800000, + "date": "20260712", + "startTime": "04:00AM", + "endTime": "04:30AM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783801800000, + "npvrStartTime": 1783800000000, + "cid": "oshi no kos1e4actors", + "sid": "oshi no kos1", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351486", + "vimProgramId": "202606244351486", + "name": "Unnamed Memory S2E13 -From A Blank Page Anew", + "start": 1783801800000, + "end": 1783803600000, + "date": "20260712", + "startTime": "04:30AM", + "endTime": "05:00AM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783803600000, + "npvrStartTime": 1783801800000, + "cid": "unnamed memorys2e13from a blank page anew", + "sid": "unnamed memorys2", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351487", + "vimProgramId": "202606244351487", + "name": "Unnamed Memory S2E14 -Emerging From A Glass Cocoon", + "start": 1783803600000, + "end": 1783805400000, + "date": "20260712", + "startTime": "05:00AM", + "endTime": "05:30AM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783805400000, + "npvrStartTime": 1783803600000, + "cid": "unnamed memorys2e14emerging from a glass cocoon", + "sid": "unnamed memorys2", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351488", + "vimProgramId": "202606244351488", + "name": "Unnamed Memory S2E15 -Unanswered Prayer", + "start": 1783805400000, + "end": 1783807200000, + "date": "20260712", + "startTime": "05:30AM", + "endTime": "06:00AM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783807200000, + "npvrStartTime": 1783805400000, + "cid": "unnamed memorys2e15unanswered prayer", + "sid": "unnamed memorys2", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351489", + "vimProgramId": "202606244351489", + "name": "Fruits Basket S2E23 -It's Cinderella-Ish", + "start": 1783807200000, + "end": 1783809000000, + "date": "20260712", + "startTime": "06:00AM", + "endTime": "06:30AM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783809000000, + "npvrStartTime": 1783807200000, + "cid": "fruits baskets2e23it's cinderella-ish", + "sid": "fruits baskets2", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351490", + "vimProgramId": "202606244351490", + "name": "Fruits Basket S2E24 -Here You Are", + "start": 1783809000000, + "end": 1783810800000, + "date": "20260712", + "startTime": "06:30AM", + "endTime": "07:00AM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783810800000, + "npvrStartTime": 1783809000000, + "cid": "fruits baskets2e24here you are", + "sid": "fruits baskets2", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351491", + "vimProgramId": "202606244351491", + "name": "Fruits Basket S2E25 -I'm Different Now", + "start": 1783810800000, + "end": 1783812600000, + "date": "20260712", + "startTime": "07:00AM", + "endTime": "07:30AM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783812600000, + "npvrStartTime": 1783810800000, + "cid": "fruits baskets2e25i'm different now", + "sid": "fruits baskets2", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351492", + "vimProgramId": "202606244351492", + "name": "Black Clover S1E10 -To Protect Someone", + "start": 1783812600000, + "end": 1783814400000, + "date": "20260712", + "startTime": "07:30AM", + "endTime": "08:00AM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783814400000, + "npvrStartTime": 1783812600000, + "cid": "black clovers1e10to protect someone", + "sid": "black clovers1", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351493", + "vimProgramId": "202606244351493", + "name": "Black Clover S1E11 -What Happened One Day In The Castle Town", + "start": 1783814400000, + "end": 1783816200000, + "date": "20260712", + "startTime": "08:00AM", + "endTime": "08:30AM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783816200000, + "npvrStartTime": 1783814400000, + "cid": "black clovers1e11what happened one day in the castle town", + "sid": "black clovers1", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351494", + "vimProgramId": "202606244351494", + "name": "Black Clover S1E12 -The Wizard King Saw", + "start": 1783816200000, + "end": 1783818000000, + "date": "20260712", + "startTime": "08:30AM", + "endTime": "09:00AM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783818000000, + "npvrStartTime": 1783816200000, + "cid": "black clovers1e12the wizard king saw", + "sid": "black clovers1", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351495", + "vimProgramId": "202606244351495", + "name": "One Piece: Marineford Arc S1E3 -The Beginning Of The War! Ace And Whitebeard's Past!", + "start": 1783818000000, + "end": 1783819800000, + "date": "20260712", + "startTime": "09:00AM", + "endTime": "09:30AM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783819800000, + "npvrStartTime": 1783818000000, + "cid": "one piece: marineford arcs1e3the beginning of the war! ace and whitebeard's past!", + "sid": "one piece: marineford arcs1", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351496", + "vimProgramId": "202606244351496", + "name": "One Piece: Marineford Arc S1E4 -The Force That Could Destroy The World! The Power Of The Tremor-Tremor Frui", + "start": 1783819800000, + "end": 1783821600000, + "date": "20260712", + "startTime": "09:30AM", + "endTime": "10:00AM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783821600000, + "npvrStartTime": 1783819800000, + "cid": "one piece: marineford arcs1e4the force that could destroy the world! the power of the tremor-tremor frui", + "sid": "one piece: marineford arcs1", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351497", + "vimProgramId": "202606244351497", + "name": "One Piece: Marineford Arc S1E5 -An All-Encompassing Inferno!! Admiral Akainu's Power!", + "start": 1783821600000, + "end": 1783823400000, + "date": "20260712", + "startTime": "10:00AM", + "endTime": "10:30AM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783823400000, + "npvrStartTime": 1783821600000, + "cid": "one piece: marineford arcs1e5an all-encompassing inferno!! admiral akainu's power!", + "sid": "one piece: marineford arcs1", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351498", + "vimProgramId": "202606244351498", + "name": "One Piece: Marineford Arc S1E6 -A Descendant Of The Beast! Little Oars Jr. Full Speed Ahead!", + "start": 1783823400000, + "end": 1783825200000, + "date": "20260712", + "startTime": "10:30AM", + "endTime": "11:00AM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783825200000, + "npvrStartTime": 1783823400000, + "cid": "one piece: marineford arcs1e6a descendant of the beast! little oars jr. full speed ahead!", + "sid": "one piece: marineford arcs1", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351499", + "vimProgramId": "202606244351499", + "name": "Oshi No Ko S1E3 -Manga-Based TV Drama", + "start": 1783825200000, + "end": 1783827000000, + "date": "20260712", + "startTime": "11:00AM", + "endTime": "11:30AM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783827000000, + "npvrStartTime": 1783825200000, + "cid": "oshi no kos1e3manga-based tv drama", + "sid": "oshi no kos1", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351500", + "vimProgramId": "202606244351500", + "name": "Oshi No Ko S1E4 -Actors", + "start": 1783827000000, + "end": 1783828800000, + "date": "20260712", + "startTime": "11:30AM", + "endTime": "12:00PM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783828800000, + "npvrStartTime": 1783827000000, + "cid": "oshi no kos1e4actors", + "sid": "oshi no kos1", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351501", + "vimProgramId": "202606244351501", + "name": "Unnamed Memory S2E13 -From A Blank Page Anew", + "start": 1783828800000, + "end": 1783830600000, + "date": "20260712", + "startTime": "12:00PM", + "endTime": "12:30PM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783830600000, + "npvrStartTime": 1783828800000, + "cid": "unnamed memorys2e13from a blank page anew", + "sid": "unnamed memorys2", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351502", + "vimProgramId": "202606244351502", + "name": "Unnamed Memory S2E14 -Emerging From A Glass Cocoon", + "start": 1783830600000, + "end": 1783832400000, + "date": "20260712", + "startTime": "12:30PM", + "endTime": "01:00PM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783832400000, + "npvrStartTime": 1783830600000, + "cid": "unnamed memorys2e14emerging from a glass cocoon", + "sid": "unnamed memorys2", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351503", + "vimProgramId": "202606244351503", + "name": "Unnamed Memory S2E15 -Unanswered Prayer", + "start": 1783832400000, + "end": 1783834200000, + "date": "20260712", + "startTime": "01:00PM", + "endTime": "01:30PM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783834200000, + "npvrStartTime": 1783832400000, + "cid": "unnamed memorys2e15unanswered prayer", + "sid": "unnamed memorys2", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351504", + "vimProgramId": "202606244351504", + "name": "One Piece: Marineford Arc S1E3 -The Beginning Of The War! Ace And Whitebeard's Past!", + "start": 1783834200000, + "end": 1783836000000, + "date": "20260712", + "startTime": "01:30PM", + "endTime": "02:00PM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783836000000, + "npvrStartTime": 1783834200000, + "cid": "one piece: marineford arcs1e3the beginning of the war! ace and whitebeard's past!", + "sid": "one piece: marineford arcs1", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351505", + "vimProgramId": "202606244351505", + "name": "One Piece: Marineford Arc S1E4 -The Force That Could Destroy The World! The Power Of The Tremor-Tremor Frui", + "start": 1783836000000, + "end": 1783837800000, + "date": "20260712", + "startTime": "02:00PM", + "endTime": "02:30PM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783837800000, + "npvrStartTime": 1783836000000, + "cid": "one piece: marineford arcs1e4the force that could destroy the world! the power of the tremor-tremor frui", + "sid": "one piece: marineford arcs1", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351506", + "vimProgramId": "202606244351506", + "name": "One Piece: Marineford Arc S1E5 -An All-Encompassing Inferno!! Admiral Akainu's Power!", + "start": 1783837800000, + "end": 1783839600000, + "date": "20260712", + "startTime": "02:30PM", + "endTime": "03:00PM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783839600000, + "npvrStartTime": 1783837800000, + "cid": "one piece: marineford arcs1e5an all-encompassing inferno!! admiral akainu's power!", + "sid": "one piece: marineford arcs1", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351507", + "vimProgramId": "202606244351507", + "name": "One Piece: Marineford Arc S1E6 -A Descendant Of The Beast! Little Oars Jr. Full Speed Ahead!", + "start": 1783839600000, + "end": 1783841400000, + "date": "20260712", + "startTime": "03:00PM", + "endTime": "03:30PM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783841400000, + "npvrStartTime": 1783839600000, + "cid": "one piece: marineford arcs1e6a descendant of the beast! little oars jr. full speed ahead!", + "sid": "one piece: marineford arcs1", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351508", + "vimProgramId": "202606244351508", + "name": "Black Clover S1E10 -To Protect Someone", + "start": 1783841400000, + "end": 1783843080000, + "date": "20260712", + "startTime": "03:30PM", + "endTime": "03:58PM", + "duration": 28, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783843080000, + "npvrStartTime": 1783841400000, + "cid": "black clovers1e10to protect someone", + "sid": "black clovers1", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351509", + "vimProgramId": "202606244351509", + "name": "Black Clover S1E11 -What Happened One Day In The Castle Town", + "start": 1783843080000, + "end": 1783844880000, + "date": "20260712", + "startTime": "03:58PM", + "endTime": "04:28PM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783844880000, + "npvrStartTime": 1783843080000, + "cid": "black clovers1e11what happened one day in the castle town", + "sid": "black clovers1", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351510", + "vimProgramId": "202606244351510", + "name": "Black Clover S1E12 -The Wizard King Saw", + "start": 1783844880000, + "end": 1783846800000, + "date": "20260712", + "startTime": "04:28PM", + "endTime": "05:00PM", + "duration": 32, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783846800000, + "npvrStartTime": 1783844880000, + "cid": "black clovers1e12the wizard king saw", + "sid": "black clovers1", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351511", + "vimProgramId": "202606244351511", + "name": "Oshi No Ko S1E3 -Manga-Based TV Drama", + "start": 1783846800000, + "end": 1783848600000, + "date": "20260712", + "startTime": "05:00PM", + "endTime": "05:30PM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783848600000, + "npvrStartTime": 1783846800000, + "cid": "oshi no kos1e3manga-based tv drama", + "sid": "oshi no kos1", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351512", + "vimProgramId": "202606244351512", + "name": "Oshi No Ko S1E4 -Actors", + "start": 1783848600000, + "end": 1783850400000, + "date": "20260712", + "startTime": "05:30PM", + "endTime": "06:00PM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783850400000, + "npvrStartTime": 1783848600000, + "cid": "oshi no kos1e4actors", + "sid": "oshi no kos1", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351513", + "vimProgramId": "202606244351513", + "name": "Unnamed Memory S2E13 -From A Blank Page Anew", + "start": 1783850400000, + "end": 1783852080000, + "date": "20260712", + "startTime": "06:00PM", + "endTime": "06:28PM", + "duration": 28, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783852080000, + "npvrStartTime": 1783850400000, + "cid": "unnamed memorys2e13from a blank page anew", + "sid": "unnamed memorys2", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351514", + "vimProgramId": "202606244351514", + "name": "Unnamed Memory S2E14 -Emerging From A Glass Cocoon", + "start": 1783852080000, + "end": 1783853880000, + "date": "20260712", + "startTime": "06:28PM", + "endTime": "06:58PM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783853880000, + "npvrStartTime": 1783852080000, + "cid": "unnamed memorys2e14emerging from a glass cocoon", + "sid": "unnamed memorys2", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351515", + "vimProgramId": "202606244351515", + "name": "Unnamed Memory S2E15 -Unanswered Prayer", + "start": 1783853880000, + "end": 1783855800000, + "date": "20260712", + "startTime": "06:58PM", + "endTime": "07:30PM", + "duration": 32, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783855800000, + "npvrStartTime": 1783853880000, + "cid": "unnamed memorys2e15unanswered prayer", + "sid": "unnamed memorys2", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351516", + "vimProgramId": "202606244351516", + "name": "Black Clover S1E10 -To Protect Someone", + "start": 1783855800000, + "end": 1783857480000, + "date": "20260712", + "startTime": "07:30PM", + "endTime": "07:58PM", + "duration": 28, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783857480000, + "npvrStartTime": 1783855800000, + "cid": "black clovers1e10to protect someone", + "sid": "black clovers1", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351517", + "vimProgramId": "202606244351517", + "name": "Black Clover S1E11 -What Happened One Day In The Castle Town", + "start": 1783857480000, + "end": 1783859280000, + "date": "20260712", + "startTime": "07:58PM", + "endTime": "08:28PM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783859280000, + "npvrStartTime": 1783857480000, + "cid": "black clovers1e11what happened one day in the castle town", + "sid": "black clovers1", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351518", + "vimProgramId": "202606244351518", + "name": "Black Clover S1E12 -The Wizard King Saw", + "start": 1783859280000, + "end": 1783861200000, + "date": "20260712", + "startTime": "08:28PM", + "endTime": "09:00PM", + "duration": 32, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783861200000, + "npvrStartTime": 1783859280000, + "cid": "black clovers1e12the wizard king saw", + "sid": "black clovers1", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351519", + "vimProgramId": "202606244351519", + "name": "One Piece: Marineford Arc S1E3 -The Beginning Of The War! Ace And Whitebeard's Past!", + "start": 1783861200000, + "end": 1783863000000, + "date": "20260712", + "startTime": "09:00PM", + "endTime": "09:30PM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783863000000, + "npvrStartTime": 1783861200000, + "cid": "one piece: marineford arcs1e3the beginning of the war! ace and whitebeard's past!", + "sid": "one piece: marineford arcs1", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351520", + "vimProgramId": "202606244351520", + "name": "One Piece: Marineford Arc S1E4 -The Force That Could Destroy The World! The Power Of The Tremor-Tremor Frui", + "start": 1783863000000, + "end": 1783864680000, + "date": "20260712", + "startTime": "09:30PM", + "endTime": "09:58PM", + "duration": 28, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783864680000, + "npvrStartTime": 1783863000000, + "cid": "one piece: marineford arcs1e4the force that could destroy the world! the power of the tremor-tremor frui", + "sid": "one piece: marineford arcs1", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351521", + "vimProgramId": "202606244351521", + "name": "One Piece: Marineford Arc S1E5 -An All-Encompassing Inferno!! Admiral Akainu's Power!", + "start": 1783864680000, + "end": 1783866480000, + "date": "20260712", + "startTime": "09:58PM", + "endTime": "10:28PM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783866480000, + "npvrStartTime": 1783864680000, + "cid": "one piece: marineford arcs1e5an all-encompassing inferno!! admiral akainu's power!", + "sid": "one piece: marineford arcs1", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351522", + "vimProgramId": "202606244351522", + "name": "One Piece: Marineford Arc S1E6 -A Descendant Of The Beast! Little Oars Jr. Full Speed Ahead!", + "start": 1783866480000, + "end": 1783868400000, + "date": "20260712", + "startTime": "10:28PM", + "endTime": "11:00PM", + "duration": 32, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783868400000, + "npvrStartTime": 1783866480000, + "cid": "one piece: marineford arcs1e6a descendant of the beast! little oars jr. full speed ahead!", + "sid": "one piece: marineford arcs1", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351523", + "vimProgramId": "202606244351523", + "name": "Fruits Basket S2E23 -It's Cinderella-Ish", + "start": 1783868400000, + "end": 1783870200000, + "date": "20260712", + "startTime": "11:00PM", + "endTime": "11:30PM", + "duration": 30, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783870200000, + "npvrStartTime": 1783868400000, + "cid": "fruits baskets2e23it's cinderella-ish", + "sid": "fruits baskets2", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351524", + "vimProgramId": "202606244351524", + "name": "Fruits Basket S2E24 -Here You Are", + "start": 1783870200000, + "end": 1783871880000, + "date": "20260712", + "startTime": "11:30PM", + "endTime": "11:58PM", + "duration": 28, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783871880000, + "npvrStartTime": 1783870200000, + "cid": "fruits baskets2e24here you are", + "sid": "fruits baskets2", + "cc": "", + "isInWatchlist": false + }, + { + "key": "key_202606244351525", + "vimProgramId": "202606244351525", + "name": "Fruits Basket S2E25 -I'm Different Now", + "start": 1783871880000, + "end": 1783873800000, + "date": "20260712", + "startTime": "11:58PM", + "endTime": "12:30AM", + "duration": 32, + "recordable": true, + "restartTv": false, + "restartOtt": false, + "npvrProg": true, + "npvrEndTime": 1783873800000, + "npvrStartTime": 1783871880000, + "cid": "fruits baskets2e25i'm different now", + "sid": "fruits baskets2", + "cc": "", + "isInWatchlist": false + } + ] +] \ No newline at end of file diff --git a/sites/nowplayer.now.com/__data__/program01.json b/sites/nowplayer.now.com/__data__/program01.json new file mode 100644 index 000000000..d9d7cb661 --- /dev/null +++ b/sites/nowplayer.now.com/__data__/program01.json @@ -0,0 +1,55 @@ +{ + "actualStartTime": 1783785600000, + "programDateTimeForMobile": "Tomorrow 12 Jul\u003Cbr /\u003E12:00 AM-12:30 AM", + "autoProgName": "第2集 - The Beginning Of The Story", + "autoSeriesName": "克拉龍人拉格納", + "autoSynopsis": "翼之血族在各地發動全面進攻, 拉格納運用獲得的力量與新出現的上級龍梅古卜帝戰鬥, 而他在此時所遇見的少女又是何許人物?未來與現在的記憶混亂不清, 為了迴避自己曾經歷過的淒慘未來, 拉格納決定投入與龍族的戰鬥, 並下定決心與某人道別。", + "channelAutoName": "Animax", + "channelChiName": "Animax", + "channelEngName": "Animax", + "channelId": "150", + "channelKey": "201507200000414", + "chiProgName": "第2集 - The Beginning Of The Story", + "chiSeriesName": "克拉龍人拉格納", + "chiSynopsis": "翼之血族在各地發動全面進攻, 拉格納運用獲得的力量與新出現的上級龍梅古卜帝戰鬥, 而他在此時所遇見的少女又是何許人物?未來與現在的記憶混亂不清, 為了迴避自己曾經歷過的淒慘未來, 拉格納決定投入與龍族的戰鬥, 並下定決心與某人道別。", + "cid": "ragna crimsons1e2the beginning of the story", + "createdBy": "keith.sk.hung@pccw.com", + "createdDate": "2026-06-24 12:13:00.0", + "director": "Ken Takakura", + "duration": 30, + "effectiveDay": 7, + "endTime": 1783787400000, + "engProgName": "E2 - The Beginning Of The Story", + "engSeriesName": "Ragna Crimson", + "engSynopsis": "Ragna uses his newly gained power to hunt dragons and makes a resolution to avoid the miserable future that awaits him.", + "episodeName": "Ragna Crimson S1E2 -The Beginning Of The Story", + "episodeNum": 2, + "episodic": "Y", + "expirationDay": 10, + "firstReleaseYear": 2023, + "genre": "Anime", + "hasOtherNonAdult": false, + "hasOtherTime": false, + "isDeleted": "N", + "isKolWatchParty": "N", + "isLive": "N", + "isNpvrOnair": "N", + "isNpvrProg": "Y", + "isRestartTv": "N", + "isRestartOtt": "N", + "modifiedBy": "Npvr Postcut Assetloader", + "modifiedDate": "2026-07-05 00:00:27.0", + "originalLanguage": "Japanese", + "portraitImage": "", + "premier": 0, + "progName": "Ragna Crimson S1E2 -The Beginning Of The Story", + "programId": "202606244351477", + "recordable": "Y", + "seriesName": "Ragna Crimson", + "sid": "ragna crimsons1", + "synopsis": "Ragna uses his newly gained power to hunt dragons and makes a resolution to avoid the miserable future that awaits him.", + "watchPartyPlatform": [], + "withImageTitle": "N", + "isAdultContent": false, + "isInWatchlist": false +} \ No newline at end of file diff --git a/sites/nowplayer.now.com/__data__/program02.json b/sites/nowplayer.now.com/__data__/program02.json new file mode 100644 index 000000000..50c4041a7 --- /dev/null +++ b/sites/nowplayer.now.com/__data__/program02.json @@ -0,0 +1,55 @@ +{ + "actualStartTime": 1783871880000, + "programDateTimeForMobile": "Tomorrow 12 Jul\u003Cbr /\u003E11:58 PM-12:30 AM", + "autoProgName": "第25集 - I'm Different Now", + "autoSeriesName": "魔法水果籃", + "autoSynopsis": "紅野看了小透準備的一個類似灰姑娘的故事, 並希望他能知道亞里紗對自己的感覺。", + "channelAutoName": "Animax", + "channelChiName": "Animax", + "channelEngName": "Animax", + "channelId": "150", + "channelKey": "201507200000414", + "chiProgName": "第25集 - I'm Different Now", + "chiSeriesName": "魔法水果籃", + "chiSynopsis": "紅野看了小透準備的一個類似灰姑娘的故事, 並希望他能知道亞里紗對自己的感覺。", + "cid": "fruits baskets2e25i'm different now", + "createdBy": "keith.sk.hung@pccw.com", + "createdDate": "2026-06-24 12:13:00.0", + "director": "Yoshihide Ibata", + "duration": 32, + "effectiveDay": 7, + "endTime": 1783873800000, + "engProgName": "E25 - I'm Different Now", + "engSeriesName": "Fruits Basket", + "engSynopsis": "Kureno watches a copy of the Cinderella-ish play which Tohru prepared, hoping that he will realize Arisa's feelings for him.", + "episodeName": "Fruits Basket S2E25 -I'm Different Now", + "episodeNum": 25, + "episodic": "Y", + "expirationDay": 10, + "firstReleaseYear": 2020, + "genre": "Anime", + "hasOtherNonAdult": true, + "hasOtherTime": true, + "isDeleted": "N", + "isKolWatchParty": "N", + "isLive": "N", + "isNpvrOnair": "N", + "isNpvrProg": "Y", + "isRestartTv": "N", + "isRestartOtt": "N", + "modifiedBy": "Npvr Postcut Assetloader", + "modifiedDate": "2026-07-06 00:00:24.0", + "originalLanguage": "Japanese", + "portraitImage": "", + "premier": 0, + "progName": "Fruits Basket S2E25 -I'm Different Now", + "programId": "202606244351525", + "recordable": "Y", + "seriesName": "Fruits Basket", + "sid": "fruits baskets2", + "synopsis": "Kureno watches a copy of the Cinderella-ish play which Tohru prepared, hoping that he will realize Arisa's feelings for him.", + "watchPartyPlatform": [], + "withImageTitle": "N", + "isAdultContent": false, + "isInWatchlist": false +} \ No newline at end of file diff --git a/sites/nowplayer.now.com/nowplayer.now.com.config.js b/sites/nowplayer.now.com/nowplayer.now.com.config.js index 14697d29c..1301f8dda 100644 --- a/sites/nowplayer.now.com/nowplayer.now.com.config.js +++ b/sites/nowplayer.now.com/nowplayer.now.com.config.js @@ -2,34 +2,81 @@ const axios = require('axios') const cheerio = require('cheerio') const dayjs = require('dayjs') const utc = require('dayjs/plugin/utc') +const doFetch = require('@ntlab/sfetch') dayjs.extend(utc) +const eventIds = {} +const cookies = {} +const caches = {} + module.exports = { site: 'nowplayer.now.com', days: 2, - url: function ({ channel, date }) { + url({ channel, date }) { const diff = date.diff(dayjs.utc().startOf('d'), 'd') + 1 return `https://nowplayer.now.com/tvguide/epglist?channelIdList[]=${channel.site_id}&day=${diff}` }, request: { + cache: { + ttl: 24 * 60 * 60 * 1000 // 1 day + }, headers({ channel }) { return { - Cookie: `LANG=${channel.lang}; Expires=null; Path=/; Domain=nowplayer.now.com` + 'user-agent': + 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36 OPR/132.0.0.0', + 'cookie': Object.entries({ ...cookies, LANG: channel.lang}) + .map(a => `${a[0]}=${a[1]}`) + .join('; ') } } }, - parser: function ({ content }) { - let programs = [] + async parser({ content, channel, headers }) { + const programs = [] + parseCookies(headers) const items = parseItems(content) - items.forEach(item => { - programs.push({ - title: item.name, - start: parseStart(item), - stop: parseStop(item) + if (items.length) { + if (eventIds[channel.lang] === undefined) { + eventIds[channel.lang] = [] + } + const queues = items + .filter(item => item.vimProgramId && !eventIds[channel.lang].includes(item.vimProgramId)) + .map(item => { + const url = `https://nowplayer.now.com/tvguide/epgprogramdetail?programId=${item.vimProgramId}` + if (caches[url] !== undefined) { + item.detail = caches[url] + } else { + return { + url, + params: { headers: module.exports.request.headers({ channel }) }, + item + } + } + }) + .filter(Boolean) + const worker = process.env.EPG_DETAILED_GUIDE_WORKER || 10 + const delay = process.env.EPG_DETAILED_GUIDE_DELAY || 500 + await doFetch(queues, { worker }, async (queue, res, headers) => { + parseCookies(headers) + queue.item.detail = res + caches[queue.url] = res + await new Promise(resolve => setTimeout(resolve, delay)) }) - }) + items.forEach(item => { + eventIds[channel.lang].push(item.vimProgramId) + programs.push({ + title: (channel.lang === 'zh' ? item.detail?.chiProgName : item.detail?.progName) || item.name, + description: channel.lang === 'zh' ? item.detail?.chiSynopsis : item.detail?.synopsis, + categories: [item.detail?.genre, item.detail?.subGenre].filter(Boolean), + actor: item.detail?.actor?.split(',').map(a => a.trim()), + director: item.detail?.director?.split(',').map(a => a.trim()), + year: item.detail?.firstReleaseYear?.toString(), + start: getDate(item.start), + stop: getDate(item.end) + }) + }) + } return programs }, @@ -39,7 +86,7 @@ module.exports = { .then(r => r.data) .catch(console.log) - let channels = [] + const channels = [] const $ = cheerio.load(html) $('body > div.container > .tv-guide-s-g > div > div').each((i, el) => { @@ -54,17 +101,27 @@ module.exports = { } } -function parseStart(item) { - return dayjs(item.start) -} - -function parseStop(item) { - return dayjs(item.end) -} - function parseItems(content) { const data = JSON.parse(content) if (!data || !Array.isArray(data)) return [] return Array.isArray(data[0]) ? data[0] : [] } + +function parseCookies(headers) { + if (headers && Array.isArray(headers['set-cookie'])) { + headers['set-cookie'] + .map(cookie => cookie.split(';')[0].trim()) + .forEach(cookie => { + const [k, v] = [ + cookie.substr(0, cookie.indexOf('=')), + cookie.substr(cookie.indexOf('=') + 1), + ] + cookies[k] = v + }) + } +} + +function getDate(dt) { + return dayjs.utc(dt) +} diff --git a/sites/nowplayer.now.com/nowplayer.now.com.test.js b/sites/nowplayer.now.com/nowplayer.now.com.test.js index 39e90077a..e90346a51 100644 --- a/sites/nowplayer.now.com/nowplayer.now.com.test.js +++ b/sites/nowplayer.now.com/nowplayer.now.com.test.js @@ -1,57 +1,119 @@ const { parser, url, request } = require('./nowplayer.now.com.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') + +process.env.EPG_DETAILED_GUIDE_DELAY = 0 + dayjs.extend(customParseFormat) dayjs.extend(utc) +jest.mock('axios') + +const date = dayjs.utc().startOf('d') const channel = { - lang: 'zh', - site_id: '096', - xmltv_id: 'ViuTVsix.hk' + lang: 'en', + site_id: '150', + xmltv_id: 'AnimaxAsia.sg@SD' } +axios.get.mockImplementation(url => { + const urls = { + 'https://nowplayer.now.com/tvguide/epglist?channelIdList[]=150&day=1': 'content.json', + 'https://nowplayer.now.com/tvguide/epgprogramdetail?programId=202606244351477': 'program01.json', + 'https://nowplayer.now.com/tvguide/epgprogramdetail?programId=202606244351525': 'program02.json' + } + let data = '' + if (urls[url] !== undefined) { + data = JSON.parse(fs.readFileSync(path.join(__dirname, '__data__', urls[url]))) + } + return Promise.resolve({ data }) +}) + + it('can generate valid url for today', () => { - const date = dayjs.utc().startOf('d') expect(url({ channel, date })).toBe( - 'https://nowplayer.now.com/tvguide/epglist?channelIdList[]=096&day=1' + 'https://nowplayer.now.com/tvguide/epglist?channelIdList[]=150&day=1' ) }) it('can generate valid url for tomorrow', () => { - const date = dayjs.utc().startOf('d').add(1, 'd') - expect(url({ channel, date })).toBe( - 'https://nowplayer.now.com/tvguide/epglist?channelIdList[]=096&day=2' + expect(url({ channel, date: date.add(1, 'd') })).toBe( + 'https://nowplayer.now.com/tvguide/epglist?channelIdList[]=150&day=2' ) }) it('can generate valid request headers', () => { expect(request.headers({ channel })).toMatchObject({ - Cookie: 'LANG=zh; Expires=null; Path=/; Domain=nowplayer.now.com' + cookie: 'LANG=en' }) }) -it('can parse response', () => { +it('can parse en response', async () => { const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.json')) - const result = parser({ content }).map(p => { - p.start = p.start.toJSON() - p.stop = p.stop.toJSON() - return p - }) + const result = (await parser({ content, channel, date })) + .map(p => { + p.start = p.start.toJSON() + p.stop = p.stop.toJSON() + return p + }) - expect(result).toMatchObject([ - { - start: '2021-11-23T18:00:00.000Z', - stop: '2021-11-24T01:00:00.000Z', - title: 'ViuTVsix Station Closing' - } - ]) + expect(result.length).toBe(49) + expect(result[0]).toMatchObject({ + start: '2026-07-11T16:00:00.000Z', + stop: '2026-07-11T16:30:00.000Z', + title: 'Ragna Crimson S1E2 -The Beginning Of The Story', + description: + 'Ragna uses his newly gained power to hunt dragons and makes a resolution to avoid the miserable future that awaits him.', + categories: ['Anime'], + year: '2023' + }) + expect(result[48]).toMatchObject({ + start: '2026-07-12T15:58:00.000Z', + stop: '2026-07-12T16:30:00.000Z', + title: 'Fruits Basket S2E25 -I\'m Different Now', + description: + 'Kureno watches a copy of the Cinderella-ish play which Tohru prepared, hoping that he will realize Arisa\'s feelings for him.', + categories: ['Anime'], + year: '2020' + }) }) -it('can handle empty guide', () => { - const result = parser({ +it('can parse zh response', async () => { + const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.json')) + const result = (await parser({ content, channel: { ...channel, lang: 'zh' }, date })) + .map(p => { + p.start = p.start.toJSON() + p.stop = p.stop.toJSON() + return p + }) + + expect(result.length).toBe(49) + expect(result[0]).toMatchObject({ + start: '2026-07-11T16:00:00.000Z', + stop: '2026-07-11T16:30:00.000Z', + title: '第2集 - The Beginning Of The Story', + description: + '翼之血族在各地發動全面進攻, 拉格納運用獲得的力量與新出現的上級龍梅古卜帝戰鬥, 而他在此時所遇見的少女又是何許人物?未來與現在的記憶混亂不清, 為了迴避自己曾經歷過的淒慘未來, 拉格納決定投入與龍族的戰鬥, 並下定決心與某人道別。', + categories: ['Anime'], + year: '2023' + }) + expect(result[48]).toMatchObject({ + start: '2026-07-12T15:58:00.000Z', + stop: '2026-07-12T16:30:00.000Z', + title: '第25集 - I\'m Different Now', + description: + '紅野看了小透準備的一個類似灰姑娘的故事, 並希望他能知道亞里紗對自己的感覺。', + categories: ['Anime'], + year: '2020' + }) +}) + +it('can handle empty guide', async () => { + const result = await parser({ content: '[[]]' }) expect(result).toMatchObject([]) diff --git a/sites/nowplayer.now.com/nowplayer.now.com_en.channels.xml b/sites/nowplayer.now.com/nowplayer.now.com_en.channels.xml index c4538e3ab..4901204fd 100644 --- a/sites/nowplayer.now.com/nowplayer.now.com_en.channels.xml +++ b/sites/nowplayer.now.com/nowplayer.now.com_en.channels.xml @@ -1,16 +1,13 @@ - MOOV Concert/MV - Watch N Learn - Netflix - Sports Schedule Highlights Now Sports 4K 3 + Now Sports 615 Now Sports Premier League 7 Now Sports 641 Now Sports 647 Now Sports 651 Now Sports 652 - Adult Promotional Channel + Lucky 688 ABC Australia Al Jazeera English Animal Planet @@ -34,7 +31,6 @@ CCTV-4 CCTV-13 CGTN - Channel Adult CINEMAX Channel NewsAsia CNBC @@ -42,7 +38,6 @@ COLORS Crime + Investigation CTI Asia Channel - Da Vinci Discovery Asia Discovery Channel Discovery Science @@ -63,7 +58,6 @@ HISTORY HITS HITS MOVIES - Ice Fire Panda TV KBS World Lifetime @@ -102,7 +96,6 @@ Now Sports 7 Now Sports 618 Now Sports 619 - Now Sports 650 Now Sports Plus Now Sports Premier League 1 Now Sports Premier League 2 @@ -112,7 +105,6 @@ Now Sports Premier League 6 Now Sports Premier League TV Now Sports Prime - Now Video Express Outdoor Channel Phoenix Chinese Channel Phoenix InfoNews Channel @@ -135,8 +127,6 @@ tvN GBA Satellite TV Viu channel - ViuTV - ViuTVsix Zee Cinema International Zee News Zee TV diff --git a/sites/nowplayer.now.com/nowplayer.now.com_zh.channels.xml b/sites/nowplayer.now.com/nowplayer.now.com_zh.channels.xml index 065b20d65..63a13e1d9 100644 --- a/sites/nowplayer.now.com/nowplayer.now.com_zh.channels.xml +++ b/sites/nowplayer.now.com/nowplayer.now.com_zh.channels.xml @@ -1,16 +1,13 @@ - MOOV Concert/MV - Watch N Learn - Netflix - Sports Schedule Highlights Now Sports 4K 3 + Now Sports 615 Now Sports Premier League 7 Now Sports 641 Now Sports 647 Now Sports 651 Now Sports 652 - Adult Promotional Channel + Lucky 688 ABC Australia Al Jazeera English Animal Planet @@ -34,7 +31,6 @@ CCTV-4 CCTV-13 CGTN - Channel Adult CINEMAX Channel NewsAsia CNBC @@ -42,7 +38,6 @@ COLORS Crime + Investigation CTI Asia Channel - Da Vinci Discovery Asia Discovery Channel Discovery Science @@ -63,7 +58,6 @@ HISTORY HITS HITS MOVIES - Ice Fire Panda TV KBS World Lifetime @@ -102,7 +96,6 @@ Now Sports 7 Now Sports 618 Now Sports 619 - Now Sports 650 Now Sports Plus Now Sports Premier League 1 Now Sports Premier League 2 @@ -112,7 +105,6 @@ Now Sports Premier League 6 Now Sports Premier League TV Now Sports Prime - Now Video Express Outdoor Channel Phoenix Chinese Channel Phoenix InfoNews Channel @@ -135,8 +127,6 @@ tvN GBA Satellite TV Viu channel - ViuTV - ViuTVsix Zee Cinema International Zee News Zee TV