From 6f12315c8ee9cf5648716ab290727c6b2b3fb022 Mon Sep 17 00:00:00 2001 From: Etoh Date: Sat, 10 Feb 2018 17:54:01 +0000 Subject: [PATCH 1/5] Fix error when server run without --max-chat-message-length being set (#177) --- syncplay/client.py | 12 ++++++++---- syncplay/server.py | 4 ++-- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/syncplay/client.py b/syncplay/client.py index 8a1b3cd..e330843 100644 --- a/syncplay/client.py +++ b/syncplay/client.py @@ -560,10 +560,14 @@ class SyncplayClient(object): elif not self.serverFeatures["sharedPlaylists"]: self.ui.showErrorMessage(getMessage("shared-playlists-disabled-by-server-error")) # TODO: Have messages for all unsupported & disabled features - constants.MAX_CHAT_MESSAGE_LENGTH = self.serverFeatures["maxChatMessageLength"] - constants.MAX_USERNAME_LENGTH = self.serverFeatures["maxUsernameLength"] - constants.MAX_ROOM_NAME_LENGTH = self.serverFeatures["maxRoomNameLength"] - constants.MAX_FILENAME_LENGTH = self.serverFeatures["maxFilenameLength"] + if self.serverFeatures["maxChatMessageLength"] is not None: + constants.MAX_CHAT_MESSAGE_LENGTH = self.serverFeatures["maxChatMessageLength"] + if self.serverFeatures["maxUsernameLength"] is not None: + constants.MAX_USERNAME_LENGTH = self.serverFeatures["maxUsernameLength"] + if self.serverFeatures["maxRoomNameLength"] is not None: + constants.MAX_ROOM_NAME_LENGTH = self.serverFeatures["maxRoomNameLength"] + if self.serverFeatures["maxFilenameLength"] is not None: + constants.MAX_FILENAME_LENGTH = self.serverFeatures["maxFilenameLength"] constants.MPV_SYNCPLAYINTF_CONSTANTS_TO_SEND = ["MaxChatMessageLength={}".format(constants.MAX_CHAT_MESSAGE_LENGTH), u"inputPromptStartCharacter={}".format(constants.MPV_INPUT_PROMPT_START_CHARACTER), u"inputPromptEndCharacter={}".format(constants.MPV_INPUT_PROMPT_END_CHARACTER), diff --git a/syncplay/server.py b/syncplay/server.py index 96904ee..21a09ad 100644 --- a/syncplay/server.py +++ b/syncplay/server.py @@ -27,7 +27,7 @@ class SyncFactory(Factory): self._motdFilePath = motdFilePath self.disableReady = disableReady self.disableChat = disableChat - self.maxChatMessageLength = maxChatMessageLength + self.maxChatMessageLength = maxChatMessageLength if maxChatMessageLength is not None else constants.MAX_CHAT_MESSAGE_LENGTH if not isolateRooms: self._roomManager = RoomManager() else: @@ -548,4 +548,4 @@ class ConfigurationGetter(object): self._argparser.add_argument('--disable-chat', action='store_true', help=getMessage("server-chat-argument")) self._argparser.add_argument('--salt', metavar='salt', type=str, nargs='?', help=getMessage("server-salt-argument")) self._argparser.add_argument('--motd-file', metavar='file', type=str, nargs='?', help=getMessage("server-motd-argument")) - self._argparser.add_argument('--max-chat-message-length', metavar='maxChatMessageLength', type=int, nargs='?',help=getMessage("server-chat-maxchars-argument").format(constants.MAX_CHAT_MESSAGE_LENGTH)) + self._argparser.add_argument('--max-chat-message-length', metavar='maxChatMessageLength',type=int, nargs='?',help=getMessage("server-chat-maxchars-argument").format(constants.MAX_CHAT_MESSAGE_LENGTH)) From 398641c5f7d30beff32064ebf5b504a633c1c227 Mon Sep 17 00:00:00 2001 From: albertosottile Date: Sun, 25 Feb 2018 14:44:56 +0000 Subject: [PATCH 2/5] Add --max-username-length option & increased default username and chat lengths to 150 characters --- syncplay/constants.py | 4 ++-- syncplay/messages_de.py | 1 + syncplay/messages_en.py | 1 + syncplay/messages_it.py | 1 + syncplay/messages_ru.py | 1 + syncplay/server.py | 6 ++++-- syncplay/ui/GuiConfiguration.py | 1 - 7 files changed, 10 insertions(+), 5 deletions(-) diff --git a/syncplay/constants.py b/syncplay/constants.py index f5f0f41..5ea98c8 100644 --- a/syncplay/constants.py +++ b/syncplay/constants.py @@ -66,8 +66,8 @@ DEFAULT_CHAT_OUTPUT_FONT_COLOR = "#FFFF00" DEFAULT_CHAT_FONT_WEIGHT = 1 # Max numbers are used by server (and client pre-connection). Once connected client gets values from server featureList (or uses 'fallback' versions for old servers) -MAX_CHAT_MESSAGE_LENGTH = 125 # Number of displayed characters -MAX_USERNAME_LENGTH = 20 # Number of displayed characters +MAX_CHAT_MESSAGE_LENGTH = 150 # Number of displayed characters +MAX_USERNAME_LENGTH = 150 # Number of displayed characters MAX_ROOM_NAME_LENGTH = 35 # Number of displayed characters MAX_FILENAME_LENGTH = 250 # Number of displayed characters FALLBACK_MAX_CHAT_MESSAGE_LENGTH = 50 # Number of displayed characters diff --git a/syncplay/messages_de.py b/syncplay/messages_de.py index f015834..7caed97 100644 --- a/syncplay/messages_de.py +++ b/syncplay/messages_de.py @@ -433,6 +433,7 @@ de = { "server-motd-argument": u"Pfad zur Datei, von der die Nachricht des Tages geladen wird", "server-chat-argument" : "Should chat be disabled?", # TODO: Translate "server-chat-maxchars-argument": u"Maximum number of characters in a chat message (default is {})", # TODO: Translate + "server-maxusernamelength-argument" : u"Maximum number of charactrs in a username (default is {})", # TODO: Translate "server-messed-up-motd-unescaped-placeholders": u"Die Nachricht des Tages hat unmaskierte Platzhalter. Alle $-Zeichen sollten verdoppelt werden ($$).", "server-messed-up-motd-too-long": u"Die Nachricht des Tages ist zu lang - Maximal {} Zeichen, aktuell {}.", diff --git a/syncplay/messages_en.py b/syncplay/messages_en.py index 4d04b04..5548f00 100644 --- a/syncplay/messages_en.py +++ b/syncplay/messages_en.py @@ -437,6 +437,7 @@ en = { "server-motd-argument": "path to file from which motd will be fetched", "server-chat-argument" : "Should chat be disabled?", "server-chat-maxchars-argument" : u"Maximum number of characters in a chat message (default is {})", # Default number of characters + "server-maxusernamelength-argument" : u"Maximum number of charactrs in a username (default is {})", "server-messed-up-motd-unescaped-placeholders": "Message of the Day has unescaped placeholders. All $ signs should be doubled ($$).", "server-messed-up-motd-too-long": u"Message of the Day is too long - maximum of {} chars, {} given.", diff --git a/syncplay/messages_it.py b/syncplay/messages_it.py index 53a5c1e..bda5522 100644 --- a/syncplay/messages_it.py +++ b/syncplay/messages_it.py @@ -438,6 +438,7 @@ it = { "server-motd-argument": u"percorso del file da cui verrà letto il messaggio del giorno", "server-chat-argument" : u"abilita o disabilita la chat", "server-chat-maxchars-argument" : u"Numero massimo di caratteri in un messaggio di chat (default è {})", # Default number of characters + "server-maxusernamelength-argument": u"Maximum number of charactrs in a username (default is {})", # TODO: Translate "server-messed-up-motd-unescaped-placeholders": u"Il messaggio del giorno ha dei caratteri non 'escaped'. Tutti i simboli $ devono essere doppi ($$).", "server-messed-up-motd-too-long": u"Il messaggio del giorno è troppo lungo - numero massimo di caratteri è {}, {} trovati.", diff --git a/syncplay/messages_ru.py b/syncplay/messages_ru.py index 0b47c07..7a1fafe 100644 --- a/syncplay/messages_ru.py +++ b/syncplay/messages_ru.py @@ -439,6 +439,7 @@ ru = { "server-motd-argument" : u"путь к файлу, из которого будет извлекаться MOTD-сообщение", "server-chat-argument" : "Should chat be disabled?", # TODO: Translate "server-chat-maxchars-argument": u"Maximum number of characters in a chat message (default is {})", # TODO: Translate + "server-maxusernamelength-argument": u"Maximum number of charactrs in a username (default is {})", # TODO: Translate "server-messed-up-motd-unescaped-placeholders" : u"MOTD-сообщение содержит неэкранированные спец.символы. Все знаки $ должны быть продублированы ($$).", "server-messed-up-motd-too-long" : u"MOTD-сообщение слишком длинное: максимальная длина - {} символ(ов), текущая длина - {} символ(ов).", diff --git a/syncplay/server.py b/syncplay/server.py index 21a09ad..8e1c625 100644 --- a/syncplay/server.py +++ b/syncplay/server.py @@ -14,7 +14,7 @@ import argparse from syncplay.utils import RoomPasswordProvider, NotControlledRoom, RandomStringGenerator, meetsMinVersion, playlistIsValid, truncateText class SyncFactory(Factory): - def __init__(self, password='', motdFilePath=None, isolateRooms=False, salt=None, disableReady=False,disableChat=False, maxChatMessageLength=constants.MAX_CHAT_MESSAGE_LENGTH): + def __init__(self, password='', motdFilePath=None, isolateRooms=False, salt=None, disableReady=False,disableChat=False, maxChatMessageLength=constants.MAX_CHAT_MESSAGE_LENGTH, maxUsernameLength=constants.MAX_USERNAME_LENGTH): self.isolateRooms = isolateRooms print getMessage("welcome-server-notification").format(syncplay.version) if password: @@ -28,6 +28,7 @@ class SyncFactory(Factory): self.disableReady = disableReady self.disableChat = disableChat self.maxChatMessageLength = maxChatMessageLength if maxChatMessageLength is not None else constants.MAX_CHAT_MESSAGE_LENGTH + self.maxUsernameLength = maxUsernameLength if maxUsernameLength is not None else constants.MAX_USERNAME_LENGTH if not isolateRooms: self._roomManager = RoomManager() else: @@ -50,7 +51,7 @@ class SyncFactory(Factory): features["managedRooms"] = True features["chat"] = not self.disableChat features["maxChatMessageLength"] = self.maxChatMessageLength - features["maxUsernameLength"] = constants.MAX_USERNAME_LENGTH + features["maxUsernameLength"] = self.maxUsernameLength features["maxRoomNameLength"] = constants.MAX_ROOM_NAME_LENGTH features["maxFilenameLength"] = constants.MAX_FILENAME_LENGTH @@ -549,3 +550,4 @@ class ConfigurationGetter(object): self._argparser.add_argument('--salt', metavar='salt', type=str, nargs='?', help=getMessage("server-salt-argument")) self._argparser.add_argument('--motd-file', metavar='file', type=str, nargs='?', help=getMessage("server-motd-argument")) self._argparser.add_argument('--max-chat-message-length', metavar='maxChatMessageLength',type=int, nargs='?',help=getMessage("server-chat-maxchars-argument").format(constants.MAX_CHAT_MESSAGE_LENGTH)) + self._argparser.add_argument('--max-username-length', metavar='maxUsernameLength', type=int, nargs='?',help=getMessage("server-maxusernamelength-argument").format(constants.MAX_USERNAME_LENGTH)) diff --git a/syncplay/ui/GuiConfiguration.py b/syncplay/ui/GuiConfiguration.py index 605007c..fd6bcd3 100755 --- a/syncplay/ui/GuiConfiguration.py +++ b/syncplay/ui/GuiConfiguration.py @@ -596,7 +596,6 @@ class ConfigDialog(QtWidgets.QDialog): self.defaultroomLabel.setObjectName("room") self.defaultroomTextbox.setObjectName("room") - self.usernameTextbox.setMaxLength(constants.MAX_USERNAME_LENGTH) self.defaultroomTextbox.setMaxLength(constants.MAX_ROOM_NAME_LENGTH) self.connectionSettingsLayout = QtWidgets.QGridLayout() From 27675bf8e7feba0012fdf914c4b9f85452fa0422 Mon Sep 17 00:00:00 2001 From: albertosottile Date: Thu, 1 Mar 2018 19:26:07 +0000 Subject: [PATCH 3/5] Set recent client as 1.5.2 --- syncplay/__init__.py | 2 +- syncplay/constants.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/syncplay/__init__.py b/syncplay/__init__.py index e039478..c66c5cc 100644 --- a/syncplay/__init__.py +++ b/syncplay/__init__.py @@ -1,4 +1,4 @@ version = '1.5.2' milestone = 'Yoitsu' -release_number = '56' +release_number = '57' projectURL = 'http://syncplay.pl/' diff --git a/syncplay/constants.py b/syncplay/constants.py index 5ea98c8..d6a2d73 100644 --- a/syncplay/constants.py +++ b/syncplay/constants.py @@ -10,7 +10,7 @@ UI_TIME_FORMAT = "[%X] " CONFIG_NAMES = [".syncplay", "syncplay.ini"] #Syncplay searches first to last DEFAULT_CONFIG_NAME_WINDOWS = "syncplay.ini" DEFAULT_CONFIG_NAME_LINUX = ".syncplay" -RECENT_CLIENT_THRESHOLD = "1.5.1" #This and higher considered 'recent' clients (no warnings) +RECENT_CLIENT_THRESHOLD = "1.5.2" #This and higher considered 'recent' clients (no warnings) WARN_OLD_CLIENTS = True #Use MOTD to inform old clients to upgrade LIST_RELATIVE_CONFIGS = True # Print list of relative configs loaded SHOW_CONTACT_INFO = True # Displays dev contact details below list in GUI From 300d4097b4943a21319a128d6c5b2cf543377aab Mon Sep 17 00:00:00 2001 From: albertosottile Date: Sat, 3 Mar 2018 12:18:30 +0000 Subject: [PATCH 4/5] Fix typo --- syncplay/messages_de.py | 2 +- syncplay/messages_en.py | 2 +- syncplay/messages_it.py | 2 +- syncplay/messages_ru.py | 2 +- syncplay/ui/gui.py | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/syncplay/messages_de.py b/syncplay/messages_de.py index 7caed97..b389a97 100644 --- a/syncplay/messages_de.py +++ b/syncplay/messages_de.py @@ -455,7 +455,7 @@ de = { "sharedplaylistenabled-label" : u"Enable shared playlists", "removefromplaylist-menu-label" : u"Remove from playlist", "shuffleremainingplaylist-menu-label" : u"Shuffle remaining playlist", - "shuffleentireplaylist-menuu-label" : u"Shuffle entire playlist", + "shuffleentireplaylist-menu-label" : u"Shuffle entire playlist", "undoplaylist-menu-label" : u"Undo last change to playlist", "addfilestoplaylist-menu-label" : u"Add file(s) to bottom of playlist", "addurlstoplaylist-menu-label" : u"Add URL(s) to bottom of playlist", diff --git a/syncplay/messages_en.py b/syncplay/messages_en.py index 5548f00..ce216ed 100644 --- a/syncplay/messages_en.py +++ b/syncplay/messages_en.py @@ -459,7 +459,7 @@ en = { "sharedplaylistenabled-label" : u"Enable shared playlists", "removefromplaylist-menu-label" : u"Remove from playlist", "shuffleremainingplaylist-menu-label" : u"Shuffle remaining playlist", - "shuffleentireplaylist-menuu-label" : u"Shuffle entire playlist", + "shuffleentireplaylist-menu-label" : u"Shuffle entire playlist", "undoplaylist-menu-label" : u"Undo last change to playlist", "addfilestoplaylist-menu-label" : u"Add file(s) to bottom of playlist", "addurlstoplaylist-menu-label" : u"Add URL(s) to bottom of playlist", diff --git a/syncplay/messages_it.py b/syncplay/messages_it.py index bda5522..22f6381 100644 --- a/syncplay/messages_it.py +++ b/syncplay/messages_it.py @@ -460,7 +460,7 @@ it = { "sharedplaylistenabled-label" : u"Abilita le playlist condivise", "removefromplaylist-menu-label" : u"Rimuovi dalla playlist", "shuffleremainingplaylist-menu-label" : u"Mescola i file non ancora riprodotti", - "shuffleentireplaylist-menuu-label" : u"Mescola l'intera playlist", + "shuffleentireplaylist-menu-label" : u"Mescola l'intera playlist", "undoplaylist-menu-label" : u"Annulla l'ultima modifica alla playlist", "addfilestoplaylist-menu-label" : u"Aggiungi un file alla fine della playlist", "addurlstoplaylist-menu-label" : u"Aggiungi un indirizzo alla fine della playlist", diff --git a/syncplay/messages_ru.py b/syncplay/messages_ru.py index 7a1fafe..f32e73f 100644 --- a/syncplay/messages_ru.py +++ b/syncplay/messages_ru.py @@ -460,7 +460,7 @@ ru = { "sharedplaylistenabled-label" : u"Включить общий список воспроизведения", "removefromplaylist-menu-label" : u"Удалить", "shufflepremaininglaylist-menuu-label" : u"Shuffle remaining playlist", # Was: Перемешать список # TODO: Translate - "shuffleentireplaylist-menuu-label" : u"Shuffle entire playlist", # TODO: Translate + "shuffleentireplaylist-menu-label" : u"Shuffle entire playlist", # TODO: Translate "undoplaylist-menu-label" : u"Отменить последнее действие", "addfilestoplaylist-menu-label" : u"Добавить файлы в очередь", "addurlstoplaylist-menu-label" : u"Добавить ссылку в очередь", diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py index d2fa381..e989756 100755 --- a/syncplay/ui/gui.py +++ b/syncplay/ui/gui.py @@ -597,7 +597,7 @@ class MainWindow(QtWidgets.QMainWindow): menu.addAction(QtGui.QPixmap(resourcespath + u"delete.png"), getMessage("removefromplaylist-menu-label"), lambda: self.deleteSelectedPlaylistItems()) menu.addSeparator() menu.addAction(QtGui.QPixmap(resourcespath + u"arrow_switch.png"), getMessage("shuffleremainingplaylist-menu-label"), lambda: self.shuffleRemainingPlaylist()) - menu.addAction(QtGui.QPixmap(resourcespath + u"arrow_switch.png"), getMessage("shuffleentireplaylist-menuu-label"), lambda: self.shuffleEntirePlaylist()) + menu.addAction(QtGui.QPixmap(resourcespath + u"arrow_switch.png"), getMessage("shuffleentireplaylist-menu-label"), lambda: self.shuffleEntirePlaylist()) menu.addAction(QtGui.QPixmap(resourcespath + u"arrow_undo.png"), getMessage("undoplaylist-menu-label"), lambda: self.undoPlaylistChange()) menu.addAction(QtGui.QPixmap(resourcespath + u"film_edit.png"), getMessage("editplaylist-menu-label"), lambda: self.openEditPlaylistDialog()) menu.addAction(QtGui.QPixmap(resourcespath + u"film_add.png"),getMessage("addfilestoplaylist-menu-label"), lambda: self.OpenAddFilesToPlaylistDialog()) From 1db116d69d004133cceded2ecd640730d205b640 Mon Sep 17 00:00:00 2001 From: albertosottile Date: Sat, 3 Mar 2018 15:08:49 +0100 Subject: [PATCH 5/5] Correct Travis script to explicitely install python2 --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index accff29..84377f7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,13 +10,14 @@ script: before_install: - brew update -- brew install python +- brew install python@2 - brew tap cartr/qt4 - brew tap-pin cartr/qt4 - brew install pyside install: #- export PATH=/usr/local/bin:$PATH +- export PATH="/usr/local/opt/python@2/bin:$PATH" - export QT_PREFERRED_BINDING="PySide" - pip2 install twisted appnope pyobjc py2app