Merge pull request #3172 from tohenk/fix-sky.com

Fix sky.com to fetch 24 hours schedule.
This commit is contained in:
PopeyeTheSai10r
2026-06-17 19:55:23 -07:00
committed by GitHub
7 changed files with 2114 additions and 1214 deletions
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+906
View File
@@ -0,0 +1,906 @@
{
"date": "20260609",
"schedule": [
{
"sid": "4086",
"events": [
{
"st": 1780952400,
"d": 3600,
"eid": "Eff6-36b",
"cgid": 10053,
"programmeuuid": "0bb9723c-28a7-42f4-bafc-86022508e1ae",
"seasonnumber": 1,
"episodenumber": 2,
"seasonuuid": "d8ff9f3e-d828-4d0b-bd12-9f706be0cf9f",
"seriesuuid": "379ebd4d-88b1-4c54-8ad2-28a31273fccc",
"haschildren": false,
"t": "New: Proof Is Out There: Unexplained Edi",
"sy": "Mysterious Underwater Creatures: Investigators analyse footage of unexplained ocean events, from a possible sea serpent to deep-sea creatures washing up onto California's shores. (S1, ep 2)",
"eg": 5,
"esg": 6,
"tso": 0,
"r": "--",
"at": "S",
"s": true,
"ad": false,
"hd": true,
"new": true,
"canl": true,
"canb": true,
"hasAlternativeAudio": false,
"restartable": false,
"slo": false,
"w": true,
"ippv": false,
"oppv": false,
"signed": false
},
{
"st": 1780956000,
"d": 3600,
"eid": "Eff6-36e",
"cgid": 10053,
"programmeuuid": "f4206e0b-91aa-437a-ae94-0c67a2ffe920",
"seasonnumber": 7,
"episodenumber": 2,
"seasonuuid": "f76c6029-6eae-4245-a090-5930caa6e18e",
"seriesuuid": "44266d7f-2498-445c-bf68-ed82bfe9b6bf",
"haschildren": false,
"t": "What On Earth?",
"sy": "When instruments on the International Space Station malfunction, experts investigate if this behaviour is more than a tech glitch, but a prophecy of doomsday. (S7, ep 2)",
"eg": 5,
"esg": 6,
"tso": 0,
"r": "--",
"at": "S",
"s": true,
"ad": false,
"hd": true,
"new": false,
"canl": true,
"canb": true,
"hasAlternativeAudio": false,
"restartable": false,
"slo": false,
"w": true,
"ippv": false,
"oppv": false,
"signed": false
},
{
"st": 1780959600,
"d": 3600,
"eid": "Eff6-380",
"cgid": 10053,
"programmeuuid": "68152ae7-97d6-44c8-8a54-e78710b94a76",
"seasonnumber": 1,
"episodenumber": 4,
"seasonuuid": "7d36867d-be53-4000-ae25-c79fc60205f2",
"seriesuuid": "20bd85e7-72dc-4f69-9833-e64b01490e72",
"haschildren": false,
"t": "Digging For Britain",
"sy": "The Tudors: Dr Alice Roberts pays tribute to the Bard, visiting Shakespeare's first theatre in London's Shoreditch and sifting through the poet's rubbish! (S1, ep 4)",
"eg": 3,
"esg": 11,
"tso": 0,
"r": "--",
"at": "S",
"s": false,
"ad": false,
"hd": true,
"new": false,
"canl": false,
"canb": true,
"hasAlternativeAudio": false,
"restartable": false,
"slo": false,
"w": true,
"ippv": false,
"oppv": false,
"signed": false
},
{
"st": 1780963200,
"d": 3600,
"eid": "Eff6-810",
"cgid": 10053,
"programmeuuid": "8048df83-4322-4b79-9680-9cec2536d365",
"seasonnumber": 2,
"episodenumber": 1,
"seasonuuid": "c958043f-c535-4e8d-a9d9-ce8423256e23",
"seriesuuid": "20bd85e7-72dc-4f69-9833-e64b01490e72",
"haschildren": false,
"t": "Digging For Britain",
"sy": "Britannia: A newly discovered town in Devon turns history on its head and there's a shocking find by the Thames - almost 100 baby skeletons. (S2, ep 1)",
"eg": 5,
"esg": 14,
"tso": 0,
"r": "--",
"at": "S",
"s": false,
"ad": false,
"hd": true,
"new": false,
"canl": false,
"canb": true,
"hasAlternativeAudio": false,
"restartable": false,
"slo": false,
"w": true,
"ippv": false,
"oppv": false,
"signed": false
},
{
"st": 1780966800,
"d": 3600,
"eid": "Eff6-a27",
"cgid": 10053,
"programmeuuid": "16730582-c411-4881-b41f-2f0dac7308ca",
"seasonnumber": 1,
"episodenumber": 6,
"seasonuuid": "f3249aea-957e-4fde-8aa0-46ab2f3f8b92",
"seriesuuid": "c59570bf-ebad-4aa1-9bfd-9968a9b3f9d2",
"haschildren": false,
"t": "New: World War II With Tom Hanks",
"sy": "Guadalcanal: After Pearl Harbor Japanese forces sweep through Southeast Asia. On Guadalcanal, US Marines face a brutal fight to halt their relentless advance now. (S1, ep 6)",
"eg": 5,
"esg": 6,
"tso": 5,
"r": "--",
"at": "S",
"s": true,
"ad": false,
"hd": true,
"new": true,
"canl": true,
"canb": true,
"hasAlternativeAudio": false,
"restartable": false,
"slo": false,
"w": true,
"ippv": false,
"oppv": false,
"signed": false
},
{
"st": 1780970400,
"d": 3600,
"eid": "Eff6-a29",
"cgid": 10053,
"programmeuuid": "1776b0dd-b5b5-4464-904f-9d488c02fe05",
"seasonnumber": 1,
"episodenumber": 7,
"seasonuuid": "f3249aea-957e-4fde-8aa0-46ab2f3f8b92",
"seriesuuid": "c59570bf-ebad-4aa1-9bfd-9968a9b3f9d2",
"haschildren": false,
"t": "New: World War II With Tom Hanks",
"sy": "Darkness Falls: As Hitler's power spreads across Europe, his hateful ideology drives persecution of Jewish people, leading to escalating violence and ultimately the Holocaust. (S1, ep 7)",
"eg": 5,
"esg": 6,
"tso": 5,
"r": "--",
"at": "S",
"s": true,
"ad": false,
"hd": true,
"new": true,
"canl": true,
"canb": true,
"hasAlternativeAudio": false,
"restartable": false,
"slo": false,
"w": true,
"ippv": false,
"oppv": false,
"signed": false
},
{
"st": 1780974000,
"d": 3600,
"eid": "Eff6-b9e",
"cgid": 10053,
"programmeuuid": "bd146e35-07ca-4032-b60f-e14a961bc191",
"seasonnumber": 2,
"episodenumber": 2,
"seasonuuid": "dd845565-b8e5-45a1-9335-2f997fe138a0",
"seriesuuid": "353a37a0-9861-4b92-9faf-8bb2025ca832",
"haschildren": false,
"t": "Secrets Declassified With David Duchovny",
"sy": "Top Secret Sites: Step inside secret spaces where history was shaped, from Churchill's bunker to hidden bases built to protect power in times of conflict. (S2, ep 2)",
"eg": 5,
"esg": 6,
"tso": 0,
"r": "--",
"at": "S",
"s": true,
"ad": false,
"hd": true,
"new": false,
"canl": false,
"canb": true,
"hasAlternativeAudio": false,
"restartable": false,
"slo": false,
"w": true,
"ippv": false,
"oppv": false,
"signed": false
},
{
"st": 1780977600,
"d": 3600,
"eid": "Eff6-ba4",
"cgid": 10053,
"programmeuuid": "92a25c42-9c4d-4435-aef2-a745912bb72b",
"seasonnumber": 16,
"episodenumber": 7,
"seasonuuid": "99a0234a-1366-477a-8e29-f2990f7118f9",
"seriesuuid": "1368de41-ca15-46b6-b03a-19db2616e161",
"haschildren": false,
"t": "Storage Wars",
"sy": "Survey Says... Payback's A Bit*h!: The Lord of Lancaster asserts his reign by levying tariffs on the little people and Kenny finally finds himself some decent profit. (S16, ep 7)",
"eg": 5,
"esg": 6,
"tso": 0,
"r": "--",
"at": "S",
"s": true,
"ad": false,
"hd": true,
"new": false,
"canl": false,
"canb": true,
"hasAlternativeAudio": false,
"restartable": false,
"slo": false,
"w": true,
"ippv": false,
"oppv": false,
"signed": false
},
{
"st": 1780981200,
"d": 1800,
"eid": "Eff6-bbf",
"cgid": 10053,
"programmeuuid": "cf029d3f-ebfc-4271-9a48-d75a61ede59c",
"seasonnumber": 2,
"episodenumber": 3,
"seasonuuid": "55361d54-1b5f-42e2-931b-9778400ada72",
"seriesuuid": "044db4fe-ccde-44e3-b593-8da9392b66da",
"haschildren": false,
"t": "Forged With Steele",
"sy": "Viking Sword: Alec takes on an enormous Viking sword - one of the most ambitious builds of his career. Can he conquer this beast of a blade?",
"eg": 3,
"esg": 11,
"tso": 0,
"r": "--",
"at": "S",
"s": false,
"ad": false,
"hd": true,
"new": false,
"canl": false,
"canb": true,
"hasAlternativeAudio": false,
"restartable": false,
"slo": false,
"w": true,
"ippv": false,
"oppv": false,
"signed": false
},
{
"st": 1780983000,
"d": 3300,
"eid": "Eff6-bc1",
"cgid": 10053,
"programmeuuid": "68152ae7-97d6-44c8-8a54-e78710b94a76",
"seasonnumber": 1,
"episodenumber": 4,
"seasonuuid": "7d36867d-be53-4000-ae25-c79fc60205f2",
"seriesuuid": "20bd85e7-72dc-4f69-9833-e64b01490e72",
"haschildren": false,
"t": "Digging For Britain",
"sy": "The Tudors: Dr Alice Roberts pays tribute to the Bard, visiting Shakespeare's first theatre in London's Shoreditch and sifting through the poet's rubbish! (S1, ep 4)",
"eg": 3,
"esg": 11,
"tso": 0,
"r": "--",
"at": "S",
"s": false,
"ad": false,
"hd": true,
"new": false,
"canl": false,
"canb": true,
"hasAlternativeAudio": false,
"restartable": false,
"slo": false,
"w": true,
"ippv": false,
"oppv": false,
"signed": false
},
{
"st": 1780986300,
"d": 3300,
"eid": "Eff6-c09",
"cgid": 10053,
"programmeuuid": "8048df83-4322-4b79-9680-9cec2536d365",
"seasonnumber": 2,
"episodenumber": 1,
"seasonuuid": "c958043f-c535-4e8d-a9d9-ce8423256e23",
"seriesuuid": "20bd85e7-72dc-4f69-9833-e64b01490e72",
"haschildren": false,
"t": "Digging For Britain",
"sy": "Britannia: A newly discovered town in Devon turns history on its head and there's a shocking find by the Thames - almost 100 baby skeletons. (S2, ep 1)",
"eg": 5,
"esg": 14,
"tso": 0,
"r": "--",
"at": "S",
"s": false,
"ad": false,
"hd": true,
"new": false,
"canl": false,
"canb": true,
"hasAlternativeAudio": false,
"restartable": false,
"slo": false,
"w": true,
"ippv": false,
"oppv": false,
"signed": false
},
{
"st": 1780989600,
"d": 3300,
"eid": "Eff6-871",
"cgid": 10053,
"programmeuuid": "7848f2e0-5da9-416b-ace6-440d9fb8358c",
"seasonnumber": 2,
"episodenumber": 2,
"seasonuuid": "c958043f-c535-4e8d-a9d9-ce8423256e23",
"seriesuuid": "20bd85e7-72dc-4f69-9833-e64b01490e72",
"haschildren": false,
"t": "Digging For Britain",
"sy": "Invaders: Dr Alice Roberts visits excavations in Orkney and York on the hunt for Viking relics. Finds include an amazing collection of silver and gold. (S2, ep 2)",
"eg": 5,
"esg": 14,
"tso": 0,
"r": "--",
"at": "S",
"s": false,
"ad": false,
"hd": true,
"new": false,
"canl": false,
"canb": true,
"hasAlternativeAudio": false,
"restartable": false,
"slo": false,
"w": true,
"ippv": false,
"oppv": false,
"signed": false
},
{
"st": 1780992900,
"d": 3300,
"eid": "Eff6-b06",
"cgid": 10053,
"programmeuuid": "3235d36e-10c3-4dfa-aa79-5502071faaa6",
"seasonnumber": 19,
"episodenumber": 3,
"seasonuuid": "88069c5d-9f4e-4b8d-b2e3-8d8fe3c3981a",
"seriesuuid": "ad899916-d2c8-413c-9722-38605858c7cd",
"haschildren": false,
"t": "Pawn Stars",
"sy": "Rick and Chum's Wild Ride: A vintage Harley T-shirt makes Corey go wild, while Rick and Chum head to California to take a peek at a mind-blowing Disney collection.",
"eg": 5,
"esg": 6,
"tso": 0,
"r": "--",
"at": "S",
"s": true,
"ad": false,
"hd": true,
"new": false,
"canl": false,
"canb": true,
"hasAlternativeAudio": false,
"restartable": false,
"slo": false,
"w": true,
"ippv": false,
"oppv": false,
"signed": false
},
{
"st": 1780996200,
"d": 3300,
"eid": "Eff6-954",
"cgid": 10053,
"programmeuuid": "36e5963d-f23b-46ff-a402-fc3e550261ec",
"seasonnumber": 16,
"episodenumber": 9,
"seasonuuid": "99a0234a-1366-477a-8e29-f2990f7118f9",
"seriesuuid": "1368de41-ca15-46b6-b03a-19db2616e161",
"haschildren": false,
"t": "Storage Wars",
"sy": "Yes We Cam!: Ivy and Pops drop by on their way home from vacation and end up schooling the other buyers and Brandi and Cameron almost take their profits sky high. (S16, ep 9)",
"eg": 5,
"esg": 6,
"tso": 0,
"r": "--",
"at": "S",
"s": true,
"ad": false,
"hd": true,
"new": false,
"canl": true,
"canb": true,
"hasAlternativeAudio": false,
"restartable": false,
"slo": false,
"w": true,
"ippv": false,
"oppv": false,
"signed": false
},
{
"st": 1780999500,
"d": 3300,
"eid": "Eff6-940",
"cgid": 10053,
"programmeuuid": "ecfa2b3e-f806-45eb-bf41-76baf31ded40",
"seasonnumber": 16,
"episodenumber": 10,
"seasonuuid": "99a0234a-1366-477a-8e29-f2990f7118f9",
"seriesuuid": "1368de41-ca15-46b6-b03a-19db2616e161",
"haschildren": false,
"t": "Storage Wars",
"sy": "I'm In a Canyon Country State of Mind: In Canyon Country, an exceptionally large estate is sold off and Dave tries to prove there are no wise young men. (S16, ep 10)",
"eg": 5,
"esg": 6,
"tso": 0,
"r": "--",
"at": "S",
"s": true,
"ad": false,
"hd": true,
"new": false,
"canl": true,
"canb": true,
"hasAlternativeAudio": false,
"restartable": false,
"slo": false,
"w": true,
"ippv": false,
"oppv": false,
"signed": false
},
{
"st": 1781002800,
"d": 3600,
"eid": "Eff6-b4a",
"cgid": 10053,
"programmeuuid": "5acb408b-e311-30ed-b11b-845051e65f9d",
"seasonnumber": 1,
"episodenumber": 3,
"seasonuuid": "e5389423-b6a7-36eb-a138-4e2213cdf8e2",
"seriesuuid": "db6c8978-71bd-3aa7-ad68-9fac74d24783",
"haschildren": false,
"t": "Lost U-Boats Of WWII",
"sy": "The Nazi's Secret Weapon: After finding artefacts at a sunken pier, Darrell and his team discover a possible component of a secret weapon used by the Nazis. (S1, ep 3)",
"eg": 5,
"esg": 6,
"tso": 0,
"r": "--",
"at": "S",
"s": true,
"ad": false,
"hd": true,
"new": false,
"canl": true,
"canb": true,
"hasAlternativeAudio": false,
"restartable": false,
"slo": false,
"w": true,
"ippv": false,
"oppv": false,
"signed": false
},
{
"st": 1781006400,
"d": 3600,
"eid": "Eff6-85c",
"cgid": 10053,
"programmeuuid": "5ba8915c-5945-4cbb-8615-d06392d8ee4a",
"seasonnumber": 1,
"episodenumber": 1,
"seasonuuid": "ee2f0729-d2b3-41b3-9e53-2b3b574fec43",
"seriesuuid": "cda553d0-7042-461c-82ba-3f7cd6e95402",
"haschildren": false,
"t": "New: Modern Marvels: WWII",
"sy": "Super Weapons: From iconic machines to devastating weapons, discover the innovations that defined WWII and the engineering breakthroughs that continue to shape our world. (S1, ep 1)",
"eg": 5,
"esg": 6,
"tso": 5,
"r": "--",
"at": "S",
"s": true,
"ad": false,
"hd": true,
"new": true,
"canl": true,
"canb": true,
"hasAlternativeAudio": false,
"restartable": false,
"slo": false,
"w": true,
"ippv": false,
"oppv": false,
"signed": false
},
{
"st": 1781010000,
"d": 3600,
"eid": "Eff6-865",
"cgid": 10053,
"programmeuuid": "e369393b-8059-4fcc-8f2e-c6ba4a0e7ba2",
"seasonnumber": 1,
"episodenumber": 1,
"seasonuuid": "6273df4f-6604-4970-9170-b23d431f084e",
"seriesuuid": "88a24d36-55c7-42b3-9c69-4a62221c6f8e",
"haschildren": false,
"t": "Commando Missions",
"sy": "Heraklion Operation: On June 10, 1942, Major Georges Bergé's team landed in Crete to destroy Luftwaffe planes at Heraklion airfield. They faced a tough mission. (S1, ep 1)",
"eg": 5,
"esg": 6,
"tso": 0,
"r": "--",
"at": "S",
"s": true,
"ad": false,
"hd": true,
"new": false,
"canl": true,
"canb": true,
"hasAlternativeAudio": false,
"restartable": false,
"slo": false,
"w": true,
"ippv": false,
"oppv": false,
"signed": false
},
{
"st": 1781013600,
"d": 3600,
"eid": "Eff6-b2e",
"cgid": 10053,
"programmeuuid": "8e72c9ab-c01e-4728-b04e-bd458c393d9f",
"seasonnumber": 1,
"episodenumber": 2,
"seasonuuid": "6273df4f-6604-4970-9170-b23d431f084e",
"seriesuuid": "88a24d36-55c7-42b3-9c69-4a62221c6f8e",
"haschildren": false,
"t": "Commando Missions",
"sy": "Frankton Operation: Ten British commandos, led by Major Hasler, leave the submarine Junon to paddle to Bordeaux and sabotage German warships. (S1, ep 2)",
"eg": 5,
"esg": 6,
"tso": 0,
"r": "--",
"at": "S",
"s": true,
"ad": false,
"hd": true,
"new": false,
"canl": true,
"canb": true,
"hasAlternativeAudio": false,
"restartable": false,
"slo": false,
"w": true,
"ippv": false,
"oppv": false,
"signed": false
},
{
"st": 1781017200,
"d": 3600,
"eid": "Eff6-8dc",
"cgid": 10053,
"programmeuuid": "346f3552-74c7-4645-8036-151c96d69145",
"seasonnumber": 1,
"episodenumber": 3,
"seasonuuid": "6273df4f-6604-4970-9170-b23d431f084e",
"seriesuuid": "88a24d36-55c7-42b3-9c69-4a62221c6f8e",
"haschildren": false,
"t": "Commando Missions",
"sy": "Musketoon Operation: On September 15, 1942, 12 commandos from the Special Operations Executive arrived in Northern Norway by submarine on a nearly suicidal mission. (S1, ep 3)",
"eg": 5,
"esg": 6,
"tso": 0,
"r": "--",
"at": "S",
"s": true,
"ad": false,
"hd": true,
"new": false,
"canl": true,
"canb": true,
"hasAlternativeAudio": false,
"restartable": false,
"slo": false,
"w": true,
"ippv": false,
"oppv": false,
"signed": false
},
{
"st": 1781020800,
"d": 3600,
"eid": "Eff6-8ee",
"cgid": 10053,
"programmeuuid": "31bac93b-8c22-4040-b826-6c182092bd97",
"seasonnumber": 1,
"episodenumber": 4,
"seasonuuid": "6273df4f-6604-4970-9170-b23d431f084e",
"seriesuuid": "88a24d36-55c7-42b3-9c69-4a62221c6f8e",
"haschildren": false,
"t": "Commando Missions",
"sy": "Raincoat Operation: During Italy's reconquest, the Allies faced the Winter Line and called in the First Special Service Force, elite troops trained for brutal terrain warfare. (S1, ep 4)",
"eg": 5,
"esg": 6,
"tso": 0,
"r": "--",
"at": "S",
"s": true,
"ad": false,
"hd": true,
"new": false,
"canl": true,
"canb": true,
"hasAlternativeAudio": false,
"restartable": false,
"slo": false,
"w": true,
"ippv": false,
"oppv": false,
"signed": false
},
{
"st": 1781024400,
"d": 3600,
"eid": "Eff6-817",
"cgid": 10053,
"programmeuuid": "0cbfa508-7ce8-3394-bf6b-0519195b17b0",
"seasonnumber": 25,
"episodenumber": 9,
"seasonuuid": "f84ff47a-3759-35f6-9124-f3a2ee0e10dd",
"seriesuuid": "b2e57450-1fb1-42cf-ad0e-01f9d6045f67",
"haschildren": false,
"t": "American Pickers",
"sy": "Roadside Relics: Mike uncovers a Godzilla-size stockpile of vintage movie posters, while Robbie pays up for a pair of ultra-rare Chevy signs for the shop in Tennessee. (S20, ep 6)",
"eg": 5,
"esg": 6,
"tso": 0,
"r": "--",
"at": "S",
"s": true,
"ad": false,
"hd": true,
"new": false,
"canl": true,
"canb": true,
"hasAlternativeAudio": false,
"restartable": false,
"slo": false,
"w": true,
"ippv": false,
"oppv": false,
"signed": false
},
{
"st": 1781028000,
"d": 3600,
"eid": "Eff6-a4b",
"cgid": 10053,
"programmeuuid": "efc028c8-06a9-4815-9e2a-949046c7ab29",
"seasonnumber": 6,
"episodenumber": 20,
"seasonuuid": "ce9e739c-8b4e-4a05-b3b4-272e4c1088a0",
"seriesuuid": "01bee8e1-6a03-496e-ac1e-30f826edb18c",
"haschildren": false,
"t": "Forged In Fire",
"sy": "The Foot Artillery Sword: A dangerous slip-up reminds the contestants not to play with sharp objects as they make knives from old toys and recreate an iconic American blade. (S6, ep 9)",
"eg": 5,
"esg": 6,
"tso": 0,
"r": "--",
"at": "S",
"s": false,
"ad": false,
"hd": true,
"new": false,
"canl": true,
"canb": true,
"hasAlternativeAudio": false,
"restartable": false,
"slo": false,
"w": true,
"ippv": false,
"oppv": false,
"signed": false
},
{
"st": 1781031600,
"d": 3600,
"eid": "Eff6-418",
"cgid": 10053,
"programmeuuid": "5ba8915c-5945-4cbb-8615-d06392d8ee4a",
"seasonnumber": 1,
"episodenumber": 1,
"seasonuuid": "ee2f0729-d2b3-41b3-9e53-2b3b574fec43",
"seriesuuid": "cda553d0-7042-461c-82ba-3f7cd6e95402",
"haschildren": false,
"t": "New: Modern Marvels: WWII",
"sy": "Super Weapons: From iconic machines to devastating weapons, discover the innovations that defined WWII and the engineering breakthroughs that continue to shape our world. (S1, ep 1)",
"eg": 5,
"esg": 6,
"tso": 5,
"r": "--",
"at": "S",
"s": true,
"ad": false,
"hd": true,
"new": true,
"canl": true,
"canb": true,
"hasAlternativeAudio": false,
"restartable": false,
"slo": false,
"w": true,
"ippv": false,
"oppv": false,
"signed": false
},
{
"st": 1781035200,
"d": 3300,
"eid": "Eff6-3f3",
"cgid": 10053,
"programmeuuid": "16730582-c411-4881-b41f-2f0dac7308ca",
"seasonnumber": 1,
"episodenumber": 6,
"seasonuuid": "f3249aea-957e-4fde-8aa0-46ab2f3f8b92",
"seriesuuid": "c59570bf-ebad-4aa1-9bfd-9968a9b3f9d2",
"haschildren": false,
"t": "New: World War II With Tom Hanks",
"sy": "Guadalcanal: After Pearl Harbor Japanese forces sweep through Southeast Asia. On Guadalcanal, US Marines face a brutal fight to halt their relentless advance now. (S1, ep 6)",
"eg": 5,
"esg": 6,
"tso": 5,
"r": "--",
"at": "S",
"s": true,
"ad": false,
"hd": true,
"new": true,
"canl": true,
"canb": true,
"hasAlternativeAudio": false,
"restartable": false,
"slo": false,
"w": true,
"ippv": false,
"oppv": false,
"signed": false
},
{
"st": 1781038500,
"d": 3300,
"eid": "Eff6-a71",
"cgid": 10053,
"programmeuuid": "1776b0dd-b5b5-4464-904f-9d488c02fe05",
"seasonnumber": 1,
"episodenumber": 7,
"seasonuuid": "f3249aea-957e-4fde-8aa0-46ab2f3f8b92",
"seriesuuid": "c59570bf-ebad-4aa1-9bfd-9968a9b3f9d2",
"haschildren": false,
"t": "New: World War II With Tom Hanks",
"sy": "Darkness Falls: As Hitler's power spreads across Europe, his hateful ideology drives persecution of Jewish people, leading to escalating violence and ultimately the Holocaust. (S1, ep 7)",
"eg": 5,
"esg": 6,
"tso": 5,
"r": "--",
"at": "S",
"s": true,
"ad": false,
"hd": true,
"new": true,
"canl": true,
"canb": true,
"hasAlternativeAudio": false,
"restartable": false,
"slo": false,
"w": true,
"ippv": false,
"oppv": false,
"signed": false
},
{
"st": 1781041800,
"d": 3600,
"eid": "Eff6-9aa",
"cgid": 10053,
"programmeuuid": "95f9b9fe-a788-487c-b2b1-5b4869bcfddf",
"seasonnumber": 1,
"episodenumber": 9,
"seasonuuid": "7f0e9886-de2d-460d-840b-7e2c2171c8c7",
"seriesuuid": "7cf31999-e3b6-45ff-a6e0-4c25fd41fe91",
"haschildren": false,
"t": "History's Deadliest With Ving Rhames",
"sy": "Battles: Relive history's deadliest battles, from Cannae and Agincourt to Stalingrad and the Battle of the Bulge. (S1, ep 9)",
"eg": 5,
"esg": 6,
"tso": 0,
"r": "--",
"at": "S",
"s": true,
"ad": false,
"hd": true,
"new": false,
"canl": true,
"canb": true,
"hasAlternativeAudio": false,
"restartable": false,
"slo": false,
"w": true,
"ippv": false,
"oppv": false,
"signed": false
},
{
"st": 1781045400,
"d": 3600,
"eid": "Eff6-9bb",
"cgid": 10053,
"programmeuuid": "e369393b-8059-4fcc-8f2e-c6ba4a0e7ba2",
"seasonnumber": 1,
"episodenumber": 1,
"seasonuuid": "6273df4f-6604-4970-9170-b23d431f084e",
"seriesuuid": "88a24d36-55c7-42b3-9c69-4a62221c6f8e",
"haschildren": false,
"t": "Commando Missions",
"sy": "Heraklion Operation: On June 10, 1942, Major Georges Bergé's team landed in Crete to destroy Luftwaffe planes at Heraklion airfield. They faced a tough mission. (S1, ep 1)",
"eg": 5,
"esg": 6,
"tso": 0,
"r": "--",
"at": "S",
"s": true,
"ad": false,
"hd": true,
"new": false,
"canl": true,
"canb": true,
"hasAlternativeAudio": false,
"restartable": false,
"slo": false,
"w": true,
"ippv": false,
"oppv": false,
"signed": false
}
]
}
]
}
+98
View File
@@ -0,0 +1,98 @@
{
"regions": [
{ "text": "Atherstone HD", "bouquet": 4101, "subBouquet": 19, "value": "4101-19" },
{ "text": "Atherstone SD", "bouquet": 4097, "subBouquet": 19, "value": "4097-19" },
{ "text": "Border England HD", "bouquet": 4101, "subBouquet": 12, "value": "4101-12" },
{ "text": "Border England SD", "bouquet": 4097, "subBouquet": 12, "value": "4097-12" },
{ "text": "Border Scotland HD", "bouquet": 4102, "subBouquet": 36, "value": "4102-36" },
{ "text": "Border Scotland SD", "bouquet": 4098, "subBouquet": 36, "value": "4098-36" },
{ "text": "Brighton HD", "bouquet": 4103, "subBouquet": 65, "value": "4103-65" },
{ "text": "Brighton SD", "bouquet": 4099, "subBouquet": 65, "value": "4099-65" },
{ "text": "Central Midlands HD", "bouquet": 4101, "subBouquet": 3, "value": "4101-3" },
{ "text": "Central Midlands SD", "bouquet": 4097, "subBouquet": 3, "value": "4097-3" },
{ "text": "Channel Isles HD", "bouquet": 4104, "subBouquet": 34, "value": "4104-34" },
{ "text": "Channel Isles SD", "bouquet": 4100, "subBouquet": 34, "value": "4100-34" },
{ "text": "Dundee HD", "bouquet": 4102, "subBouquet": 39, "value": "4102-39" },
{ "text": "Dundee SD", "bouquet": 4098, "subBouquet": 39, "value": "4098-39" },
{ "text": "East Midlands HD", "bouquet": 4101, "subBouquet": 20, "value": "4101-20" },
{ "text": "East Midlands SD", "bouquet": 4097, "subBouquet": 20, "value": "4097-20" },
{ "text": "Essex HD", "bouquet": 4101, "subBouquet": 2, "value": "4101-2" },
{ "text": "Essex SD", "bouquet": 4097, "subBouquet": 2, "value": "4097-2" },
{ "text": "Gloucester HD", "bouquet": 4101, "subBouquet": 24, "value": "4101-24" },
{ "text": "Gloucester SD", "bouquet": 4097, "subBouquet": 24, "value": "4097-24" },
{ "text": "Grampian HD", "bouquet": 4102, "subBouquet": 35, "value": "4102-35" },
{ "text": "Grampian SD", "bouquet": 4098, "subBouquet": 35, "value": "4098-35" },
{ "text": "Granada HD", "bouquet": 4101, "subBouquet": 7, "value": "4101-7" },
{ "text": "Granada SD", "bouquet": 4097, "subBouquet": 7, "value": "4097-7" },
{ "text": "HTV West HD", "bouquet": 4101, "subBouquet": 4, "value": "4101-4" },
{ "text": "HTV West SD", "bouquet": 4097, "subBouquet": 4, "value": "4097-4" },
{ "text": "HTV West / Thames Valley HD", "bouquet": 4103, "subBouquet": 63, "value": "4103-63" },
{ "text": "HTV West / Thames Valley SD", "bouquet": 4099, "subBouquet": 63, "value": "4099-63" },
{ "text": "Henley On Thames HD", "bouquet": 4103, "subBouquet": 70, "value": "4103-70" },
{ "text": "Henley On Thames SD", "bouquet": 4099, "subBouquet": 70, "value": "4099-70" },
{ "text": "Humber HD", "bouquet": 4101, "subBouquet": 29, "value": "4101-29" },
{ "text": "Humber SD", "bouquet": 4097, "subBouquet": 29, "value": "4097-29" },
{ "text": "London HD", "bouquet": 4101, "subBouquet": 1, "value": "4101-1" },
{ "text": "London SD", "bouquet": 4097, "subBouquet": 1, "value": "4097-1" },
{ "text": "London / Essex HD", "bouquet": 4101, "subBouquet": 18, "value": "4101-18" },
{ "text": "London / Essex SD", "bouquet": 4097, "subBouquet": 18, "value": "4097-18" },
{ "text": "London / Thames Valley HD", "bouquet": 4103, "subBouquet": 66, "value": "4103-66" },
{ "text": "London / Thames Valley SD", "bouquet": 4099, "subBouquet": 66, "value": "4099-66" },
{ "text": "London Kent HD", "bouquet": 4103, "subBouquet": 64, "value": "4103-64" },
{ "text": "London Kent SD", "bouquet": 4099, "subBouquet": 64, "value": "4099-64" },
{ "text": "Meridian East HD", "bouquet": 4101, "subBouquet": 11, "value": "4101-11" },
{ "text": "Meridian East SD", "bouquet": 4097, "subBouquet": 11, "value": "4097-11" },
{ "text": "Meridian North HD", "bouquet": 4103, "subBouquet": 68, "value": "4103-68" },
{ "text": "Meridian North SD", "bouquet": 4099, "subBouquet": 68, "value": "4099-68" },
{ "text": "Meridian South HD", "bouquet": 4101, "subBouquet": 5, "value": "4101-5" },
{ "text": "Meridian South SD", "bouquet": 4097, "subBouquet": 5, "value": "4097-5" },
{ "text": "Meridian South East HD", "bouquet": 4101, "subBouquet": 10, "value": "4101-10" },
{ "text": "Meridian South East SD", "bouquet": 4097, "subBouquet": 10, "value": "4097-10" },
{ "text": "Merseyside HD", "bouquet": 4103, "subBouquet": 45, "value": "4103-45" },
{ "text": "Merseyside SD", "bouquet": 4099, "subBouquet": 45, "value": "4099-45" },
{ "text": "Norfolk HD", "bouquet": 4101, "subBouquet": 21, "value": "4101-21" },
{ "text": "Norfolk SD", "bouquet": 4097, "subBouquet": 21, "value": "4097-21" },
{ "text": "North East Midlands HD", "bouquet": 4103, "subBouquet": 62, "value": "4103-62" },
{ "text": "North East Midlands SD", "bouquet": 4099, "subBouquet": 62, "value": "4099-62" },
{ "text": "North West Yorkshire HD", "bouquet": 4101, "subBouquet": 8, "value": "4101-8" },
{ "text": "North West Yorkshire SD", "bouquet": 4097, "subBouquet": 8, "value": "4097-8" },
{ "text": "North Yorkshire HD", "bouquet": 4101, "subBouquet": 26, "value": "4101-26" },
{ "text": "North Yorkshire SD", "bouquet": 4097, "subBouquet": 26, "value": "4097-26" },
{ "text": "Northern Ireland HD", "bouquet": 4104, "subBouquet": 33, "value": "4104-33" },
{ "text": "Northern Ireland SD", "bouquet": 4100, "subBouquet": 33, "value": "4100-33" },
{ "text": "Oxford HD", "bouquet": 4103, "subBouquet": 71, "value": "4103-71" },
{ "text": "Oxford SD", "bouquet": 4099, "subBouquet": 71, "value": "4099-71" },
{ "text": "Republic of Ireland HD", "bouquet": 4104, "subBouquet": 50, "value": "4104-50" },
{ "text": "Republic of Ireland SD", "bouquet": 4100, "subBouquet": 50, "value": "4100-50" },
{ "text": "Ridge Hill HD", "bouquet": 4103, "subBouquet": 41, "value": "4103-41" },
{ "text": "Ridge Hill SD", "bouquet": 4099, "subBouquet": 41, "value": "4099-41" },
{ "text": "Scarborough HD", "bouquet": 4103, "subBouquet": 61, "value": "4103-61" },
{ "text": "Scarborough SD", "bouquet": 4099, "subBouquet": 61, "value": "4099-61" },
{ "text": "Scottish East HD", "bouquet": 4102, "subBouquet": 38, "value": "4102-38" },
{ "text": "Scottish East SD", "bouquet": 4098, "subBouquet": 38, "value": "4098-38" },
{ "text": "Scottish West HD", "bouquet": 4102, "subBouquet": 37, "value": "4102-37" },
{ "text": "Scottish West SD", "bouquet": 4098, "subBouquet": 37, "value": "4098-37" },
{ "text": "Sheffield HD", "bouquet": 4103, "subBouquet": 60, "value": "4103-60" },
{ "text": "Sheffield SD", "bouquet": 4099, "subBouquet": 60, "value": "4099-60" },
{ "text": "South Lakeland HD", "bouquet": 4101, "subBouquet": 28, "value": "4101-28" },
{ "text": "South Lakeland SD", "bouquet": 4097, "subBouquet": 28, "value": "4097-28" },
{ "text": "South Yorkshire HD", "bouquet": 4103, "subBouquet": 72, "value": "4103-72" },
{ "text": "South Yorkshire SD", "bouquet": 4099, "subBouquet": 72, "value": "4099-72" },
{ "text": "Tees HD", "bouquet": 4103, "subBouquet": 69, "value": "4103-69" },
{ "text": "Tees SD", "bouquet": 4099, "subBouquet": 69, "value": "4099-69" },
{ "text": "Thames Valley HD", "bouquet": 4101, "subBouquet": 9, "value": "4101-9" },
{ "text": "Thames Valley SD", "bouquet": 4097, "subBouquet": 9, "value": "4097-9" },
{ "text": "Tring HD", "bouquet": 4101, "subBouquet": 27, "value": "4101-27" },
{ "text": "Tring SD", "bouquet": 4097, "subBouquet": 27, "value": "4097-27" },
{ "text": "Tyne HD", "bouquet": 4101, "subBouquet": 13, "value": "4101-13" },
{ "text": "Tyne SD", "bouquet": 4097, "subBouquet": 13, "value": "4097-13" },
{ "text": "Wales HD", "bouquet": 4104, "subBouquet": 32, "value": "4104-32" },
{ "text": "Wales SD", "bouquet": 4100, "subBouquet": 32, "value": "4100-32" },
{ "text": "West Anglia HD", "bouquet": 4101, "subBouquet": 25, "value": "4101-25" },
{ "text": "West Anglia SD", "bouquet": 4097, "subBouquet": 25, "value": "4097-25" },
{ "text": "West Dorset HD", "bouquet": 4103, "subBouquet": 67, "value": "4103-67" },
{ "text": "West Dorset SD", "bouquet": 4099, "subBouquet": 67, "value": "4099-67" },
{ "text": "Westcountry HD", "bouquet": 4101, "subBouquet": 6, "value": "4101-6" },
{ "text": "Westcountry SD", "bouquet": 4097, "subBouquet": 6, "value": "4097-6" }
]
}
+6 -18
View File
@@ -11,7 +11,6 @@
<channel site="sky.com" site_id="1183" lang="en" xmltv_id="">Disney Jr HD</channel>
<channel site="sky.com" site_id="1190" lang="en" xmltv_id="">Disney+CineHD</channel>
<channel site="sky.com" site_id="1205" lang="en" xmltv_id="">LBC News</channel>
<channel site="sky.com" site_id="1229" lang="en" xmltv_id="">Sky Arts</channel>
<channel site="sky.com" site_id="1261" lang="en" xmltv_id="">RTÉ Radio 1</channel>
<channel site="sky.com" site_id="1262" lang="en" xmltv_id="">RTÉ 2FM</channel>
<channel site="sky.com" site_id="1263" lang="en" xmltv_id="">RTÉ R na G</channel>
@@ -56,6 +55,7 @@
<channel site="sky.com" site_id="4163" lang="en" xmltv_id="">EWTN Catholic</channel>
<channel site="sky.com" site_id="4611" lang="en" xmltv_id="">LEGEND</channel>
<channel site="sky.com" site_id="5040" lang="en" xmltv_id="">Arise News</channel>
<channel site="sky.com" site_id="6761" lang="en" xmltv_id="">QUEST</channel>
<channel site="sky.com" site_id="8040" lang="en" xmltv_id="">My Sky</channel>
<channel site="sky.com" site_id="8266" lang="en" xmltv_id="">My Account</channel>
<channel site="sky.com" site_id="8301" lang="en" xmltv_id="">Program Your Remote</channel>
@@ -70,7 +70,6 @@
<channel site="sky.com" site_id="3027" lang="en" xmltv_id="5USA.uk@Plus1">5USA+1</channel>
<channel site="sky.com" site_id="3022" lang="en" xmltv_id="5USA.uk@SD">5 USA</channel>
<channel site="sky.com" site_id="1031" lang="en" xmltv_id="40Plus.uk@SD">TVX 40+</channel>
<channel site="sky.com" site_id="1104" lang="en" xmltv_id="A1TVRajasthan.in@SD">Islam Bangla</channel>
<channel site="sky.com" site_id="3255" lang="en" xmltv_id="AajTak.in@SD">AAJ TAK</channel>
<channel site="sky.com" site_id="3594" lang="en" xmltv_id="Aastha.in@SD">Aastha</channel>
<channel site="sky.com" site_id="4195" lang="en" xmltv_id="AdultChannel.uk@SD">Adult Channel</channel>
@@ -121,7 +120,6 @@
<channel site="sky.com" site_id="4100" lang="en" xmltv_id="BestDirect.uk@SD">Best Direct</channel>
<channel site="sky.com" site_id="1065" lang="en" xmltv_id="Blaze.uk@SD">BLAZE</channel>
<channel site="sky.com" site_id="1074" lang="en" xmltv_id="BloombergTV.us@Europe">Bloomberg HD</channel>
<channel site="sky.com" site_id="4030" lang="en" xmltv_id="Boomerang.uk@HD">Boomerang HD</channel>
<channel site="sky.com" site_id="5603" lang="en" xmltv_id="Boomerang.uk@Plus1">Boomerang+1</channel>
<channel site="sky.com" site_id="5609" lang="en" xmltv_id="Boomerang.uk@SD">Boomerang</channel>
<channel site="sky.com" site_id="1371" lang="en" xmltv_id="Cartoonito.uk@SD">Cartoonito</channel>
@@ -149,7 +147,6 @@
<channel site="sky.com" site_id="1675" lang="en" xmltv_id="Channel4.uk@UKPlus1">Channel 4+1</channel>
<channel site="sky.com" site_id="4058" lang="en" xmltv_id="Channel5.uk@HD">5 HD</channel>
<channel site="sky.com" site_id="1839" lang="en" xmltv_id="Channel5.uk@Plus1">5+1</channel>
<channel site="sky.com" site_id="1800" lang="en" xmltv_id="Channel5.uk@SD">5</channel>
<channel site="sky.com" site_id="5520" lang="en" xmltv_id="Channels24.ng@SD">Channels 24</channel>
<channel site="sky.com" site_id="3815" lang="en" xmltv_id="ChannelS.uk@SD">CHSTV</channel>
<channel site="sky.com" site_id="1850" lang="en" xmltv_id="ChlLineup.uk@SD">Chl Line-up</channel>
@@ -224,12 +221,10 @@
<channel site="sky.com" site_id="3771" lang="en" xmltv_id="GREATmovies.uk@UKPlus1">G! Mystery+1</channel>
<channel site="sky.com" site_id="1133" lang="en" xmltv_id="GREATromance.uk@Ireland">Great! Action</channel>
<channel site="sky.com" site_id="3643" lang="en" xmltv_id="GREATromance.uk@UK">Great! Romance</channel>
<channel site="sky.com" site_id="3751" lang="en" xmltv_id="GREATromance.uk@UKPlus1">Great! Romance+1</channel>
<channel site="sky.com" site_id="3751" lang="en" xmltv_id="GREATromance.uk@UKPlus1">G! Romance+1</channel>
<channel site="sky.com" site_id="1320" lang="en" xmltv_id="GREATtv.ie@SD">Great! TV</channel>
<channel site="sky.com" site_id="5338" lang="en" xmltv_id="GREATtv.uk@Plus1">Great! TV+1</channel>
<channel site="sky.com" site_id="4266" lang="en" xmltv_id="GREATtv.uk@SD">Great! TV</channel>
<channel site="sky.com" site_id="2408" lang="en" xmltv_id="HGTV.ie@SD">HGTV</channel>
<channel site="sky.com" site_id="2309" lang="en" xmltv_id="HGTV.uk@Plus1">HGTV+1</channel>
<channel site="sky.com" site_id="2301" lang="en" xmltv_id="HGTV.uk@SD">HGTV</channel>
<channel site="sky.com" site_id="3580" lang="en" xmltv_id="HighStreetTV1.uk@SD">High Street TV 1</channel>
<channel site="sky.com" site_id="5706" lang="en" xmltv_id="HighStreetTV2.uk@SD">High Street TV 2</channel>
@@ -282,7 +277,6 @@
<channel site="sky.com" site_id="3731" lang="en" xmltv_id="KWSMLD323.us@SD">NTD</channel>
<channel site="sky.com" site_id="4610" lang="en" xmltv_id="Legend.uk@SD">LEGEND</channel>
<channel site="sky.com" site_id="3845" lang="en" xmltv_id="LFCTV.uk@SD">LFCTV HD</channel>
<channel site="sky.com" site_id="5090" lang="en" xmltv_id="LondonLive.uk@SD">London TV</channel>
<channel site="sky.com" site_id="1228" lang="en" xmltv_id="LoveWorldUK.ng@SD">LoveWorld HD</channel>
<channel site="sky.com" site_id="4460" lang="en" xmltv_id="MadaniChannelEnglish.pk@SD">Madani Chnl</channel>
<channel site="sky.com" site_id="1069" lang="en" xmltv_id="MasalaTV.pk@SD">HUM News</channel>
@@ -319,8 +313,8 @@
<channel site="sky.com" site_id="1857" lang="en" xmltv_id="NickJr.uk@SD">Nick Jr.</channel>
<channel site="sky.com" site_id="5192" lang="en" xmltv_id="NickJrToo.ie@SD">Nick Jr. Too</channel>
<channel site="sky.com" site_id="4340" lang="en" xmltv_id="NickJrToo.uk@SD">Nick Jr. Too</channel>
<channel site="sky.com" site_id="5527" lang="en" xmltv_id="Nicktoons.ie@SD">Nick Alvinnnn!!!</channel>
<channel site="sky.com" site_id="1849" lang="en" xmltv_id="Nicktoons.uk@SD">Nick Alvinnnn!!!</channel>
<channel site="sky.com" site_id="5527" lang="en" xmltv_id="Nicktoons.ie@SD">Nicktoons</channel>
<channel site="sky.com" site_id="1849" lang="en" xmltv_id="Nicktoons.uk@SD">Nicktoons</channel>
<channel site="sky.com" site_id="3715" lang="en" xmltv_id="NoorTV.uk@SD">Noor TV</channel>
<channel site="sky.com" site_id="3403" lang="en" xmltv_id="Now70s.uk@SD">NOW 70s</channel>
<channel site="sky.com" site_id="4541" lang="en" xmltv_id="Now80s.uk@SD">NOW 80s</channel>
@@ -373,15 +367,14 @@
<channel site="sky.com" site_id="1413" lang="en" xmltv_id="SkyAtlantic.uk@Plus1">Sky Atlantic+1</channel>
<channel site="sky.com" site_id="1412" lang="en" xmltv_id="SkyAtlantic.uk@SD">Sky Atlantic</channel>
<channel site="sky.com" site_id="4014" lang="en" xmltv_id="SkyCinemaAction.uk@HD">Sky Action HD</channel>
<channel site="sky.com" site_id="1199" lang="en" xmltv_id="SkyCinemaAnimation.uk@SD">SkyAnimationHD</channel>
<channel site="sky.com" site_id="4019" lang="en" xmltv_id="SkyCinemaComedy.uk@HD">Sky Comedy HD</channel>
<channel site="sky.com" site_id="4016" lang="en" xmltv_id="SkyCinemaDrama.uk@HD">Sky Drama HD</channel>
<channel site="sky.com" site_id="4018" lang="en" xmltv_id="SkyCinemaFamily.uk@HD">Sky Family HD</channel>
<channel site="sky.com" site_id="4015" lang="en" xmltv_id="SkyCinemaGreats.uk@SD">Sky Greats HD</channel>
<channel site="sky.com" site_id="4033" lang="en" xmltv_id="SkyCinemaHits.uk@SD">Sky Box Set HD</channel>
<channel site="sky.com" site_id="4033" lang="en" xmltv_id="SkyCinemaHits.uk@SD">SkyAnimationHD</channel>
<channel site="sky.com" site_id="4021" lang="en" xmltv_id="SkyCinemaPremiere.uk@HD">SkyPremiereHD</channel>
<channel site="sky.com" site_id="4017" lang="en" xmltv_id="SkyCinemaSciFiHorror.uk@HD">Sky ScFi/HorHD</channel>
<channel site="sky.com" site_id="4020" lang="en" xmltv_id="SkyCinemaSelect.uk@SD">Sky5*MoviesHD</channel>
<channel site="sky.com" site_id="4020" lang="en" xmltv_id="SkyCinemaSelect.uk@SD">SkyDirectorsHD</channel>
<channel site="sky.com" site_id="4062" lang="en" xmltv_id="SkyCinemaThriller.uk@HD">Sky Thriller HD</channel>
<channel site="sky.com" site_id="1146" lang="en" xmltv_id="SkyComedy.ie@SD">Sky Comedy</channel>
<channel site="sky.com" site_id="1143" lang="en" xmltv_id="SkyComedy.uk@HD">Sky Comedy HD</channel>
@@ -412,9 +405,6 @@
<channel site="sky.com" site_id="4645" lang="en" xmltv_id="SkyNewsArabia.ae@SD">SkyNewsArabia</channel>
<channel site="sky.com" site_id="4074" lang="en" xmltv_id="SkySciFi.uk@HD">Sky Sci-Fi HD</channel>
<channel site="sky.com" site_id="2505" lang="en" xmltv_id="SkySciFi.uk@SD">Sky Sci-Fi</channel>
<channel site="sky.com" site_id="1278" lang="en" xmltv_id="SkyShowcase.ie@HD">SkyShowcaseHD</channel>
<channel site="sky.com" site_id="1279" lang="en" xmltv_id="SkyShowcase.ie@SD">Sky Showcase</channel>
<channel site="sky.com" site_id="1275" lang="en" xmltv_id="SkyShowcase.uk@HD">SkyShowcaseHD</channel>
<channel site="sky.com" site_id="1277" lang="en" xmltv_id="SkyShowcase.uk@Plus1">SkyShowcase+1</channel>
<channel site="sky.com" site_id="3839" lang="en" xmltv_id="SkySportsArena.ie@SD">SkySp+</channel>
<channel site="sky.com" site_id="3940" lang="en" xmltv_id="SkySportsArena.uk@HD">SkySp+ HD</channel>
@@ -467,8 +457,6 @@
<channel site="sky.com" site_id="3109" lang="en" xmltv_id="TBNUK.uk@SD">TBN UK</channel>
<channel site="sky.com" site_id="4192" lang="en" xmltv_id="TelevisionX.uk@SD">Television X</channel>
<channel site="sky.com" site_id="4034" lang="en" xmltv_id="TG4.ie@HD">TG4 HD</channel>
<channel site="sky.com" site_id="1134" lang="en" xmltv_id="Thats60s.uk@SD">That&apos;s TV 3</channel>
<channel site="sky.com" site_id="1311" lang="en" xmltv_id="Thats70s.uk@SD">That&apos;s TV 2</channel>
<channel site="sky.com" site_id="1017" lang="en" xmltv_id="ThatsTV.uk@SD">That&apos;s TV</channel>
<channel site="sky.com" site_id="1234" lang="en" xmltv_id="TinyPop.uk@SD">Tiny Pop</channel>
<channel site="sky.com" site_id="1113" lang="en" xmltv_id="TJC.uk@HD">TJC HD</channel>
+58 -28
View File
@@ -1,49 +1,79 @@
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
const timezone = require('dayjs/plugin/timezone')
const doFetch = require('@ntlab/sfetch')
const debug = require('debug')('site:sky.com')
const sortBy = require('lodash.sortby')
const path = require('path')
const fs = require('fs/promises')
dayjs.extend(utc)
dayjs.extend(timezone)
doFetch.setDebugger(debug)
doFetch.setCheckResult(false).setDebugger(debug)
const eventIds = []
module.exports = {
site: 'sky.com',
days: 2,
request: {
cache: {
ttl: 24 * 60 * 60 * 1000 // 1 day
}
},
url({ date, channel }) {
return `https://awk.epgsky.com/hawk/linear/schedule/${date.format('YYYYMMDD')}/${
channel.site_id
}`
},
parser({ content, channel, date }) {
async parser({ content, channel, date }) {
const programs = []
if (content) {
const items = JSON.parse(content) || null
if (Array.isArray(items.schedule)) {
items.schedule
.filter(schedule => schedule.sid === channel.site_id)
.forEach(schedule => {
if (Array.isArray(schedule.events)) {
sortBy(schedule.events, p => p.st).forEach(event => {
const start = dayjs.utc(event.st * 1000)
if (start.isSame(date.tz('Europe/London'), 'd')) {
const image = `https://images.metadata.sky.com/pd-image/${event.programmeuuid}/16-9/640`
programs.push({
title: event.t,
description: event.sy,
season: event.seasonnumber,
episode: event.episodenumber,
start,
stop: start.add(event.d, 's'),
icon: image,
image
const events = {}
const ev = items => {
if (typeof items === 'string' || Buffer.isBuffer(items)) {
items = JSON.parse(items)
}
if (Array.isArray(items?.schedule)) {
items.schedule
.filter(schedule => schedule.sid === channel.site_id)
.forEach(schedule => {
if (Array.isArray(schedule.events)) {
schedule.events
.filter(event => !eventIds.includes(event.eid))
.forEach(event => {
// use event id (eid) as unique filter
if (events[event.eid] === undefined) {
events[event.eid] = event
}
})
}
}
})
}
}
ev(content)
if (Object.keys(events).length) {
date = date.startOf('d')
// fetch next day schedule to get 24 hours schedule
await doFetch([module.exports.url({ channel, date: date.add(1, 'd') })], (url, res) => {
if (res) {
ev(res)
}
})
Object.values(events)
.forEach(event => {
const start = dayjs.utc(event.st * 1000)
const stop = start.add(event.d, 's')
if (date.isSame(start, 'd') || (date.isSame(stop, 'd') && stop > date)) {
eventIds.push(event.eid)
const image = `https://images.metadata.sky.com/pd-image/${event.programmeuuid}/16-9/640`
programs.push({
title: event.t,
description: event.sy,
season: event.seasonnumber,
episode: event.episodenumber,
start,
stop,
icon: image,
image
})
}
})
@@ -53,14 +83,14 @@ module.exports = {
return programs
},
async channels() {
const dataPath = path.join(__dirname, '__data__', 'content.json')
let regions = []
const dataPath = path.join(__dirname, '__data__', 'regions.json')
const regions = []
try {
const raw = await fs.readFile(dataPath, 'utf8')
const payload = JSON.parse(raw)
if (Array.isArray(payload.regions)) {
regions = payload.regions
regions.push(...payload.regions)
}
} catch (err) {
debug('Failed to read regions from %s: %o', dataPath, err)
+44 -39
View File
@@ -1,6 +1,7 @@
const { parser, url } = require('./sky.com.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')
@@ -8,62 +9,66 @@ const customParseFormat = require('dayjs/plugin/customParseFormat')
dayjs.extend(customParseFormat)
dayjs.extend(utc)
const date = dayjs.utc('2024-12-14', 'YYYY-MM-DD').startOf('d')
jest.mock('axios')
const date = dayjs.utc('2026-06-08').startOf('d')
const channel = {
site_id: '4086',
xmltv_id: 'SkyHistoryHD.uk'
xmltv_id: 'SkyHistory.uk@HD'
}
axios.get.mockImplementation(url => {
const urls = {
'https://awk.epgsky.com/hawk/linear/schedule/20260608/4086': 'content1.json',
'https://awk.epgsky.com/hawk/linear/schedule/20260609/4086': 'content2.json'
}
let data = ''
if (urls[url] !== undefined) {
data = fs.readFileSync(path.join(__dirname, '__data__', urls[url])).toString()
}
return Promise.resolve({ data })
})
it('can generate valid url', () => {
expect(url({ channel, date })).toBe('https://awk.epgsky.com/hawk/linear/schedule/20241214/4086')
expect(url({ channel, date })).toBe('https://awk.epgsky.com/hawk/linear/schedule/20260608/4086')
})
it('can parse response', () => {
const content = fs.readFileSync(path.join(__dirname, '__data__', 'content.json'))
const result = parser({ content, channel, date }).map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
it('can parse response', async () => {
const content = fs.readFileSync(path.join(__dirname, '__data__', 'content1.json'))
const result = (await parser({ content, channel, date }))
.map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(result.length).toBe(31)
expect(result.length).toBe(30)
expect(result[0]).toMatchObject({
start: '2024-12-14T00:00:00.000Z',
stop: '2024-12-14T00:30:00.000Z',
title: 'Storage Wars',
start: '2026-06-07T23:45:00.000Z',
stop: '2026-06-08T00:45:00.000Z',
title: 'The UnBelievable With Dan Aykroyd',
description:
'A Sale Of Two Cities: Emily brings her mother along with her to Walnut, and Darrell wastes no time finding an advantage. Ivy and Ivy jr clean up with their locker. (S12, ep 4)',
season: 12,
episode: 4,
icon: 'https://images.metadata.sky.com/pd-image/b9572a38-8db7-471e-a2d7-462e1dd26af2/16-9/640',
image: 'https://images.metadata.sky.com/pd-image/b9572a38-8db7-471e-a2d7-462e1dd26af2/16-9/640'
})
expect(result[2]).toMatchObject({
start: '2024-12-14T01:00:00.000Z',
stop: '2024-12-14T01:30:00.000Z',
title: 'Storage Wars',
description:
'Not All That Glitters Is Gourd: Back in the city of Orange, the Vegas Ladies arrive in vintage style - though not everyone agrees. (S12, ep 6)',
season: 12,
'Bizarre Innovations: Discover bizarre innovations like a fully functioning car that hovers in midair. Or clothing made out of everyone\'s favorite source of calcium. (S2, ep 6)',
season: 2,
episode: 6,
icon: 'https://images.metadata.sky.com/pd-image/e9521ccc-bdcc-4075-9c2e-bc835247148b/16-9/640',
image: 'https://images.metadata.sky.com/pd-image/e9521ccc-bdcc-4075-9c2e-bc835247148b/16-9/640'
icon: 'https://images.metadata.sky.com/pd-image/007ade72-3239-47d7-a452-3070eb8e591d/16-9/640',
image: 'https://images.metadata.sky.com/pd-image/007ade72-3239-47d7-a452-3070eb8e591d/16-9/640'
})
expect(result[30]).toMatchObject({
start: '2024-12-14T23:00:00.000Z',
stop: '2024-12-15T01:00:00.000Z',
title: 'American Godfathers: The Five Families',
expect(result[29]).toMatchObject({
start: '2026-06-08T23:00:00.000Z',
stop: '2026-06-09T00:00:00.000Z',
title: 'Digging For Britain',
description:
"Rise of the New Dons: Follow the conflict between the families' old guard and a new generation of younger, American-born mobsters willing to defy their authority. (S1, ep 2)",
'The Tudors: Dr Alice Roberts pays tribute to the Bard, visiting Shakespeare\'s first theatre in London\'s Shoreditch and sifting through the poet\'s rubbish! (S1, ep 4)',
season: 1,
episode: 2,
icon: 'https://images.metadata.sky.com/pd-image/4e38c66b-c2ae-3669-a7ff-e7588743e7ac/16-9/640',
image: 'https://images.metadata.sky.com/pd-image/4e38c66b-c2ae-3669-a7ff-e7588743e7ac/16-9/640'
episode: 4,
icon: 'https://images.metadata.sky.com/pd-image/68152ae7-97d6-44c8-8a54-e78710b94a76/16-9/640',
image: 'https://images.metadata.sky.com/pd-image/68152ae7-97d6-44c8-8a54-e78710b94a76/16-9/640'
})
})
it('can handle empty guide', () => {
const result = parser({
it('can handle empty guide', async () => {
const result = await parser({
date,
channel,
content: ''