Merge pull request #706 from croneter/fix-pms-logs
Optimize headers for communication with PMS to appear like a Plex Media Player
This commit is contained in:
commit
d8796a174e
6 changed files with 29 additions and 25 deletions
|
@ -32,12 +32,11 @@ def getXArgsDeviceInfo(options=None, include_token=True):
|
||||||
"Content-Type": "application/x-www-form-urlencoded",
|
"Content-Type": "application/x-www-form-urlencoded",
|
||||||
# "Access-Control-Allow-Origin": "*",
|
# "Access-Control-Allow-Origin": "*",
|
||||||
# 'X-Plex-Language': 'en',
|
# 'X-Plex-Language': 'en',
|
||||||
'X-Plex-Device': v.ADDON_NAME,
|
'X-Plex-Device': v.DEVICE,
|
||||||
'X-Plex-Client-Platform': v.PLATFORM,
|
'X-Plex-Model': v.MODEL,
|
||||||
'X-Plex-Device-Name': v.DEVICENAME,
|
'X-Plex-Device-Name': v.DEVICENAME,
|
||||||
'X-Plex-Platform': v.PLATFORM,
|
'X-Plex-Platform': v.PLATFORM,
|
||||||
# 'X-Plex-Platform-Version': 'unknown',
|
'X-Plex-Platform-Version': v.PLATFORM_VERSION,
|
||||||
# 'X-Plex-Model': 'unknown',
|
|
||||||
'X-Plex-Product': v.ADDON_NAME,
|
'X-Plex-Product': v.ADDON_NAME,
|
||||||
'X-Plex-Version': v.ADDON_VERSION,
|
'X-Plex-Version': v.ADDON_VERSION,
|
||||||
'X-Plex-Client-Identifier': getDeviceId(),
|
'X-Plex-Client-Identifier': getDeviceId(),
|
||||||
|
|
|
@ -5,7 +5,7 @@ import xbmc
|
||||||
|
|
||||||
from .. import app, utils, variables as v
|
from .. import app, utils, variables as v
|
||||||
|
|
||||||
PLAYLIST_SYNC_ENABLED = (v.PLATFORM != 'Microsoft UWP' and
|
PLAYLIST_SYNC_ENABLED = (v.DEVICE != 'Microsoft UWP' and
|
||||||
utils.settings('enablePlaylistSync') == 'true')
|
utils.settings('enablePlaylistSync') == 'true')
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -40,7 +40,7 @@ RESOURCES_XML = ('%s<MediaContainer>\n'
|
||||||
'</MediaContainer>\n') % (v.XML_HEADER,
|
'</MediaContainer>\n') % (v.XML_HEADER,
|
||||||
v.ADDON_NAME,
|
v.ADDON_NAME,
|
||||||
v.PLATFORM,
|
v.PLATFORM,
|
||||||
v.ADDON_VERSION)
|
v.PLATFORM_VERSION)
|
||||||
|
|
||||||
class MyHandler(BaseHTTPRequestHandler):
|
class MyHandler(BaseHTTPRequestHandler):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -9,7 +9,7 @@ from logging import getLogger
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
|
|
||||||
from ..downloadutils import DownloadUtils as DU
|
from ..downloadutils import DownloadUtils as DU
|
||||||
from .. import utils, timing
|
from .. import timing
|
||||||
from .. import app
|
from .. import app
|
||||||
from .. import variables as v
|
from .. import variables as v
|
||||||
from .. import json_rpc as js
|
from .. import json_rpc as js
|
||||||
|
@ -50,7 +50,7 @@ HEADERS_PMS = {
|
||||||
'Accept': 'text/plain, */*; q=0.01',
|
'Accept': 'text/plain, */*; q=0.01',
|
||||||
'Accept-Language': 'en',
|
'Accept-Language': 'en',
|
||||||
'Accept-Encoding': 'gzip, deflate',
|
'Accept-Encoding': 'gzip, deflate',
|
||||||
'User-Agent': '%s %s (%s)' % (v.ADDON_NAME, v.ADDON_VERSION, v.PLATFORM)
|
'User-Agent': '%s %s (%s)' % (v.ADDON_NAME, v.ADDON_VERSION, v.DEVICE)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -64,14 +64,13 @@ def params_pms():
|
||||||
# 'audioDecoders=mp3,aac,dts{bitrate:800000&channels:2},'
|
# 'audioDecoders=mp3,aac,dts{bitrate:800000&channels:2},'
|
||||||
# 'ac3{bitrate:800000&channels:2}',
|
# 'ac3{bitrate:800000&channels:2}',
|
||||||
'X-Plex-Client-Identifier': v.PKC_MACHINE_IDENTIFIER,
|
'X-Plex-Client-Identifier': v.PKC_MACHINE_IDENTIFIER,
|
||||||
'X-Plex-Device': v.PLATFORM,
|
'X-Plex-Device': v.DEVICE,
|
||||||
'X-Plex-Device-Name': v.DEVICENAME,
|
'X-Plex-Device-Name': v.DEVICENAME,
|
||||||
# 'X-Plex-Device-Screen-Resolution': '1916x1018,1920x1080',
|
# 'X-Plex-Device-Screen-Resolution': '1916x1018,1920x1080',
|
||||||
'X-Plex-Model': 'unknown',
|
'X-Plex-Model': v.MODEL,
|
||||||
'X-Plex-Platform': v.PLATFORM,
|
'X-Plex-Platform': v.PLATFORM,
|
||||||
'X-Plex-Platform-Version': 'unknown',
|
'X-Plex-Platform-Version': v.PLATFORM_VERSION,
|
||||||
'X-Plex-Product': v.ADDON_NAME,
|
'X-Plex-Product': v.ADDON_NAME,
|
||||||
'X-Plex-Provider-Version': v.ADDON_VERSION,
|
|
||||||
'X-Plex-Version': v.ADDON_VERSION,
|
'X-Plex-Version': v.ADDON_VERSION,
|
||||||
'hasMDE': '1',
|
'hasMDE': '1',
|
||||||
# 'X-Plex-Session-Identifier': ['vinuvirm6m20iuw9c4cx1dcx'],
|
# 'X-Plex-Session-Identifier': ['vinuvirm6m20iuw9c4cx1dcx'],
|
||||||
|
@ -89,7 +88,7 @@ def headers_companion_client():
|
||||||
'X-Plex-Client-Identifier': v.PKC_MACHINE_IDENTIFIER,
|
'X-Plex-Client-Identifier': v.PKC_MACHINE_IDENTIFIER,
|
||||||
'X-Plex-Device-Name': v.DEVICENAME,
|
'X-Plex-Device-Name': v.DEVICENAME,
|
||||||
'X-Plex-Platform': v.PLATFORM,
|
'X-Plex-Platform': v.PLATFORM,
|
||||||
'X-Plex-Platform-Version': 'unknown',
|
'X-Plex-Platform-Version': v.PLATFORM_VERSION,
|
||||||
'X-Plex-Product': v.ADDON_NAME,
|
'X-Plex-Product': v.ADDON_NAME,
|
||||||
'X-Plex-Version': v.ADDON_VERSION,
|
'X-Plex-Version': v.ADDON_VERSION,
|
||||||
'Accept-Encoding': 'gzip, deflate',
|
'Accept-Encoding': 'gzip, deflate',
|
||||||
|
|
|
@ -340,14 +340,14 @@ def valid_filename(text):
|
||||||
text = re.sub(r'(?! )\s', '', text)
|
text = re.sub(r'(?! )\s', '', text)
|
||||||
# ASCII characters 0 to 31 (non-printable, just in case)
|
# ASCII characters 0 to 31 (non-printable, just in case)
|
||||||
text = re.sub(u'[\x00-\x1f]', '', text)
|
text = re.sub(u'[\x00-\x1f]', '', text)
|
||||||
if v.PLATFORM == 'Windows':
|
if v.DEVICE == 'Windows':
|
||||||
# Whitespace at the end of the filename is illegal
|
# Whitespace at the end of the filename is illegal
|
||||||
text = text.strip()
|
text = text.strip()
|
||||||
# Dot at the end of a filename is illegal
|
# Dot at the end of a filename is illegal
|
||||||
text = re.sub(r'\.+$', '', text)
|
text = re.sub(r'\.+$', '', text)
|
||||||
# Illegal Windows characters
|
# Illegal Windows characters
|
||||||
text = re.sub(r'[/\\:*?"<>|\^]', '', text)
|
text = re.sub(r'[/\\:*?"<>|\^]', '', text)
|
||||||
elif v.PLATFORM == 'MacOSX':
|
elif v.DEVICE == 'MacOSX':
|
||||||
# Colon is illegal
|
# Colon is illegal
|
||||||
text = re.sub(r':', '', text)
|
text = re.sub(r':', '', text)
|
||||||
# Files cannot begin with a dot
|
# Files cannot begin with a dot
|
||||||
|
|
|
@ -4,6 +4,7 @@ from __future__ import absolute_import, division, unicode_literals
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import re
|
import re
|
||||||
|
import platform
|
||||||
|
|
||||||
import xbmc
|
import xbmc
|
||||||
from xbmcaddon import Addon
|
from xbmcaddon import Addon
|
||||||
|
@ -51,23 +52,28 @@ KODILONGVERSION = xbmc.getInfoLabel('System.BuildVersion')
|
||||||
KODI_PROFILE = try_decode(xbmc.translatePath("special://profile"))
|
KODI_PROFILE = try_decode(xbmc.translatePath("special://profile"))
|
||||||
|
|
||||||
if xbmc.getCondVisibility('system.platform.osx'):
|
if xbmc.getCondVisibility('system.platform.osx'):
|
||||||
PLATFORM = "MacOSX"
|
DEVICE = "MacOSX"
|
||||||
elif xbmc.getCondVisibility("system.platform.uwp"):
|
elif xbmc.getCondVisibility("system.platform.uwp"):
|
||||||
PLATFORM = "Microsoft UWP"
|
DEVICE = "Microsoft UWP"
|
||||||
elif xbmc.getCondVisibility('system.platform.atv2'):
|
elif xbmc.getCondVisibility('system.platform.atv2'):
|
||||||
PLATFORM = "AppleTV2"
|
DEVICE = "AppleTV2"
|
||||||
elif xbmc.getCondVisibility('system.platform.ios'):
|
elif xbmc.getCondVisibility('system.platform.ios'):
|
||||||
PLATFORM = "iOS"
|
DEVICE = "iOS"
|
||||||
elif xbmc.getCondVisibility('system.platform.windows'):
|
elif xbmc.getCondVisibility('system.platform.windows'):
|
||||||
PLATFORM = "Windows"
|
DEVICE = "Windows"
|
||||||
elif xbmc.getCondVisibility('system.platform.raspberrypi'):
|
elif xbmc.getCondVisibility('system.platform.raspberrypi'):
|
||||||
PLATFORM = "RaspberryPi"
|
DEVICE = "RaspberryPi"
|
||||||
elif xbmc.getCondVisibility('system.platform.linux'):
|
elif xbmc.getCondVisibility('system.platform.linux'):
|
||||||
PLATFORM = "Linux"
|
DEVICE = "Linux"
|
||||||
elif xbmc.getCondVisibility('system.platform.android'):
|
elif xbmc.getCondVisibility('system.platform.android'):
|
||||||
PLATFORM = "Android"
|
DEVICE = "Android"
|
||||||
else:
|
else:
|
||||||
PLATFORM = "Unknown"
|
DEVICE = "Unknown"
|
||||||
|
|
||||||
|
MODEL = platform.release() or 'Unknown'
|
||||||
|
# Plex' own platform for e.g. Plex Media Player
|
||||||
|
PLATFORM = 'Konvergo'
|
||||||
|
PLATFORM_VERSION = '2.26.0.947-1e21fa2b'
|
||||||
|
|
||||||
DEVICENAME = try_decode(_ADDON.getSetting('deviceName'))
|
DEVICENAME = try_decode(_ADDON.getSetting('deviceName'))
|
||||||
if not DEVICENAME:
|
if not DEVICENAME:
|
||||||
|
@ -637,7 +643,7 @@ def database_paths():
|
||||||
|
|
||||||
# Encoding to be used for our m3u playlist files
|
# Encoding to be used for our m3u playlist files
|
||||||
# m3u files do not have encoding specified by definition, unfortunately.
|
# m3u files do not have encoding specified by definition, unfortunately.
|
||||||
if PLATFORM == 'Windows':
|
if DEVICE == 'Windows':
|
||||||
M3U_ENCODING = 'mbcs'
|
M3U_ENCODING = 'mbcs'
|
||||||
else:
|
else:
|
||||||
M3U_ENCODING = sys.getfilesystemencoding()
|
M3U_ENCODING = sys.getfilesystemencoding()
|
||||||
|
|
Loading…
Reference in a new issue