]>
git.gir.st - subscriptionfeed.git/blob - app/dangerous/protobuf.py
2 from dataclasses
import dataclass
3 from typing
import Optional
5 from pure_protobuf
.dataclasses_
import field
, message
6 from pure_protobuf
.types
import int64
10 class Filters
: # adapted from invidious
11 date
: Optional
[int64
] = field(1, default
=None)
12 type: Optional
[int64
] = field(2, default
=None)
13 length
: Optional
[int64
] = field(3, default
=None)
14 is_hd
: Optional
[bool] = field(4, default
=None)
15 subtitles
: Optional
[bool] = field(5, default
=None)
16 ccommons
: Optional
[bool] = field(6, default
=None)
17 is_3d
: Optional
[bool] = field(7, default
=None)
18 live
: Optional
[bool] = field(8, default
=None)
19 purchased
: Optional
[bool] = field(9, default
=None)
20 is_4k
: Optional
[bool] = field(14, default
=None)
21 is_360
: Optional
[bool] = field(15, default
=None)
22 location
: Optional
[bool] = field(23, default
=None)
23 is_hdr
: Optional
[bool] = field(25, default
=None)
27 sorted: Optional
[int64
] = field(1, default
=None)
28 filter: Optional
[Filters
] = field(2, default
=None)
30 def make_sp(sort
=None, date
=None, type=None, len=None, features
=[]):
31 sortorder
= dict(relevance
=0, rating
=1, date
=2, views
=3)
32 datefilter
= dict(hour
=1, day
=2, week
=3, month
=4, year
=5)
33 typefilter
= dict(video
=1, channel
=2, playlist
=3, movie
=4, show
=5)
34 lenfilter
= dict(short
=1, long=2)
36 return base64
.b64encode(SearchRequest(
37 sorted=sortorder
.get(sort
),
39 date
=datefilter
.get(date
),
40 type=typefilter
.get(type),
41 length
=lenfilter
.get(len),
42 **{f
:True for f
in features
},
43 ) if date
or type or len or features
else None
44 ).dumps()).decode('ascii')