1
1
import { Elysia , t } from "elysia" ;
2
- import { getFilterFromQuery } from "../filters" ;
2
+ import { getFilterFromQuery , getQueryParamsFromFilter } from "../filters" ;
3
3
import { decrypt } from "../lib/crypto" ;
4
+ import { makeUrl } from "../lib/url" ;
4
5
import {
5
6
formatAssetList ,
6
7
formatMasterPlaylist ,
@@ -13,17 +14,16 @@ import {
13
14
processSessionOnMasterReq ,
14
15
} from "../session" ;
15
16
16
- export const session = new Elysia ( )
17
+ export const sessionRoutes = new Elysia ( )
17
18
. post (
18
19
"/session" ,
19
20
async ( { body } ) => {
20
21
const session = await createSession ( body ) ;
21
22
22
23
const filter = body . filter ?? { } ;
23
- const url = makeMasterUrl ( {
24
- url : session . url ,
25
- session,
26
- filter,
24
+
25
+ const url = makeUrl ( `session/${ session . id } /master.m3u8` , {
26
+ ...getQueryParamsFromFilter ( filter ) ,
27
27
} ) ;
28
28
29
29
return { url } ;
@@ -87,6 +87,27 @@ export const session = new Elysia()
87
87
} ) ,
88
88
} ,
89
89
)
90
+ . get (
91
+ "/session/:sessionId/master.m3u8" ,
92
+ async ( { params, query, redirect } ) => {
93
+ const session = await getSession ( params . sessionId ) ;
94
+ const url = makeMasterUrl ( {
95
+ url : session . url ,
96
+ filter : getFilterFromQuery ( query ) ,
97
+ session,
98
+ } ) ;
99
+ return redirect ( url , 302 ) ;
100
+ } ,
101
+ {
102
+ params : t . Object ( {
103
+ sessionId : t . String ( ) ,
104
+ } ) ,
105
+ query : t . Object ( {
106
+ "filter.resolution" : t . Optional ( t . String ( ) ) ,
107
+ "filter.audioLanguage" : t . Optional ( t . String ( ) ) ,
108
+ } ) ,
109
+ } ,
110
+ )
90
111
. get (
91
112
"/out/master.m3u8" ,
92
113
async ( { set, query } ) => {
@@ -95,9 +116,7 @@ export const session = new Elysia()
95
116
await processSessionOnMasterReq ( session ) ;
96
117
97
118
const filter = getFilterFromQuery ( query ) ;
98
-
99
119
const url = decrypt ( query . eurl ) ;
100
-
101
120
const playlist = await formatMasterPlaylist ( url , {
102
121
session,
103
122
filter,
0 commit comments