ROKU -> v1.0.1
- Add support for subscription titles
This commit is contained in:
parent
6567f74547
commit
b65c6b7437
@ -24,9 +24,9 @@ class ROKU(Service):
|
|||||||
Service code for The Roku Channel (https://therokuchannel.roku.com)
|
Service code for The Roku Channel (https://therokuchannel.roku.com)
|
||||||
|
|
||||||
\b
|
\b
|
||||||
Version: 1.0.0
|
Version: 1.0.1
|
||||||
Author: stabbedbybrick
|
Author: stabbedbybrick
|
||||||
Authorization: Cookies (optional)
|
Authorization: Cookies
|
||||||
Robustness:
|
Robustness:
|
||||||
Widevine:
|
Widevine:
|
||||||
L3: 1080p, DD5.1
|
L3: 1080p, DD5.1
|
||||||
@ -110,7 +110,7 @@ class ROKU(Service):
|
|||||||
name=data["title"],
|
name=data["title"],
|
||||||
year=data["releaseYear"],
|
year=data["releaseYear"],
|
||||||
language=data["viewOptions"][0]["media"].get("originalAudioLanguage", "en"),
|
language=data["viewOptions"][0]["media"].get("originalAudioLanguage", "en"),
|
||||||
data=None,
|
data=data,
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
@ -128,7 +128,7 @@ class ROKU(Service):
|
|||||||
name=episode["title"],
|
name=episode["title"],
|
||||||
year=data["releaseYear"],
|
year=data["releaseYear"],
|
||||||
language=episode["viewOptions"][0]["media"].get("originalAudioLanguage", "en"),
|
language=episode["viewOptions"][0]["media"].get("originalAudioLanguage", "en"),
|
||||||
data=None,
|
data=data,
|
||||||
)
|
)
|
||||||
for episode in episodes
|
for episode in episodes
|
||||||
]
|
]
|
||||||
@ -146,7 +146,7 @@ class ROKU(Service):
|
|||||||
name=data["title"],
|
name=data["title"],
|
||||||
year=data["releaseYear"],
|
year=data["releaseYear"],
|
||||||
language=data["viewOptions"][0]["media"].get("originalAudioLanguage", "en"),
|
language=data["viewOptions"][0]["media"].get("originalAudioLanguage", "en"),
|
||||||
data=None,
|
data=data,
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
@ -154,15 +154,27 @@ class ROKU(Service):
|
|||||||
def get_tracks(self, title: Title_T) -> Tracks:
|
def get_tracks(self, title: Title_T) -> Tracks:
|
||||||
token = self.session.get(self.config["endpoints"]["token"]).json()["csrf"]
|
token = self.session.get(self.config["endpoints"]["token"]).json()["csrf"]
|
||||||
|
|
||||||
|
options = title.data["viewOptions"]
|
||||||
|
subscription = options[0].get("license", "").lower()
|
||||||
|
authenticated = next((x for x in options if x.get("isAuthenticated")), None)
|
||||||
|
|
||||||
|
if subscription == "subscription" and not authenticated:
|
||||||
|
self.log.error("This title is only available to subscribers")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
play_id = authenticated.get("playId") if authenticated else options[0].get("playId")
|
||||||
|
provider_id = authenticated.get("providerId") if authenticated else options[0].get("providerId")
|
||||||
|
|
||||||
headers = {
|
headers = {
|
||||||
"csrf-token": token,
|
"csrf-token": token,
|
||||||
}
|
}
|
||||||
payload = {
|
payload = {
|
||||||
"rokuId": title.id,
|
"rokuId": title.id,
|
||||||
|
"playId": play_id,
|
||||||
"mediaFormat": "mpeg-dash",
|
"mediaFormat": "mpeg-dash",
|
||||||
"drmType": "widevine",
|
"drmType": "widevine",
|
||||||
"quality": "fhd",
|
"quality": "fhd",
|
||||||
"providerId": "rokuavod",
|
"providerId": provider_id,
|
||||||
}
|
}
|
||||||
|
|
||||||
r = self.session.post(
|
r = self.session.post(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user