|
|
|
@ -18943,7 +18943,7 @@ class Plex {
|
|
|
|
|
})).data.MediaContainer;
|
|
|
|
|
};
|
|
|
|
|
this.tune = async (channelID, session) => {
|
|
|
|
|
session = 'PlexMeetsHomeAssistant';
|
|
|
|
|
session = 'PlexMeetsHomeAssistant3';
|
|
|
|
|
console.log(channelID);
|
|
|
|
|
// Todo: what is 12? do we need to get this from somewhere and change?
|
|
|
|
|
let url = this.authorizeURL(`${this.getBasicURL()}/livetv/dvrs/12/channels/${channelID}/tune?X-Plex-Language=en-us`);
|
|
|
|
@ -18956,12 +18956,10 @@ class Plex {
|
|
|
|
|
const tuneData = (await axios.post(this.authorizeURL(url), {
|
|
|
|
|
timeout: this.requestTimeout
|
|
|
|
|
})).data.MediaContainer;
|
|
|
|
|
console.log(url);
|
|
|
|
|
console.log(tuneData.MediaSubscription[0].MediaGrabOperation[0].Metadata.title);
|
|
|
|
|
console.log('___');
|
|
|
|
|
console.log('Tuning started.');
|
|
|
|
|
let startURL = `${this.getBasicURL()}/video/:/transcode/universal/start.mpd`;
|
|
|
|
|
startURL += `?hasMDE=1`;
|
|
|
|
|
startURL += `&path=${tuneData.MediaSubscription[0].MediaGrabOperation[0].Metadata.key}`;
|
|
|
|
|
startURL += `&path=${encodeURIComponent(tuneData.MediaSubscription[0].MediaGrabOperation[0].Metadata.key)}`;
|
|
|
|
|
startURL += `&mediaIndex=0`;
|
|
|
|
|
startURL += `&partIndex=0`;
|
|
|
|
|
startURL += `&protocol=dash`;
|
|
|
|
@ -18994,7 +18992,6 @@ class Plex {
|
|
|
|
|
startURL += `&X-Plex-Device-Name=Chrome`;
|
|
|
|
|
startURL += `&X-Plex-Device-Screen-Resolution=1792x444%2C1792x1120`;
|
|
|
|
|
startURL += `&X-Plex-Language=en-GB`;
|
|
|
|
|
console.log('Deciding...');
|
|
|
|
|
let decisionURL = `${this.getBasicURL()}/video/:/transcode/universal/decision`;
|
|
|
|
|
decisionURL += `?advancedSubtitles=text`;
|
|
|
|
|
decisionURL += `&audioBoost=100`;
|
|
|
|
@ -19015,17 +19012,34 @@ class Plex {
|
|
|
|
|
decisionURL += `&videoQuality=100`;
|
|
|
|
|
decisionURL += `&X-Plex-Client-Identifier=${session}`;
|
|
|
|
|
decisionURL += `&X-Plex-Platform=Android`;
|
|
|
|
|
const res = await axios.get(this.authorizeURL(decisionURL), {
|
|
|
|
|
const url2 = this.authorizeURL(`${this.getBasicURL()}${tuneData.MediaSubscription[0].MediaGrabOperation[0].Metadata.key}?includeBandwidths=1&offset=-1&X-Plex-Incomplete-Segments=1&X-Plex-Session-Identifier=${session}`);
|
|
|
|
|
console.log('Getting info about channel stream...');
|
|
|
|
|
const res2 = await axios.get(url2, {
|
|
|
|
|
timeout: 60000
|
|
|
|
|
});
|
|
|
|
|
console.log(res2.data);
|
|
|
|
|
if (lodash.isNil(res2.data.MediaContainer.Metadata[0].Media[0].TranscodeSession)) {
|
|
|
|
|
console.log('NOT STARTED - Starting...');
|
|
|
|
|
const res1 = await axios.get(this.authorizeURL(startURL), {
|
|
|
|
|
timeout: 60000
|
|
|
|
|
});
|
|
|
|
|
console.log(res1);
|
|
|
|
|
console.log('____');
|
|
|
|
|
}
|
|
|
|
|
const sleep = async (ms) => {
|
|
|
|
|
return new Promise(resolve => setTimeout(resolve, ms));
|
|
|
|
|
};
|
|
|
|
|
console.log('Deciding...');
|
|
|
|
|
let res = await axios.get(this.authorizeURL(decisionURL), {
|
|
|
|
|
timeout: this.requestTimeout
|
|
|
|
|
});
|
|
|
|
|
console.log(res);
|
|
|
|
|
console.log('Starting...');
|
|
|
|
|
// why bad request???
|
|
|
|
|
const res1 = await axios.get(this.authorizeURL(startURL), {
|
|
|
|
|
timeout: 60000
|
|
|
|
|
console.log('Waiting for new url...');
|
|
|
|
|
await sleep(10000);
|
|
|
|
|
res = await axios.get(this.authorizeURL(decisionURL), {
|
|
|
|
|
timeout: this.requestTimeout
|
|
|
|
|
});
|
|
|
|
|
console.log(res1);
|
|
|
|
|
console.log('____');
|
|
|
|
|
console.log(res);
|
|
|
|
|
return res.data.MediaContainer.Metadata[0].Media[0].Part[0].key;
|
|
|
|
|
};
|
|
|
|
|
this.getContinueWatching = async () => {
|
|
|
|
|