@handler('test')
def MainMenu():
oc = ObjectContainer()
group = Prefs['group'] # for example aaa/bbb
oc.add(DirectoryObject(key = Callback(ListItems, group = unicode(group)), title = group))
return oc
@route('test/listitems/{group}', page = int)
def ListItems(group, page = 1):
items = Dict[group]
for item in items:
....
I get an error stating that url test/listitems/aaa/bbb is not found, how can I escape it to something like test/listitems/aaa/bbb or similar? aaa/bbb value is being red from preferences, provided by user.
If I drop the {group} from @route I see this in log file:
DEBUG (runtime:717) - Handling request GET /video/iptv/listitems?group=aaa%2Fbbb
So Plex is able to change / to %2F in some situations, I want to force Plex to do so in @route, so I could get this:
DEBUG (runtime:717) - Handling request GET /video/iptv/listitems/aaa%2Fbbb
P. S. On one hand omitting the {group} might be a solution, but if group text has unicode symbols the “unicodeness” is lost when passing group as a parameter to a procedure and group is not a part of a @route, but this is a different question.
# Encode with Plex's custom base64 Encode/Decode
group = E(Prefs['group'])
# then when you need it later
items = Dict[D(group)]
E() and D() are aliases for Encode() and Decode() respectively.
Info taken from utilkit.py:
def Encode(s):
"""
Encodes the given string using the framework's standard encoding (a slight variant on
Base64 which ensures that the string can be safely used as part of a URL).
"""
...
def Decode(self, s):
"""
Decodes a string previously encoded using the above function.
"""
...
If I drop the {group} from @route I see this in log file:
DEBUG (runtime:717) - Handling request GET /video/iptv/listitems?group=aaa%2Fbbb
So Plex is able to change / to %2F in some situations, I want to force Plex to do so in @route, so I could get this:
DEBUG (runtime:717) - Handling request GET /video/iptv/listitems/aaa%2Fbbb
P. S. On one hand omitting the {group} might be a solution, but if group text has unicode symbols the “unicodeness” is lost when passing group as a parameter to a procedure and group is not a part of a @route, but this is a different question.
Speaking of the latest public server (1.4.4.3495) with corresponding framework - String.Quote() from utilskit.py wouldn’t help with this issue.
Why? Because you can’t pass any **kwargs to it and urllib.quote() by default does not encode / symbol as it’s marked as safe (ref to https://docs.python.org/2/library/urllib.html#urllib.quote).
But, you can import it directly and use like this: