tipiko, zjednodušení?
This commit is contained in:
parent
17b029dd75
commit
b432857f87
4
package-lock.json
generated
4
package-lock.json
generated
@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "denim_3001",
|
"name": "denim_3001",
|
||||||
"version": "3001.62.10",
|
"version": "3001.62.11",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "denim_3001",
|
"name": "denim_3001",
|
||||||
"version": "3001.62.10",
|
"version": "3001.62.11",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@discordjs/voice": "^0.19.0",
|
"@discordjs/voice": "^0.19.0",
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "denim_3001",
|
"name": "denim_3001",
|
||||||
"version": "3001.62.10",
|
"version": "3001.62.11",
|
||||||
"description": "Toto je velmi kvalitní bot.",
|
"description": "Toto je velmi kvalitní bot.",
|
||||||
"repository": {
|
"repository": {
|
||||||
"url": "https://github.com/Histmy/Denim-Bot/"
|
"url": "https://github.com/Histmy/Denim-Bot/"
|
||||||
|
|||||||
@ -10,22 +10,13 @@ const logg = (...cokoli: any[]) => log("[OnePlayDownloader]: ", ...cokoli);
|
|||||||
|
|
||||||
const token = process.env.OnePlayToken;
|
const token = process.env.OnePlayToken;
|
||||||
|
|
||||||
let clientId: string | undefined = undefined;
|
|
||||||
let sessionId: string | undefined = undefined;
|
|
||||||
let serverId: string | undefined = undefined;
|
|
||||||
|
|
||||||
let canForceNotify = true;
|
let canForceNotify = true;
|
||||||
|
|
||||||
function createOneplayBody(payload: Record<string, any>, customData: string) {
|
function createOneplayBody(payload: Record<string, any>, customData: string, clientId: string, sessionId: string, serverId: string) {
|
||||||
|
|
||||||
if (typeof clientId == "undefined" || typeof sessionId == "undefined" || typeof serverId == "undefined") {
|
|
||||||
throw new Error("není všechnno nastaveno");
|
|
||||||
}
|
|
||||||
|
|
||||||
const vec = {
|
const vec = {
|
||||||
"deviceInfo": {
|
"deviceInfo": {
|
||||||
"deviceType": "web",
|
"deviceType": "web",
|
||||||
"appVersion": "R6.23",
|
"appVersion": "R8.14",
|
||||||
"deviceManufacturer": "Unknown",
|
"deviceManufacturer": "Unknown",
|
||||||
"deviceOs": "Windows"
|
"deviceOs": "Windows"
|
||||||
},
|
},
|
||||||
@ -51,91 +42,33 @@ async function udelejOneplayRquest(cesta: string, body: string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let ok = false;
|
let ok = false;
|
||||||
const res = await betterFetch(`https://http.cms.jyxo.cz/api/v1.6/${cesta}`, {
|
const res = await betterFetch(`https://http.cms.jyxo.cz/api/v1.8/${cesta}`, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
body,
|
body,
|
||||||
headers: { Authorization: token }
|
headers: { Authorization: token }
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
ok = res.ok;
|
ok = res.ok;
|
||||||
res.json();
|
return res.json();
|
||||||
})
|
})
|
||||||
.catch(e => { throw new Error(`chyba pri udelejoneplayrequest fetch ${e}`); });
|
.catch(e => { throw new Error(`chyba pri udelejoneplayrequest fetch ${e}`); });
|
||||||
|
|
||||||
logg(`nejspis ${ok ? "" : "ne"}uspesna odpoved`, res);
|
logg(`nejspis ${ok ? "" : "ne"}uspesna odpoved`, res);
|
||||||
|
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
const sleep = (time: number) => new Promise(res => setTimeout(res, time));
|
const getServerInfo = (socket: WebSocket) => new Promise<[string, string]>((res, rej) => {
|
||||||
|
|
||||||
async function executeOrdinaceFlow() {
|
|
||||||
|
|
||||||
// Inicializace
|
|
||||||
await udelejOneplayRquest("app.init", createOneplayBody({
|
|
||||||
"reason": "start",
|
|
||||||
"route": {
|
|
||||||
"url": "https://www.oneplay.cz/porad/1-ordinace-v-ruzove-zahrade-2"
|
|
||||||
}
|
|
||||||
}, `{"requireStartAction":true}`));
|
|
||||||
|
|
||||||
await sleep(500);
|
|
||||||
|
|
||||||
// Navigace na stránku Ordinace
|
|
||||||
await udelejOneplayRquest("page.content.display", createOneplayBody({
|
|
||||||
contentId: "show.1"
|
|
||||||
}, `{"shouldBeInModal":true}`));
|
|
||||||
|
|
||||||
await sleep(500);
|
|
||||||
|
|
||||||
// Otevření 26. řady
|
|
||||||
await udelejOneplayRquest("carousel.display", createOneplayBody({
|
|
||||||
carouselId: "show:1;tab:65;parent:64;carousel:65",
|
|
||||||
criteria: {
|
|
||||||
filterCriterias: "season:80864",
|
|
||||||
sortOption: "DESC"
|
|
||||||
}
|
|
||||||
}, `{"blockId":"show:1;tab:65;parent:64;block:65"}`));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
const handleMessageAndGetNazev = (socket: WebSocket) => new Promise<string>((res, rej) => {
|
|
||||||
const listener = (m: RawData) => {
|
const listener = (m: RawData) => {
|
||||||
//const mes = m.toString();
|
|
||||||
//logg("data:", mes);
|
|
||||||
|
|
||||||
const json = JSON.parse(m.toString());
|
const json = JSON.parse(m.toString());
|
||||||
|
|
||||||
logg("celyjson je", json);
|
logg("celyjson je", json);
|
||||||
|
|
||||||
// if (mes.includes("\"schema\":\"Ping\"")) {
|
|
||||||
// logg("pingec, odpovidam");
|
|
||||||
|
|
||||||
// socket.send(`{"schema":"Pong"}`);
|
|
||||||
// }
|
|
||||||
|
|
||||||
if (json.result?.schema == "ConnectionInitData") {
|
if (json.result?.schema == "ConnectionInitData") {
|
||||||
logg("jojo,slysim a jdu na to");
|
|
||||||
serverId = json.data.serverId;
|
|
||||||
sessionId = json.data.sessionId;
|
|
||||||
logg("serverid", serverId, "sessionid", sessionId);
|
|
||||||
executeOrdinaceFlow().catch(rej);
|
|
||||||
}
|
|
||||||
else if (json?.schema == "ApiCall" && json?.command == "carousel.display") {
|
|
||||||
logg("máme tady názvy epizod zvolené série");
|
|
||||||
|
|
||||||
const nazev = json?.response?.data?.carousel?.tiles?.[0]?.title;
|
|
||||||
|
|
||||||
//logg(typeof json, typeof json?.response, typeof json?.response?.data, typeof json?.response?.data?.carousel, typeof json?.response?.data?.carousel?.titles);
|
|
||||||
|
|
||||||
if (!nazev) {
|
|
||||||
return rej("nazev neexistuje");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof nazev != "string") {
|
|
||||||
return rej("nazev neni string");
|
|
||||||
}
|
|
||||||
|
|
||||||
clearTimeout(timeout);
|
clearTimeout(timeout);
|
||||||
socket.off("message", listener);
|
socket.off("message", listener);
|
||||||
res(nazev);
|
|
||||||
|
res([json.data.serverId, json.data.sessionId]);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -150,8 +83,9 @@ const handleMessageAndGetNazev = (socket: WebSocket) => new Promise<string>((res
|
|||||||
|
|
||||||
async function ziskatNazev() {
|
async function ziskatNazev() {
|
||||||
// Tak tohle stojí fakt za hovno oproti voyu :sjeta:
|
// Tak tohle stojí fakt za hovno oproti voyu :sjeta:
|
||||||
|
// Ale bejvalo to mnohem horší :sjeta:
|
||||||
|
|
||||||
clientId = crypto.randomUUID();
|
const clientId = crypto.randomUUID();
|
||||||
|
|
||||||
logg("moje Ws id je", clientId);
|
logg("moje Ws id je", clientId);
|
||||||
|
|
||||||
@ -160,7 +94,27 @@ async function ziskatNazev() {
|
|||||||
try {
|
try {
|
||||||
socket = new WebSocket(`wss://ws.cms.jyxo.cz/websocket/${clientId}`);
|
socket = new WebSocket(`wss://ws.cms.jyxo.cz/websocket/${clientId}`);
|
||||||
|
|
||||||
return await handleMessageAndGetNazev(socket);
|
const [serverId, sessionId] = await getServerInfo(socket);
|
||||||
|
|
||||||
|
const output = await udelejOneplayRquest("carousel.display", createOneplayBody({
|
||||||
|
carouselId: "show:1;tab:65;parent:64;carousel:65",
|
||||||
|
criteria: {
|
||||||
|
filterCriterias: "season:80864",
|
||||||
|
sortOption: "DESC"
|
||||||
|
}
|
||||||
|
}, `{"blockId":"show:1;tab:65;parent:64;block:65"}`, clientId, sessionId, serverId));
|
||||||
|
|
||||||
|
const nazev = output?.data?.carousel?.tiles?.[0]?.title;
|
||||||
|
|
||||||
|
if (!nazev) {
|
||||||
|
throw new Error("nazev neexistuje");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof nazev != "string") {
|
||||||
|
throw new Error("nazev neni string");
|
||||||
|
}
|
||||||
|
|
||||||
|
return nazev;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
logg("nazev ordinace se nepodarilo ziskat", e);
|
logg("nazev ordinace se nepodarilo ziskat", e);
|
||||||
throw new Error("nazev neni");
|
throw new Error("nazev neni");
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user