Re-base action_windows to 1.6.9 (#451)
* Create pythonpackage.yml * Update pythonpackage.yml * Update pythonpackage.yml * Update pythonpackage.yml * Update pythonpackage.yml * Update pythonpackage.yml * Update pythonpackage.yml * Update pythonpackage.yml * Update pythonpackage.yml * Update pythonpackage.yml * Update pythonpackage.yml * Update pythonpackage.yml * Update pythonpackage.yml * Update pythonpackage.yml * Update pythonpackage.yml * Do not show playback speed change notifications in OSD * Upbuild and remove debug message * Strip quotation marks from per-player arguments (#226) * Delete unmaintained changelog. Removing old and unmaintained changelog file. * Add more MPC-HC paths (#398) * Migrate from AppVeyor to GitHub Actions (#399) * Disable AppVeyor * Actions: disable other jobs * Actions: implement windows job * Use requirements * Typo in version parser * Replace type nul for PowerShell * Change Python version to 3.7 * buildPy2exe: exclude tcl and tkinter * buildPy2exe: rename zip archive to include extension * Actions for Windows: build on Python 3.8 * Re-enable build flow for other platforms * Remove AppVeyor configuration file * Add manpages courtesy of Bruno Kleinert #387 * Install the manpages. * Separate debian package artifacts Make it so that server and full packages are separate artifacts in CI rather than single zip containing both. * Fix server deb deployment name in CI workflow * Fix package filename for debs * Update mpv json ipc vendor code Update to version 1.1.13 to hopefully address #322 fully. * Update setup.py for vendor code of mpv jsonipc * Build AppImage on Ubuntu 18.04 Temporary workaround for AppImage built on Ubuntu 20.04 crashing with segmentation fault. #401 * Update python_mpv_jsonipc to 1.1.13 keeping our changes * Remove the AppVeyor badge as we stopped using it. * Improve playlist advancement for VLC and mpv (#334) (#397) * Advance playlist on end of file in mpv and VLC * Update duration for streams to fix playlist advancement (#334) * Add notice for Python in third party collection file (#404) * Add notice for Python in third party collection file * Convert third party notices file to plain text * Adapt codebase to third party notices format change * Mark as beta 1 (release 97) * Mark as 1.6.8 final (build 98) * Update pt_BR translation, fix typo (#422) * Bundle libgthread-2.0.so.0 into AppImage * add libxcb manually * Add missing libxcb-util to build environment * Enable GitHub Actions on pull requests * Bundle libxcb1 into AppImage to fix #380 * Send 32-bit/64-bit context when updating * Upver to 1.6.9 release 99 * Remove references to IRC (#430) * Add reference to GitHub discussions * Update issue templates * Revert "Merge branch 'master' into master" This reverts commit 173007e9b17c3cf7d658e12f1220bb1a3af743e6, reversing changes made to 6105da870a4560c47ee54d7de21f2e1ccec1bcef. Co-authored-by: Daniel Wróbel <wrobel.dan@gmail.com> Co-authored-by: Alberto Sottile <alby128@gmail.com> Co-authored-by: Daniel Wróbel <1662391+daniel-123@users.noreply.github.com> Co-authored-by: Atílio Antônio <atiliodadalto@hotmail.com> Co-authored-by: Teoh Han Hui <teohhanhui@gmail.com> Co-authored-by: Alberto Sottile <asottile@gmail.com> Co-authored-by: Assistant <assistant.moetron@gmail.com>
This commit is contained in:
parent
e47e600a4a
commit
eafd4b3ad0
32
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
32
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
---
|
||||||
|
name: Bug report
|
||||||
|
about: Create a report to help us improve
|
||||||
|
title: ''
|
||||||
|
labels: bug / problem
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Describe the bug**
|
||||||
|
A clear and concise description of what the bug is.
|
||||||
|
|
||||||
|
**To Reproduce**
|
||||||
|
Steps to reproduce the behavior:
|
||||||
|
1. Go to '...'
|
||||||
|
2. Click on '....'
|
||||||
|
3. Scroll down to '....'
|
||||||
|
4. See error
|
||||||
|
|
||||||
|
**Expected behavior**
|
||||||
|
A clear and concise description of what you expected to happen.
|
||||||
|
|
||||||
|
**Screenshots**
|
||||||
|
If applicable, add screenshots to help explain your problem.
|
||||||
|
|
||||||
|
**Version and platform:**
|
||||||
|
- OS: [e.g. Windows 10 or macOS 10.15]
|
||||||
|
- Syncplay version and build type: [e.g. Syncplay 1.6.9 portable]
|
||||||
|
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context about the problem here.
|
||||||
21
.github/workflows/build.yml
vendored
21
.github/workflows/build.yml
vendored
@ -1,5 +1,5 @@
|
|||||||
name: Build
|
name: Build
|
||||||
on: push
|
on: [push, pull_request]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
windows:
|
windows:
|
||||||
@ -124,14 +124,18 @@ jobs:
|
|||||||
|
|
||||||
appimage:
|
appimage:
|
||||||
name: Build AppImage
|
name: Build AppImage
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-18.04
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get install libxkbcommon-x11-0
|
sudo apt-get install --no-install-recommends \
|
||||||
|
libglib2.0-0 \
|
||||||
|
libxkbcommon-x11-0 \
|
||||||
|
libxcb1 \
|
||||||
|
;
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
run: ci/appimage-script.sh
|
run: ci/appimage-script.sh
|
||||||
@ -178,9 +182,16 @@ jobs:
|
|||||||
mv /tmp/syncplay-server.deb dist_actions/syncplay-server_${VER}.deb
|
mv /tmp/syncplay-server.deb dist_actions/syncplay-server_${VER}.deb
|
||||||
ls -al dist_actions
|
ls -al dist_actions
|
||||||
|
|
||||||
- name: Deploy
|
- name: Deploy full deb
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
name: syncplay.deb
|
name: syncplay.deb
|
||||||
path: |
|
path: |
|
||||||
dist_actions/syncplay*.deb
|
dist_actions/syncplay_*.deb
|
||||||
|
|
||||||
|
- name: Deploy server deb
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: syncplay-server.deb
|
||||||
|
path: |
|
||||||
|
dist_actions/syncplay-server_*.deb
|
||||||
|
|||||||
12
GNUmakefile
12
GNUmakefile
@ -39,6 +39,7 @@ common:
|
|||||||
-mkdir -p $(APP_SHORTCUT_PATH)
|
-mkdir -p $(APP_SHORTCUT_PATH)
|
||||||
-mkdir -p $(SHARE_PATH)/pixmaps/
|
-mkdir -p $(SHARE_PATH)/pixmaps/
|
||||||
-mkdir -p $(SHARE_PATH)/icons/
|
-mkdir -p $(SHARE_PATH)/icons/
|
||||||
|
-mkdir -p $(SHARE_PATH)/man/man1/
|
||||||
cp -r syncplay $(LIB_PATH)/syncplay/
|
cp -r syncplay $(LIB_PATH)/syncplay/
|
||||||
chmod 755 $(LIB_PATH)/syncplay/
|
chmod 755 $(LIB_PATH)/syncplay/
|
||||||
cp -r syncplay/resources/hicolor $(SHARE_PATH)/icons/
|
cp -r syncplay/resources/hicolor $(SHARE_PATH)/icons/
|
||||||
@ -51,6 +52,7 @@ u-common:
|
|||||||
-rm -rf $(LIB_PATH)/syncplay
|
-rm -rf $(LIB_PATH)/syncplay
|
||||||
-rm $(SHARE_PATH)/icons/hicolor/*/apps/syncplay.png
|
-rm $(SHARE_PATH)/icons/hicolor/*/apps/syncplay.png
|
||||||
-rm $(SHARE_PATH)/pixmaps/syncplay.png
|
-rm $(SHARE_PATH)/pixmaps/syncplay.png
|
||||||
|
-rm $(SHARE_PATH)/man/man1/syncplay.1.gz
|
||||||
|
|
||||||
client:
|
client:
|
||||||
-mkdir -p $(BIN_PATH)
|
-mkdir -p $(BIN_PATH)
|
||||||
@ -59,6 +61,7 @@ client:
|
|||||||
chmod 755 $(BIN_PATH)/syncplay
|
chmod 755 $(BIN_PATH)/syncplay
|
||||||
cp syncplayClient.py $(LIB_PATH)/syncplay/
|
cp syncplayClient.py $(LIB_PATH)/syncplay/
|
||||||
cp syncplay/resources/syncplay.desktop $(APP_SHORTCUT_PATH)/
|
cp syncplay/resources/syncplay.desktop $(APP_SHORTCUT_PATH)/
|
||||||
|
gzip docs/syncplay.1 --stdout > $(SHARE_PATH)/man/man1/syncplay.1.gz
|
||||||
|
|
||||||
ifeq ($(SINGLE_USER),false)
|
ifeq ($(SINGLE_USER),false)
|
||||||
chmod 755 $(APP_SHORTCUT_PATH)/syncplay.desktop
|
chmod 755 $(APP_SHORTCUT_PATH)/syncplay.desktop
|
||||||
@ -70,6 +73,7 @@ u-client:
|
|||||||
-rm ${DESTDIR}$(VLC_LIB_PATH)/vlc/lua/intf/syncplay.lua
|
-rm ${DESTDIR}$(VLC_LIB_PATH)/vlc/lua/intf/syncplay.lua
|
||||||
-rm ${DESTDIR}$(VLC_LIB_PATH64)/vlc/lua/intf/syncplay.lua
|
-rm ${DESTDIR}$(VLC_LIB_PATH64)/vlc/lua/intf/syncplay.lua
|
||||||
-rm $(APP_SHORTCUT_PATH)/syncplay.desktop
|
-rm $(APP_SHORTCUT_PATH)/syncplay.desktop
|
||||||
|
-rm $(SHARE_PATH)/man/man1/syncplay.1.gz
|
||||||
|
|
||||||
server:
|
server:
|
||||||
-mkdir -p $(BIN_PATH)
|
-mkdir -p $(BIN_PATH)
|
||||||
@ -78,6 +82,7 @@ server:
|
|||||||
chmod 755 $(BIN_PATH)/syncplay-server
|
chmod 755 $(BIN_PATH)/syncplay-server
|
||||||
cp syncplayServer.py $(LIB_PATH)/syncplay/
|
cp syncplayServer.py $(LIB_PATH)/syncplay/
|
||||||
cp syncplay/resources/syncplay-server.desktop $(APP_SHORTCUT_PATH)/
|
cp syncplay/resources/syncplay-server.desktop $(APP_SHORTCUT_PATH)/
|
||||||
|
gzip docs/syncplay-server.1 --stdout > $(SHARE_PATH)/man/man1/syncplay-server.1.gz
|
||||||
|
|
||||||
ifeq ($(SINGLE_USER),false)
|
ifeq ($(SINGLE_USER),false)
|
||||||
chmod 755 $(APP_SHORTCUT_PATH)/syncplay-server.desktop
|
chmod 755 $(APP_SHORTCUT_PATH)/syncplay-server.desktop
|
||||||
@ -87,7 +92,8 @@ u-server:
|
|||||||
-rm $(BIN_PATH)/syncplay-server
|
-rm $(BIN_PATH)/syncplay-server
|
||||||
-rm $(LIB_PATH)/syncplay/syncplayServer.py
|
-rm $(LIB_PATH)/syncplay/syncplayServer.py
|
||||||
-rm $(APP_SHORTCUT_PATH)/syncplay-server.desktop
|
-rm $(APP_SHORTCUT_PATH)/syncplay-server.desktop
|
||||||
|
-rm $(SHARE_PATH)/man/man1/syncplay-server.1.gz
|
||||||
|
|
||||||
warnings:
|
warnings:
|
||||||
ifeq ($(SINGLE_USER),true)
|
ifeq ($(SINGLE_USER),true)
|
||||||
@echo -e "\n**********\n**********\n \nRemeber to add ${HOME}/.local/bin to your \$$PATH with 'echo \"export PATH=\$$PATH:${HOME}/.local/bin\" >> ${HOME}/.profile' \nThis will take effect after you logoff.\n \n**********\n**********\n"
|
@echo -e "\n**********\n**********\n \nRemeber to add ${HOME}/.local/bin to your \$$PATH with 'echo \"export PATH=\$$PATH:${HOME}/.local/bin\" >> ${HOME}/.profile' \nThis will take effect after you logoff.\n \n**********\n**********\n"
|
||||||
@ -95,12 +101,12 @@ endif
|
|||||||
|
|
||||||
install-client: common client warnings
|
install-client: common client warnings
|
||||||
|
|
||||||
uninstall-client: u-client u-common
|
uninstall-client: u-client u-common
|
||||||
|
|
||||||
install-server: common server warnings
|
install-server: common server warnings
|
||||||
|
|
||||||
uninstall-server: u-server u-common
|
uninstall-server: u-server u-common
|
||||||
|
|
||||||
install: common client server warnings
|
install: common client server warnings
|
||||||
|
|
||||||
uninstall: u-client u-server u-common
|
uninstall: u-client u-server u-common
|
||||||
|
|||||||
@ -4,4 +4,5 @@ include syncplay/resources/*.png
|
|||||||
include syncplay/resources/*.mng
|
include syncplay/resources/*.mng
|
||||||
include syncplay/resources/*.lua
|
include syncplay/resources/*.lua
|
||||||
include syncplay/resources/*.rtf
|
include syncplay/resources/*.rtf
|
||||||
|
include syncplay/resources/*.txt
|
||||||
include syncplay/resources/lua/intf/*.lua
|
include syncplay/resources/lua/intf/*.lua
|
||||||
|
|||||||
@ -23,7 +23,6 @@
|
|||||||
|
|
||||||
# Syncplay
|
# Syncplay
|
||||||

|

|
||||||
[](https://ci.appveyor.com/project/Et0h/syncplay/branch/master)
|
|
||||||
|
|
||||||
Solution to synchronize video playback across multiple instances of mpv, VLC, MPC-HC, MPC-BE and mplayer2 over the Internet.
|
Solution to synchronize video playback across multiple instances of mpv, VLC, MPC-HC, MPC-BE and mplayer2 over the Internet.
|
||||||
|
|
||||||
@ -45,7 +44,7 @@ Syncplay is not a file sharing service.
|
|||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
This project, the Syncplay released binaries, and all the files included in this repository unless stated otherwise in the header of the file, are licensed under the [Apache License, version 2.0](https://www.apache.org/licenses/LICENSE-2.0.html). A copy of this license is included in the LICENSE file of this repository. Licenses and attribution notices for third-party media are set out in [third-party-notices.rtf](syncplay/resources/third-party-notices.rtf).
|
This project, the Syncplay released binaries, and all the files included in this repository unless stated otherwise in the header of the file, are licensed under the [Apache License, version 2.0](https://www.apache.org/licenses/LICENSE-2.0.html). A copy of this license is included in the LICENSE file of this repository. Licenses and attribution notices for third-party media are set out in [third-party-notices.txt](syncplay/resources/third-party-notices.txt).
|
||||||
|
|
||||||
## Authors
|
## Authors
|
||||||
* *Initial concept and core internals developer* - Uriziel.
|
* *Initial concept and core internals developer* - Uriziel.
|
||||||
|
|||||||
@ -11,7 +11,7 @@ import syncplay
|
|||||||
|
|
||||||
APP = ['syncplayClient.py']
|
APP = ['syncplayClient.py']
|
||||||
DATA_FILES = [
|
DATA_FILES = [
|
||||||
('resources', glob('syncplay/resources/*.png') + glob('syncplay/resources/*.rtf') + glob('syncplay/resources/*.lua')),
|
('resources', glob('syncplay/resources/*.png') + glob('syncplay/resources/*.rtf') + glob('syncplay/resources/*.txt') + glob('syncplay/resources/*.lua')),
|
||||||
('resources/lua/intf', glob('syncplay/resources/lua/intf/*.lua'))
|
('resources/lua/intf', glob('syncplay/resources/lua/intf/*.lua'))
|
||||||
]
|
]
|
||||||
OPTIONS = {
|
OPTIONS = {
|
||||||
|
|||||||
@ -726,7 +726,7 @@ guiIcons = glob('syncplay/resources/*.ico') + glob('syncplay/resources/*.png') +
|
|||||||
resources = [
|
resources = [
|
||||||
"syncplay/resources/syncplayintf.lua",
|
"syncplay/resources/syncplayintf.lua",
|
||||||
"syncplay/resources/license.rtf",
|
"syncplay/resources/license.rtf",
|
||||||
"syncplay/resources/third-party-notices.rtf"
|
"syncplay/resources/third-party-notices.txt"
|
||||||
]
|
]
|
||||||
resources.extend(guiIcons)
|
resources.extend(guiIcons)
|
||||||
intf_resources = ["syncplay/resources/lua/intf/syncplay.lua"]
|
intf_resources = ["syncplay/resources/lua/intf/syncplay.lua"]
|
||||||
|
|||||||
@ -109,6 +109,10 @@ export OUTPUT=Syncplay-$VERSION-x86_64.AppImage
|
|||||||
./linuxdeploy-x86_64.AppImage --appdir AppDir --plugin conda \
|
./linuxdeploy-x86_64.AppImage --appdir AppDir --plugin conda \
|
||||||
-e $(which readelf) \
|
-e $(which readelf) \
|
||||||
-i "$REPO_ROOT"/syncplay/resources/syncplay.png -d pl.syncplay.syncplay.desktop \
|
-i "$REPO_ROOT"/syncplay/resources/syncplay.png -d pl.syncplay.syncplay.desktop \
|
||||||
--output appimage --custom-apprun AppRun.sh -l /usr/lib/x86_64-linux-gnu/libxkbcommon-x11.so.0
|
--output appimage --custom-apprun AppRun.sh \
|
||||||
|
-l /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0 \
|
||||||
|
-l /usr/lib/x86_64-linux-gnu/libxkbcommon-x11.so.0 \
|
||||||
|
-l /usr/lib/x86_64-linux-gnu/libxcb.so.1 \
|
||||||
|
;
|
||||||
|
|
||||||
mv Syncplay*.AppImage "$OLD_CWD"
|
mv Syncplay*.AppImage "$OLD_CWD"
|
||||||
|
|||||||
98
docs/syncplay-server.1
Normal file
98
docs/syncplay-server.1
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
.\" Hey, EMACS: -*- nroff -*-
|
||||||
|
.\" (C) Copyright 2021 Bruno Kleinert <fuddl@debian.org>,
|
||||||
|
.\"
|
||||||
|
.\" First parameter, NAME, should be all caps
|
||||||
|
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
|
||||||
|
.\" other parameters are allowed: see man(7), man(1)
|
||||||
|
.TH "Syncplay Server" 1 "February 7 2021"
|
||||||
|
.\" Please adjust this date whenever revising the manpage.
|
||||||
|
.\"
|
||||||
|
.\" Some roff macros, for reference:
|
||||||
|
.\" .nh disable hyphenation
|
||||||
|
.\" .hy enable hyphenation
|
||||||
|
.\" .ad l left justify
|
||||||
|
.\" .ad b justify to both left and right margins
|
||||||
|
.\" .nf disable filling
|
||||||
|
.\" .fi enable filling
|
||||||
|
.\" .br insert line break
|
||||||
|
.\" .sp <n> insert n+1 empty lines
|
||||||
|
.\" for manpage-specific macros, see man(7)
|
||||||
|
.SH NAME
|
||||||
|
syncplay-server \- server to host syncplay rooms
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.B syncplay-server
|
||||||
|
.RI [ options ]
|
||||||
|
.RI [ file ]
|
||||||
|
.RI [ playeroptions ]
|
||||||
|
.SH DESCRIPTION
|
||||||
|
This manual page documents briefly the
|
||||||
|
.B syncplay-server
|
||||||
|
command.
|
||||||
|
.PP
|
||||||
|
.\" TeX users may be more comfortable with the \fB<whatever>\fP and
|
||||||
|
.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
|
||||||
|
.\" respectively.
|
||||||
|
\fBsyncplay-server\fP is a program that syncplay clients connect to and hosts
|
||||||
|
rooms.
|
||||||
|
|
||||||
|
To host rooms for viewers via internet, make sure the server can be accessed
|
||||||
|
from the internet, i.e., its listening port is not blocked by a NAT or a
|
||||||
|
firewall.
|
||||||
|
|
||||||
|
.SH OPTIONS
|
||||||
|
|
||||||
|
This program follows the usual GNU command line syntax, with long
|
||||||
|
options starting with two dashes (`-').
|
||||||
|
A summary of options is included below.
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.B \-h, \-\-help
|
||||||
|
Show summary of options.
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.B \-\-port [port]
|
||||||
|
TCP port to listen for connections.
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.B \-\-password [password]
|
||||||
|
Server password.
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.B \-\-isolate\-rooms
|
||||||
|
Whether rooms should be isolated.
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.B \-\-disable\-ready
|
||||||
|
Disable readiness feature.
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.B \-\-disable\-chat
|
||||||
|
Disable the chat function.
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.B \-\-salt [salt]
|
||||||
|
Random string used to generate managed room passwords.
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.B \-\-motd\-file [file]
|
||||||
|
Path to a file from which motd (Message Of The Day) will be read.
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.B \-\-max\-chat\-message\-length [maxChatMessageLength]
|
||||||
|
Maximum number of characters in one chat message (default is 150).
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.B \-\-max\-username\-length [maxUsernameLength]
|
||||||
|
Maximum number of characters in a username (default is 150).
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.B \-\-stats\-db\-file [file]
|
||||||
|
Enable server statistics using the SQLite database file.
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.B \-\-tls [path]
|
||||||
|
Enable TLS connections using the certificate files in path.
|
||||||
|
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR syncplay (1).
|
||||||
|
|
||||||
115
docs/syncplay.1
Normal file
115
docs/syncplay.1
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
.\" Hey, EMACS: -*- nroff -*-
|
||||||
|
.\" (C) Copyright 2021 Bruno Kleinert <fuddl@debian.org>,
|
||||||
|
.\"
|
||||||
|
.\" First parameter, NAME, should be all caps
|
||||||
|
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
|
||||||
|
.\" other parameters are allowed: see man(7), man(1)
|
||||||
|
.TH Syncplay 1 "February 7 2021"
|
||||||
|
.\" Please adjust this date whenever revising the manpage.
|
||||||
|
.\"
|
||||||
|
.\" Some roff macros, for reference:
|
||||||
|
.\" .nh disable hyphenation
|
||||||
|
.\" .hy enable hyphenation
|
||||||
|
.\" .ad l left justify
|
||||||
|
.\" .ad b justify to both left and right margins
|
||||||
|
.\" .nf disable filling
|
||||||
|
.\" .fi enable filling
|
||||||
|
.\" .br insert line break
|
||||||
|
.\" .sp <n> insert n+1 empty lines
|
||||||
|
.\" for manpage-specific macros, see man(7)
|
||||||
|
.SH NAME
|
||||||
|
syncplay \- synchronize playback of various video players via internet
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.B syncplay
|
||||||
|
.RI [ options ]
|
||||||
|
.RI [ file ]
|
||||||
|
.RI [ playeroptions ]
|
||||||
|
.SH DESCRIPTION
|
||||||
|
This manual page documents briefly the
|
||||||
|
.B syncplay
|
||||||
|
command.
|
||||||
|
.PP
|
||||||
|
.\" TeX users may be more comfortable with the \fB<whatever>\fP and
|
||||||
|
.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
|
||||||
|
.\" respectively.
|
||||||
|
\fBsyncplay\fP is a program that allows you to watch movies with friends or
|
||||||
|
family at different places synchronized via the internet.
|
||||||
|
|
||||||
|
When a viewer pauses/continues playback or seeks within their media player this
|
||||||
|
will be replicated across all media players connected to the same server in the
|
||||||
|
same viewing session. A chat function is included so viewers can discuss the
|
||||||
|
movie while watching it. To improve the communication experience for viewers,
|
||||||
|
the Syncplay developers and this package suggest to use additional VoIP
|
||||||
|
(package mumble) or video phone (package jami) software.
|
||||||
|
|
||||||
|
Technically, it synchronizes the position and play states of multiple mpv, VLC,
|
||||||
|
MPC-HC and MPC-BEmedia player instances so viewers' players present the same
|
||||||
|
movie at the same time.
|
||||||
|
|
||||||
|
There are known synchronization issues with VLC. If you experience such problems
|
||||||
|
use MPV instead.
|
||||||
|
|
||||||
|
.SH OPTIONS
|
||||||
|
|
||||||
|
This program follows the usual GNU command line syntax, with long
|
||||||
|
options starting with two dashes (`-').
|
||||||
|
A summary of options is included below.
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.B \-h, \-\-help
|
||||||
|
Show summary of options.
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.B \-\-no\-gui
|
||||||
|
Do not show the graphical user interface.
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.B \-a hostname, \-\-host hostname
|
||||||
|
Address of the server to connect to.
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.B \-n username, \-\-name username
|
||||||
|
User name to use.
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.B \-d, \-\-debug
|
||||||
|
Enable debug mode.
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.B \-g, \-\-force\-gui\-prompt
|
||||||
|
Force configuration window to appear when Syncplay starts.
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.B \-\-no\-store
|
||||||
|
Do not store configuration settings in .syncplay.
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.B \-r [room], \-\-room [room]
|
||||||
|
Default room to use.
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.B \-p [password], \-\-password [password]
|
||||||
|
The password for the server.
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.B \-\-player\-path path
|
||||||
|
Path to the player binary.
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.B \-\-language language
|
||||||
|
Language of Syncplay messages. Valid values are de/en/ru/it/es/pt_BR/pt_PT/tr.
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.B \-\-clear\-gui\-data
|
||||||
|
Resets path and window state GUI data stored as QSettings.
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.B \-v, \-\-version
|
||||||
|
Show version of program.
|
||||||
|
|
||||||
|
.TP
|
||||||
|
.B \-\-load\-playlist\-from\-file file
|
||||||
|
Loads the playlist from file. One entry per line.
|
||||||
|
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR syncplay-server (1).
|
||||||
@ -1,5 +1,5 @@
|
|||||||
version = '1.6.8'
|
version = '1.6.9'
|
||||||
revision = ' development'
|
revision = ''
|
||||||
milestone = 'Yoitsu'
|
milestone = 'Yoitsu'
|
||||||
release_number = '95'
|
release_number = '99'
|
||||||
projectURL = 'https://syncplay.pl/'
|
projectURL = 'https://syncplay.pl/'
|
||||||
|
|||||||
@ -39,7 +39,7 @@ except:
|
|||||||
from syncplay import utils, constants, version
|
from syncplay import utils, constants, version
|
||||||
from syncplay.constants import PRIVACY_SENDHASHED_MODE, PRIVACY_DONTSEND_MODE, \
|
from syncplay.constants import PRIVACY_SENDHASHED_MODE, PRIVACY_DONTSEND_MODE, \
|
||||||
PRIVACY_HIDDENFILENAME
|
PRIVACY_HIDDENFILENAME
|
||||||
from syncplay.messages import getMissingStrings, getMessage
|
from syncplay.messages import getMissingStrings, getMessage, isNoOSDMessage
|
||||||
from syncplay.protocols import SyncClientProtocol
|
from syncplay.protocols import SyncClientProtocol
|
||||||
from syncplay.utils import isMacOS
|
from syncplay.utils import isMacOS
|
||||||
|
|
||||||
@ -500,6 +500,11 @@ class SyncplayClient(object):
|
|||||||
return True
|
return True
|
||||||
return self._globalPaused
|
return self._globalPaused
|
||||||
|
|
||||||
|
def eofReportedByPlayer(self):
|
||||||
|
if self.playlist.notJustChangedPlaylist() and self.userlist.currentUser.file:
|
||||||
|
self.ui.showDebugMessage("Fixing file duration to allow for playlist advancement")
|
||||||
|
self.userlist.currentUser.file["duration"] = self._playerPosition
|
||||||
|
|
||||||
def updateFile(self, filename, duration, path):
|
def updateFile(self, filename, duration, path):
|
||||||
self.lastUpdatedFileTime = time.time()
|
self.lastUpdatedFileTime = time.time()
|
||||||
newPath = ""
|
newPath = ""
|
||||||
@ -1054,8 +1059,16 @@ class SyncplayClient(object):
|
|||||||
|
|
||||||
def checkForUpdate(self, userInitiated):
|
def checkForUpdate(self, userInitiated):
|
||||||
try:
|
try:
|
||||||
import urllib.request, urllib.parse, urllib.error, syncplay, sys, json
|
import urllib.request, urllib.parse, urllib.error, syncplay, sys, json, platform
|
||||||
params = urllib.parse.urlencode({'version': syncplay.version, 'milestone': syncplay.milestone, 'release_number': syncplay.release_number, 'language': syncplay.messages.messages["CURRENT"], 'platform': sys.platform, 'userInitiated': userInitiated})
|
try:
|
||||||
|
architecture = platform.architecture()[0]
|
||||||
|
except:
|
||||||
|
architecture = "Unknown"
|
||||||
|
try:
|
||||||
|
machine = platform.machine()
|
||||||
|
except:
|
||||||
|
machine = "Unknown"
|
||||||
|
params = urllib.parse.urlencode({'version': syncplay.version, 'milestone': syncplay.milestone, 'release_number': syncplay.release_number, 'language': syncplay.messages.messages["CURRENT"], 'platform': sys.platform, 'architecture': architecture, 'machine': machine, 'userInitiated': userInitiated})
|
||||||
if isMacOS():
|
if isMacOS():
|
||||||
import requests
|
import requests
|
||||||
response = requests.get(constants.SYNCPLAY_UPDATE_URL.format(params))
|
response = requests.get(constants.SYNCPLAY_UPDATE_URL.format(params))
|
||||||
@ -1601,6 +1614,9 @@ class UiManager(object):
|
|||||||
self.__ui.showUserList(currentUser, rooms)
|
self.__ui.showUserList(currentUser, rooms)
|
||||||
|
|
||||||
def showOSDMessage(self, message, duration=constants.OSD_DURATION, OSDType=constants.OSD_NOTIFICATION, mood=constants.MESSAGE_NEUTRAL):
|
def showOSDMessage(self, message, duration=constants.OSD_DURATION, OSDType=constants.OSD_NOTIFICATION, mood=constants.MESSAGE_NEUTRAL):
|
||||||
|
if(isNoOSDMessage(message)):
|
||||||
|
return
|
||||||
|
|
||||||
autoplayConditionsMet = self._client.autoplayConditionsMet()
|
autoplayConditionsMet = self._client.autoplayConditionsMet()
|
||||||
if OSDType == constants.OSD_ALERT and not constants.SHOW_OSD_WARNINGS and not self._client.autoplayTimerIsRunning():
|
if OSDType == constants.OSD_ALERT and not constants.SHOW_OSD_WARNINGS and not self._client.autoplayTimerIsRunning():
|
||||||
return
|
return
|
||||||
|
|||||||
@ -29,7 +29,7 @@ MPLAYER_OSD_LEVEL = 1
|
|||||||
UI_TIME_FORMAT = "[%X] "
|
UI_TIME_FORMAT = "[%X] "
|
||||||
CONFIG_NAMES = [".syncplay", "syncplay.ini"] # Syncplay searches first to last
|
CONFIG_NAMES = [".syncplay", "syncplay.ini"] # Syncplay searches first to last
|
||||||
DEFAULT_CONFIG_NAME = "syncplay.ini"
|
DEFAULT_CONFIG_NAME = "syncplay.ini"
|
||||||
RECENT_CLIENT_THRESHOLD = "1.6.7" # This and higher considered 'recent' clients (no warnings)
|
RECENT_CLIENT_THRESHOLD = "1.6.8" # This and higher considered 'recent' clients (no warnings)
|
||||||
MUSIC_FORMATS = [".mp3", ".m4a", ".m4p", ".wav", ".aiff", ".r", ".ogg", ".flac"] # ALL LOWER CASE!
|
MUSIC_FORMATS = [".mp3", ".m4a", ".m4p", ".wav", ".aiff", ".r", ".ogg", ".flac"] # ALL LOWER CASE!
|
||||||
WARN_OLD_CLIENTS = True # Use MOTD to inform old clients to upgrade
|
WARN_OLD_CLIENTS = True # Use MOTD to inform old clients to upgrade
|
||||||
LIST_RELATIVE_CONFIGS = True # Print list of relative configs loaded
|
LIST_RELATIVE_CONFIGS = True # Print list of relative configs loaded
|
||||||
@ -131,7 +131,7 @@ COMMANDS_DELETE = ['delete', 'd', 'qd']
|
|||||||
MPC_MIN_VER = "1.6.4"
|
MPC_MIN_VER = "1.6.4"
|
||||||
MPC_BE_MIN_VER = "1.5.2.3123"
|
MPC_BE_MIN_VER = "1.5.2.3123"
|
||||||
VLC_MIN_VERSION = "2.2.1"
|
VLC_MIN_VERSION = "2.2.1"
|
||||||
VLC_INTERFACE_VERSION = "0.3.6"
|
VLC_INTERFACE_VERSION = "0.3.7"
|
||||||
VLC_LATENCY_ERROR_THRESHOLD = 2.0
|
VLC_LATENCY_ERROR_THRESHOLD = 2.0
|
||||||
MPV_UNRESPONSIVE_THRESHOLD = 60.0
|
MPV_UNRESPONSIVE_THRESHOLD = 60.0
|
||||||
CONTROLLED_ROOMS_MIN_VERSION = "1.3.0"
|
CONTROLLED_ROOMS_MIN_VERSION = "1.3.0"
|
||||||
@ -150,6 +150,8 @@ MPC_PATHS = [
|
|||||||
r"c:\program files (x86)\media player classic - home cinema\mpc-hc.exe",
|
r"c:\program files (x86)\media player classic - home cinema\mpc-hc.exe",
|
||||||
r"c:\program files (x86)\k-lite codec pack\media player classic\mpc-hc.exe",
|
r"c:\program files (x86)\k-lite codec pack\media player classic\mpc-hc.exe",
|
||||||
r"c:\program files\k-lite codec pack\media Player classic\mpc-hc.exe",
|
r"c:\program files\k-lite codec pack\media Player classic\mpc-hc.exe",
|
||||||
|
r"C:\program files\k-lite codec pack\mpc-hc64\mpc-hc64.exe",
|
||||||
|
r"C:\program files (x86)\k-lite codec pack\mpc-hc64\mpc-hc64.exe",
|
||||||
r"c:\program files (x86)\combined community codec pack\mpc\mpc-hc.exe",
|
r"c:\program files (x86)\combined community codec pack\mpc\mpc-hc.exe",
|
||||||
r"c:\program files\combined community codec pack\mpc\mpc-hc.exe",
|
r"c:\program files\combined community codec pack\mpc\mpc-hc.exe",
|
||||||
r"c:\program files\mpc homecinema (x64)\mpc-hc64.exe",
|
r"c:\program files\mpc homecinema (x64)\mpc-hc64.exe",
|
||||||
@ -287,7 +289,7 @@ VLC_SLAVE_EXTRA_ARGS = getValueForOS({
|
|||||||
MPV_SUPERSEDE_IF_DUPLICATE_COMMANDS = ["set_property time-pos ", "loadfile "]
|
MPV_SUPERSEDE_IF_DUPLICATE_COMMANDS = ["set_property time-pos ", "loadfile "]
|
||||||
MPV_REMOVE_BOTH_IF_DUPLICATE_COMMANDS = ["cycle pause"]
|
MPV_REMOVE_BOTH_IF_DUPLICATE_COMMANDS = ["cycle pause"]
|
||||||
MPLAYER_ANSWER_REGEX = "^ANS_([a-zA-Z_-]+)=(.+)$|^(Exiting)\.\.\. \((.+)\)$"
|
MPLAYER_ANSWER_REGEX = "^ANS_([a-zA-Z_-]+)=(.+)$|^(Exiting)\.\.\. \((.+)\)$"
|
||||||
VLC_ANSWER_REGEX = r"(?:^(?P<command>[a-zA-Z_]+)(?:\: )?(?P<argument>.*))"
|
VLC_ANSWER_REGEX = r"(?:^(?P<command>[a-zA-Z_-]+)(?:\: )?(?P<argument>.*))"
|
||||||
UI_COMMAND_REGEX = r"^(?P<command>[^\ ]+)(?:\ (?P<parameter>.+))?"
|
UI_COMMAND_REGEX = r"^(?P<command>[^\ ]+)(?:\ (?P<parameter>.+))?"
|
||||||
UI_OFFSET_REGEX = r"^(?:o|offset)\ ?(?P<sign>[/+-])?(?P<time>\d{1,9}(?:[^\d\.](?:\d{1,9})){0,2}(?:\.(?:\d{1,3}))?)$"
|
UI_OFFSET_REGEX = r"^(?:o|offset)\ ?(?P<sign>[/+-])?(?P<time>\d{1,9}(?:[^\d\.](?:\d{1,9})){0,2}(?:\.(?:\d{1,3}))?)$"
|
||||||
UI_SEEK_REGEX = r"^(?:s|seek)?\ ?(?P<sign>[+-])?(?P<time>\d{1,4}(?:[^\d\.](?:\d{1,6})){0,2}(?:\.(?:\d{1,3}))?)$"
|
UI_SEEK_REGEX = r"^(?:s|seek)?\ ?(?P<sign>[+-])?(?P<time>\d{1,4}(?:[^\d\.](?:\d{1,6})){0,2}(?:\.(?:\d{1,3}))?)$"
|
||||||
|
|||||||
@ -9,6 +9,7 @@ from . import messages_es
|
|||||||
from . import messages_pt_BR
|
from . import messages_pt_BR
|
||||||
from . import messages_pt_PT
|
from . import messages_pt_PT
|
||||||
from . import messages_tr
|
from . import messages_tr
|
||||||
|
import re
|
||||||
|
|
||||||
messages = {
|
messages = {
|
||||||
"de": messages_de.de,
|
"de": messages_de.de,
|
||||||
@ -22,6 +23,10 @@ messages = {
|
|||||||
"CURRENT": None
|
"CURRENT": None
|
||||||
}
|
}
|
||||||
|
|
||||||
|
no_osd_message_list = [
|
||||||
|
"slowdown-notification",
|
||||||
|
"revert-notification",
|
||||||
|
]
|
||||||
|
|
||||||
def getLanguages():
|
def getLanguages():
|
||||||
langList = {}
|
langList = {}
|
||||||
@ -30,11 +35,17 @@ def getLanguages():
|
|||||||
langList[lang] = getMessage("LANGUAGE", lang)
|
langList[lang] = getMessage("LANGUAGE", lang)
|
||||||
return langList
|
return langList
|
||||||
|
|
||||||
|
def isNoOSDMessage(message):
|
||||||
|
for no_osd_message in no_osd_message_list:
|
||||||
|
regex = "^" + getMessage(no_osd_message).replace("{}", ".+") + "$"
|
||||||
|
regex_test = bool(re.match(regex, message))
|
||||||
|
if regex_test:
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
def setLanguage(lang):
|
def setLanguage(lang):
|
||||||
messages["CURRENT"] = lang
|
messages["CURRENT"] = lang
|
||||||
|
|
||||||
|
|
||||||
def getMissingStrings():
|
def getMissingStrings():
|
||||||
missingStrings = ""
|
missingStrings = ""
|
||||||
for lang in messages:
|
for lang in messages:
|
||||||
|
|||||||
@ -274,7 +274,7 @@ de = {
|
|||||||
"run-label": "Syncplay starten",
|
"run-label": "Syncplay starten",
|
||||||
"storeandrun-label": "Konfiguration speichern und Syncplay starten",
|
"storeandrun-label": "Konfiguration speichern und Syncplay starten",
|
||||||
|
|
||||||
"contact-label": "Du hast eine Idee, einen Bug gefunden oder möchtest Feedback geben? Sende eine E-Mail an <a href=\"mailto:dev@syncplay.pl\">dev@syncplay.pl</a>, chatte auf dem <a href=\"https://webchat.freenode.net/?channels=#syncplay\">#Syncplay IRC-Kanal</a> auf irc.freenode.net oder <a href=\"https://github.com/Uriziel/syncplay/issues\">öffne eine Fehlermeldung auf GitHub</a>. Außerdem findest du auf <a href=\"https://syncplay.pl/\">https://syncplay.pl/</a> weitere Informationen, Hilfestellungen und Updates. Chatnachrichten sind nicht verschlüsselt, also verwende Syncplay nicht, um sensible Daten zu verschicken.",
|
"contact-label": "Du hast eine Idee, einen Bug gefunden oder möchtest Feedback geben? Sende eine E-Mail an <a href=\"mailto:dev@syncplay.pl\">dev@syncplay.pl</a> oder <a href=\"https://github.com/Syncplay/syncplay/issues\">öffne eine Fehlermeldung auf GitHub</a> / <a href=\"https://github.com/Syncplay/syncplay/discussions\"><nobr>start a discussion</nobr></a> to make a suggestion or ask a question via GitHub,. Außerdem findest du auf <a href=\"https://syncplay.pl/\">https://syncplay.pl/</a> weitere Informationen, Hilfestellungen und Updates. Chatnachrichten sind nicht verschlüsselt, also verwende Syncplay nicht, um sensible Daten zu verschicken.", # TODO: Update translation
|
||||||
|
|
||||||
"joinroom-label": "Raum beitreten",
|
"joinroom-label": "Raum beitreten",
|
||||||
"joinroom-menu-label": "Raum beitreten {}", # TODO: Might want to fix this
|
"joinroom-menu-label": "Raum beitreten {}", # TODO: Might want to fix this
|
||||||
|
|||||||
@ -278,7 +278,7 @@ en = {
|
|||||||
"run-label": "Run Syncplay",
|
"run-label": "Run Syncplay",
|
||||||
"storeandrun-label": "Store configuration and run Syncplay",
|
"storeandrun-label": "Store configuration and run Syncplay",
|
||||||
|
|
||||||
"contact-label": "Feel free to e-mail <a href=\"mailto:dev@syncplay.pl\"><nobr>dev@syncplay.pl</nobr></a>, chat via the <a href=\"https://webchat.freenode.net/?channels=#syncplay\"><nobr>#Syncplay IRC channel</nobr></a> on irc.freenode.net, <a href=\"https://github.com/Uriziel/syncplay/issues\"><nobr>raise an issue</nobr></a> via GitHub, <a href=\"https://www.facebook.com/SyncplaySoftware\"><nobr>like us on Facebook</nobr></a>, <a href=\"https://twitter.com/Syncplay/\"><nobr>follow us on Twitter</nobr></a>, or visit <a href=\"https://syncplay.pl/\"><nobr>https://syncplay.pl/</nobr></a>. Do not use Syncplay to send sensitive information.",
|
"contact-label": "Feel free to e-mail <a href=\"mailto:dev@syncplay.pl\"><nobr>dev@syncplay.pl</nobr></a>, <a href=\"https://github.com/Syncplay/syncplay/issues\"><nobr>create an issue</nobr></a> to report a bug/problem via GitHub, <a href=\"https://github.com/Syncplay/syncplay/discussions\"><nobr>start a discussion</nobr></a> to make a suggestion or ask a question via GitHub, <a href=\"https://www.facebook.com/SyncplaySoftware\"><nobr>like us on Facebook</nobr></a>, <a href=\"https://twitter.com/Syncplay/\"><nobr>follow us on Twitter</nobr></a>, or visit <a href=\"https://syncplay.pl/\"><nobr>https://syncplay.pl/</nobr></a>. Do not use Syncplay to send sensitive information.",
|
||||||
|
|
||||||
"joinroom-label": "Join room",
|
"joinroom-label": "Join room",
|
||||||
"joinroom-menu-label": "Join room {}",
|
"joinroom-menu-label": "Join room {}",
|
||||||
|
|||||||
@ -277,7 +277,7 @@ es = {
|
|||||||
"run-label": "Ejecutar Syncplay",
|
"run-label": "Ejecutar Syncplay",
|
||||||
"storeandrun-label": "Almacenar la configuración y ejecutar Syncplay",
|
"storeandrun-label": "Almacenar la configuración y ejecutar Syncplay",
|
||||||
|
|
||||||
"contact-label": "No dudes en enviar un correo electrónico a <a href=\"mailto:dev@syncplay.pl\"><nobr>dev@syncplay.pl</nobr></a>, chatea a través del canal de IRC <a href=\"https://webchat.freenode.net/?channels=#syncplay\"><nobr>#Syncplay</nobr></a> en irc.freenode.net, <a href=\"https://github.com/Uriziel/syncplay/issues\"><nobr>reportar un problema</nobr></a> vía GitHub, <a href=\"https://www.facebook.com/SyncplaySoftware\"><nobr>danos \"me gusta\" en Facebook</nobr></a>, <a href=\"https://twitter.com/Syncplay/\"><nobr>síguenos en Twitter</nobr></a>, o visita <a href=\"https://syncplay.pl/\"><nobr>https://syncplay.pl/</nobr></a>. No utilices Syncplay para enviar información sensible.",
|
"contact-label": "No dudes en enviar un correo electrónico a <a href=\"mailto:dev@syncplay.pl\"><nobr>dev@syncplay.pl</nobr></a>, <a href=\"https://github.com/Syncplay/syncplay/issues\"><nobr>reportar un problema</nobr></a> vía GitHub / <a href=\"https://github.com/Syncplay/syncplay/discussions\"><nobr>start a discussion</nobr></a> to make a suggestion or ask a question via GitHub, <a href=\"https://www.facebook.com/SyncplaySoftware\"><nobr>danos \"me gusta\" en Facebook</nobr></a>, <a href=\"https://twitter.com/Syncplay/\"><nobr>síguenos en Twitter</nobr></a>, o visita <a href=\"https://syncplay.pl/\"><nobr>https://syncplay.pl/</nobr></a>. No utilices Syncplay para enviar información sensible.", # TODO: Update translation
|
||||||
|
|
||||||
"joinroom-label": "Unirse a la sala",
|
"joinroom-label": "Unirse a la sala",
|
||||||
"joinroom-menu-label": "Unirse a la sala {}",
|
"joinroom-menu-label": "Unirse a la sala {}",
|
||||||
|
|||||||
@ -277,7 +277,7 @@ it = {
|
|||||||
"run-label": "Avvia Syncplay",
|
"run-label": "Avvia Syncplay",
|
||||||
"storeandrun-label": "Salva la configurazione e avvia Syncplay",
|
"storeandrun-label": "Salva la configurazione e avvia Syncplay",
|
||||||
|
|
||||||
"contact-label": "Sentiti libero di inviare un'e-mail a <a href=\"mailto:dev@syncplay.pl\"><nobr>dev@syncplay.pl</nobr></a>, chattare tramite il <a href=\"https://webchat.freenode.net/?channels=#syncplay\"><nobr>canale IRC #Syncplay</nobr></a> su irc.freenode.net, <a href=\"https://github.com/Uriziel/syncplay/issues\"><nobr>segnalare un problema</nobr></a> su GitHub, <a href=\"https://www.facebook.com/SyncplaySoftware\"><nobr>lasciare un like sulla nostra pagina Facebook</nobr></a>, <a href=\"https://twitter.com/Syncplay/\"><nobr>seguirci su Twitter</nobr></a>, o visitare <a href=\"https://syncplay.pl/\"><nobr>https://syncplay.pl/</nobr></a>. Non usare Syncplay per inviare dati sensibili.",
|
"contact-label": "Sentiti libero di inviare un'e-mail a <a href=\"mailto:dev@syncplay.pl\"><nobr>dev@syncplay.pl</nobr></a>, <a href=\"https://github.com/Syncplay/syncplay/issues\"><nobr>segnalare un problema</nobr></a> su GitHub / <a href=\"https://github.com/Syncplay/syncplay/discussions\"><nobr>start a discussion</nobr></a> to make a suggestion or ask a question via GitHub,, <a href=\"https://www.facebook.com/SyncplaySoftware\"><nobr>lasciare un like sulla nostra pagina Facebook</nobr></a>, <a href=\"https://twitter.com/Syncplay/\"><nobr>seguirci su Twitter</nobr></a>, o visitare <a href=\"https://syncplay.pl/\"><nobr>https://syncplay.pl/</nobr></a>. Non usare Syncplay per inviare dati sensibili.", # TODO: Update translation
|
||||||
|
|
||||||
"joinroom-label": "Entra nella stanza",
|
"joinroom-label": "Entra nella stanza",
|
||||||
"joinroom-menu-label": "Entra nella stanza {}",
|
"joinroom-menu-label": "Entra nella stanza {}",
|
||||||
|
|||||||
@ -47,7 +47,8 @@ pt_BR = {
|
|||||||
"identifying-as-controller-notification": "Identificando-se como operador da sala com a senha '{}'...",
|
"identifying-as-controller-notification": "Identificando-se como operador da sala com a senha '{}'...",
|
||||||
"failed-to-identify-as-controller-notification": "{} falhou ao se identificar como operador da sala.",
|
"failed-to-identify-as-controller-notification": "{} falhou ao se identificar como operador da sala.",
|
||||||
"authenticated-as-controller-notification": "{} autenticou-se como um operador da sala",
|
"authenticated-as-controller-notification": "{} autenticou-se como um operador da sala",
|
||||||
"created-controlled-room-notification": "Criou a sala gerenciada '{}' com a senha '{}'. Por favor, salve essa informação para futura referência!\n\nIn managed rooms everyone is kept in sync with the room operator(s) who are the only ones who can pause, unpause, seek, and change the playlist.\n\nYou should ask regular viewers to join the room '{}' but the room operators can join the room '{}' to automatically authenticate themselves.", # RoomName, operatorPassword, roomName, roomName:operatorPassword # TODO: Translate
|
"created-controlled-room-notification": "Criou a sala gerenciada '{}' com a senha '{}'. Por favor, salve essa informação para futura referência!\n\nEm uma sala gerenciada, todos são mantidos em sincronia com o(s) operador(es) de sala, que é/são o(s) único(s) que pode(m) pausar, despausar, pular, e mudar a playlist.\n\nVocê deve pedir usuários comuns para se entrarem à sala '{}', mas os operadores de sala podem se entrar à sala '{}' para autenticarem-se automaticamente.", # RoomName, operatorPassword, roomName, roomName:operatorPassword
|
||||||
|
|
||||||
|
|
||||||
"file-different-notification": "O arquivo que você está tocando parece ser diferente do arquivo de {}", # User
|
"file-different-notification": "O arquivo que você está tocando parece ser diferente do arquivo de {}", # User
|
||||||
"file-differences-notification": "Seus arquivos se diferem da(s) seguinte(s) forma(s): {}", # Differences
|
"file-differences-notification": "Seus arquivos se diferem da(s) seguinte(s) forma(s): {}", # Differences
|
||||||
@ -87,10 +88,10 @@ pt_BR = {
|
|||||||
"commandlist-notification/create": "\tc [nome] - cria sala gerenciado usando o nome da sala atual",
|
"commandlist-notification/create": "\tc [nome] - cria sala gerenciado usando o nome da sala atual",
|
||||||
"commandlist-notification/auth": "\ta [senha] - autentica-se como operador da sala com a senha",
|
"commandlist-notification/auth": "\ta [senha] - autentica-se como operador da sala com a senha",
|
||||||
"commandlist-notification/chat": "\tch [mensagem] - envia uma mensagem no chat da sala",
|
"commandlist-notification/chat": "\tch [mensagem] - envia uma mensagem no chat da sala",
|
||||||
"commandList-notification/queue": "\tqa [file/url] - add file or url to bottom of playlist", # TO DO: Translate
|
"commandList-notification/queue": "\tqa [file/url] - adiciona arquivo ou URL para o final da playlist",
|
||||||
"commandList-notification/playlist": "\tql - show the current playlist", # TO DO: Translate
|
"commandList-notification/playlist": "\tql - mostra a playlist atual",
|
||||||
"commandList-notification/select": "\tqs [index] - select given entry in the playlist", # TO DO: Translate
|
"commandList-notification/select": "\tqs [index] - seleciona uma dada entrada na playlist",
|
||||||
"commandList-notification/delete": "\tqd [index] - delete the given entry from the playlist", # TO DO: Translate
|
"commandList-notification/delete": "\tqd [index] - deleta uma dada entrada na playlist",
|
||||||
"syncplay-version-notification": "Versão do Syncplay: {}", # syncplay.version
|
"syncplay-version-notification": "Versão do Syncplay: {}", # syncplay.version
|
||||||
"more-info-notification": "Mais informações disponíveis em: {}", # projectURL
|
"more-info-notification": "Mais informações disponíveis em: {}", # projectURL
|
||||||
|
|
||||||
@ -110,8 +111,8 @@ pt_BR = {
|
|||||||
"mpc-slave-error": "Não foi possível abrir o MPC no slave mode!",
|
"mpc-slave-error": "Não foi possível abrir o MPC no slave mode!",
|
||||||
"mpc-version-insufficient-error": "A versão do MPC é muito antiga, por favor use `mpc-hc` >= `{}`",
|
"mpc-version-insufficient-error": "A versão do MPC é muito antiga, por favor use `mpc-hc` >= `{}`",
|
||||||
"mpc-be-version-insufficient-error": "A versão do MPC-BE é muito antiga, por favor use `mpc-be` >= `{}`",
|
"mpc-be-version-insufficient-error": "A versão do MPC-BE é muito antiga, por favor use `mpc-be` >= `{}`",
|
||||||
"mpv-version-error": "O motivo pelo qual o mpv não pode ser iniciado pode ser devido ao uso de argumentos da linha de comando não suportados ou a uma versão não suportada do mpv.",
|
"mpv-version-error": "O Syncplay não é compatível com esta versão do mpv. Por favor, use uma versão diferente do mpv (por exemplo, Git HEAD).",
|
||||||
"mpv-failed-advice": "The reason mpv cannot start may be due to the use of unsupported command line arguments or an unsupported version of mpv.", # TODO: Translate
|
"mpv-failed-advice": "O motivo pelo qual o mpv não pode ser iniciado pode ser devido ao uso de argumentos da linha de comando não suportados ou a uma versão não suportada do mpv.",
|
||||||
"player-file-open-error": "O reprodutor falhou ao abrir o arquivo",
|
"player-file-open-error": "O reprodutor falhou ao abrir o arquivo",
|
||||||
"player-path-error": "O caminho até o arquivo executável do reprodutor não está configurado corretamente. Os reprodutores suportados são: mpv, mpv.net, VLC, MPC-HC, MPC-BE, mplayer2 e IINA",
|
"player-path-error": "O caminho até o arquivo executável do reprodutor não está configurado corretamente. Os reprodutores suportados são: mpv, mpv.net, VLC, MPC-HC, MPC-BE, mplayer2 e IINA",
|
||||||
"hostname-empty-error": "O endereço do servidor não pode ser vazio",
|
"hostname-empty-error": "O endereço do servidor não pode ser vazio",
|
||||||
@ -133,10 +134,10 @@ pt_BR = {
|
|||||||
"not-json-error": "Não é uma string codificada como JSON\n",
|
"not-json-error": "Não é uma string codificada como JSON\n",
|
||||||
"hello-arguments-error": "Not enough Hello arguments\n", # DO NOT TRANSLATE
|
"hello-arguments-error": "Not enough Hello arguments\n", # DO NOT TRANSLATE
|
||||||
"version-mismatch-error": "Discrepância entre versões do client e do servidor\n",
|
"version-mismatch-error": "Discrepância entre versões do client e do servidor\n",
|
||||||
"vlc-failed-connection": "Falha ao conectar ao VLC. Se você não instalou o syncplay.lua e está usando a versão mais recente do VLC, por favor veja https://syncplay.pl/LUA/ para mais instruções.Syncplay and VLC 4 are not currently compatible, so either use VLC 3 or an alternative such as mpv.", # TO DO: TRANSLATE
|
"vlc-failed-connection": "Falha ao conectar ao VLC. Se você não instalou o syncplay.lua e está usando a versão mais recente do VLC, por favor veja https://syncplay.pl/LUA/ para mais instruções. Syncplay e VLC 4 são atualmente incompatíveis, portanto ou use VLC 3 ou use outro reprodutor, como o mpv.",
|
||||||
"vlc-failed-noscript": "O VLC reportou que a interface de script do syncplay.lua não foi instalada. Por favor, veja https://syncplay.pl/LUA/ para mais instruções.",
|
"vlc-failed-noscript": "O VLC reportou que a interface de script do syncplay.lua não foi instalada. Por favor, veja https://syncplay.pl/LUA/ para mais instruções.",
|
||||||
"vlc-failed-versioncheck": "Esta versão do VLC não é suportada pelo Syncplay.",
|
"vlc-failed-versioncheck": "Esta versão do VLC não é suportada pelo Syncplay.",
|
||||||
"vlc-initial-warning": 'VLC does not always provide accurate position information to Syncplay, especially for .mp4 and .avi files. If you experience problems with erroneous seeking then please try an alternative media player such as <a href="https://mpv.io/">mpv</a> (or <a href="https://github.com/stax76/mpv.net/">mpv.net</a> for Windows users).', # TODO: Translate
|
"vlc-initial-warning": 'O VLC nem sempre fornece informações precisas de posição para o Syncplay, especialmente para arquivos .mp4 ou .avi. Se você experienciar problemas com busca (seeking) incorreta, por favor, tente um reprodutor de mídia alternativo, como o <a href="https://mpv.io/">mpv</a> (ou <a href="https://github.com/stax76/mpv.net/">mpv.net</a>, uma alternativa mais simples do mpv a usuários Windows).',
|
||||||
|
|
||||||
"feature-sharedPlaylists": "playlists compartilhadas", # used for not-supported-by-server-error
|
"feature-sharedPlaylists": "playlists compartilhadas", # used for not-supported-by-server-error
|
||||||
"feature-chat": "chat", # used for not-supported-by-server-error
|
"feature-chat": "chat", # used for not-supported-by-server-error
|
||||||
@ -189,7 +190,7 @@ pt_BR = {
|
|||||||
"name-label": "Nome de usuário (opcional): ",
|
"name-label": "Nome de usuário (opcional): ",
|
||||||
"password-label": "Senha do servidor (se existir): ",
|
"password-label": "Senha do servidor (se existir): ",
|
||||||
"room-label": "Sala padrão: ",
|
"room-label": "Sala padrão: ",
|
||||||
"roomlist-msgbox-label": "Edit room list (one per line)", # TODO: Translate
|
"roomlist-msgbox-label": "Edite a lista de salas (uma por linha)",
|
||||||
|
|
||||||
"media-setting-title": "Configurações do reprodutor de mídia",
|
"media-setting-title": "Configurações do reprodutor de mídia",
|
||||||
"executable-path-label": "Executável do reprodutor:",
|
"executable-path-label": "Executável do reprodutor:",
|
||||||
@ -207,7 +208,7 @@ pt_BR = {
|
|||||||
"filename-privacy-label": "Informação do nome do arquivo:",
|
"filename-privacy-label": "Informação do nome do arquivo:",
|
||||||
"filesize-privacy-label": "Informação do tamanho do arquivo:",
|
"filesize-privacy-label": "Informação do tamanho do arquivo:",
|
||||||
"checkforupdatesautomatically-label": "Verificar atualizações do Syncplay automaticamente",
|
"checkforupdatesautomatically-label": "Verificar atualizações do Syncplay automaticamente",
|
||||||
"autosavejoinstolist-label": "Add rooms you join to the room list", # TO DO: Translate
|
"autosavejoinstolist-label": "Adicionar salas que você entra para a lista de salas",
|
||||||
"slowondesync-label": "Diminuir velocidade em dessincronizações menores (não suportado pelo MPC-HC/BE)",
|
"slowondesync-label": "Diminuir velocidade em dessincronizações menores (não suportado pelo MPC-HC/BE)",
|
||||||
"rewindondesync-label": "Retroceder em dessincronização maiores (recomendado)",
|
"rewindondesync-label": "Retroceder em dessincronização maiores (recomendado)",
|
||||||
"fastforwardondesync-label": "Avançar se estiver ficando para trás (recomendado)",
|
"fastforwardondesync-label": "Avançar se estiver ficando para trás (recomendado)",
|
||||||
@ -216,7 +217,7 @@ pt_BR = {
|
|||||||
"pauseonleave-label": "Pausar quando um usuário sair (por exemplo, se for desconectado)",
|
"pauseonleave-label": "Pausar quando um usuário sair (por exemplo, se for desconectado)",
|
||||||
"readiness-title": "Estado de prontidão inicial",
|
"readiness-title": "Estado de prontidão inicial",
|
||||||
"readyatstart-label": "Marque-me como 'pronto para assistir' por padrão",
|
"readyatstart-label": "Marque-me como 'pronto para assistir' por padrão",
|
||||||
"forceguiprompt-label": "Não mostrar sempre a janela de configuração do Syncplay", # (Inverted)
|
"forceguiprompt-label": "Não mostrar a janela de configuração do Syncplay", # (Inverted)
|
||||||
"showosd-label": "Ativar mensagens na tela (OSD)",
|
"showosd-label": "Ativar mensagens na tela (OSD)",
|
||||||
|
|
||||||
"showosdwarnings-label": "Incluir avisos (por exemplo, quando arquivos são diferentes, usuários não estão prontos, etc)",
|
"showosdwarnings-label": "Incluir avisos (por exemplo, quando arquivos são diferentes, usuários não estão prontos, etc)",
|
||||||
@ -231,7 +232,7 @@ pt_BR = {
|
|||||||
"readiness-label": "Play/Pause",
|
"readiness-label": "Play/Pause",
|
||||||
"misc-label": "Miscelânea",
|
"misc-label": "Miscelânea",
|
||||||
"core-behaviour-title": "Comportamento da sala padrão",
|
"core-behaviour-title": "Comportamento da sala padrão",
|
||||||
"syncplay-internals-title": "Syncplay internals",
|
"syncplay-internals-title": "Configurações internas do Syncplay",
|
||||||
"syncplay-mediasearchdirectories-title": "Diretórios a buscar por mídias",
|
"syncplay-mediasearchdirectories-title": "Diretórios a buscar por mídias",
|
||||||
"syncplay-mediasearchdirectories-label": "Diretórios a buscar por mídias (um caminho por linha)",
|
"syncplay-mediasearchdirectories-label": "Diretórios a buscar por mídias (um caminho por linha)",
|
||||||
"sync-label": "Sincronizar",
|
"sync-label": "Sincronizar",
|
||||||
@ -277,7 +278,7 @@ pt_BR = {
|
|||||||
"run-label": "Começar Syncplay",
|
"run-label": "Começar Syncplay",
|
||||||
"storeandrun-label": "Salvar mudanças e começar Syncplay",
|
"storeandrun-label": "Salvar mudanças e começar Syncplay",
|
||||||
|
|
||||||
"contact-label": "Sinta-se livre para mandar um e-mail para <a href=\"mailto:dev@syncplay.pl\"><nobr>dev@syncplay.pl</nobr></a>, conversar via chat pelo <a href=\"https://webchat.freenode.net/?channels=#syncplay\"><nobr>canal do IRC #Syncplay</nobr></a> no irc.freenode.net, <a href=\"https://github.com/Uriziel/syncplay/issues\"><nobr>abrir uma issue</nobr></a> pelo GitHub, <a href=\"https://www.facebook.com/SyncplaySoftware\"><nobr>curtir nossa página no Facebook</nobr></a>, <a href=\"https://twitter.com/Syncplay/\"><nobr>nos seguir no Twitter</nobr></a> ou visitar <a href=\"https://syncplay.pl/\"><nobr>https://syncplay.pl/</nobr></a>. Não use o Syncplay para mandar informações sensíveis/confidenciais.",
|
"contact-label": "Sinta-se livre para mandar um e-mail para <a href=\"mailto:dev@syncplay.pl\"><nobr>dev@syncplay.pl</nobr></a>, <a href=\"https://github.com/Syncplay/syncplay/issues\"><nobr>abrir uma issue</nobr></a> pelo GitHub / <a href=\"https://github.com/Syncplay/syncplay/discussions\"><nobr>start a discussion</nobr></a> to make a suggestion or ask a question via GitHub,, <a href=\"https://www.facebook.com/SyncplaySoftware\"><nobr>curtir nossa página no Facebook</nobr></a>, <a href=\"https://twitter.com/Syncplay/\"><nobr>nos seguir no Twitter</nobr></a> ou visitar <a href=\"https://syncplay.pl/\"><nobr>https://syncplay.pl/</nobr></a>. Não use o Syncplay para mandar informações sensíveis/confidenciais.", # TODO: Update translation
|
||||||
|
|
||||||
"joinroom-label": "Juntar-se a uma sala",
|
"joinroom-label": "Juntar-se a uma sala",
|
||||||
"joinroom-menu-label": "Juntar-se à sala {}",
|
"joinroom-menu-label": "Juntar-se à sala {}",
|
||||||
@ -333,7 +334,7 @@ pt_BR = {
|
|||||||
"startTLS-initiated": "Tentando estabelecer conexão segura",
|
"startTLS-initiated": "Tentando estabelecer conexão segura",
|
||||||
"startTLS-secure-connection-ok": "Conexão segura estabelecida ({})",
|
"startTLS-secure-connection-ok": "Conexão segura estabelecida ({})",
|
||||||
"startTLS-server-certificate-invalid": 'Não foi possível estabelecer uma conexão segura. O servidor usa um certificado de segurança inválido. Essa comunicação pode ser interceptada por terceiros. Para mais detalhes de solução de problemas, consulte <a href="https://syncplay.pl/trouble">aqui</a>.',
|
"startTLS-server-certificate-invalid": 'Não foi possível estabelecer uma conexão segura. O servidor usa um certificado de segurança inválido. Essa comunicação pode ser interceptada por terceiros. Para mais detalhes de solução de problemas, consulte <a href="https://syncplay.pl/trouble">aqui</a>.',
|
||||||
"startTLS-server-certificate-invalid-DNS-ID": "Syncplay does not trust this server because it uses a certificate that is not valid for its hostname.", # TODO: Translate
|
"startTLS-server-certificate-invalid-DNS-ID": "O Syncplay não confia neste servidor pois ele usa um certificado que não é válido para seu hostname.",
|
||||||
"startTLS-not-supported-client": "Este client não possui suporte para TLS",
|
"startTLS-not-supported-client": "Este client não possui suporte para TLS",
|
||||||
"startTLS-not-supported-server": "Este servidor não possui suporte para TLS",
|
"startTLS-not-supported-server": "Este servidor não possui suporte para TLS",
|
||||||
|
|
||||||
@ -381,7 +382,7 @@ pt_BR = {
|
|||||||
"password-tooltip": "Senhas são necessárias apenas para servidores privados.",
|
"password-tooltip": "Senhas são necessárias apenas para servidores privados.",
|
||||||
"room-tooltip": "O nome da sala para se conectar pode ser praticamente qualquer coisa, mas você só irá se sincronizar com pessoas na mesma sala.",
|
"room-tooltip": "O nome da sala para se conectar pode ser praticamente qualquer coisa, mas você só irá se sincronizar com pessoas na mesma sala.",
|
||||||
|
|
||||||
"edit-rooms-tooltip": "Edit room list.", # TO DO: Translate
|
"edit-rooms-tooltip": "Edite a lista de salas.",
|
||||||
|
|
||||||
"executable-path-tooltip": "Localização do seu reprodutor de mídia preferido (mpv, mpv.net, VLC, MPC-HC/BE, mplayer2 ou IINA).",
|
"executable-path-tooltip": "Localização do seu reprodutor de mídia preferido (mpv, mpv.net, VLC, MPC-HC/BE, mplayer2 ou IINA).",
|
||||||
"media-path-tooltip": "Localização do vídeo ou transmissão a ser aberto. Necessário com o mplayer2.",
|
"media-path-tooltip": "Localização do vídeo ou transmissão a ser aberto. Necessário com o mplayer2.",
|
||||||
@ -395,12 +396,12 @@ pt_BR = {
|
|||||||
"privacy-sendhashed-tooltip": "Mandar versão hasheada da informação, tornando-a menos visível aos outros clients.",
|
"privacy-sendhashed-tooltip": "Mandar versão hasheada da informação, tornando-a menos visível aos outros clients.",
|
||||||
"privacy-dontsend-tooltip": "Não enviar esta informação ao servidor. Esta opção oferece a maior privacidade.",
|
"privacy-dontsend-tooltip": "Não enviar esta informação ao servidor. Esta opção oferece a maior privacidade.",
|
||||||
"checkforupdatesautomatically-tooltip": "Checar o site do Syncplay regularmente para ver se alguma nova versão do Syncplay está disponível.",
|
"checkforupdatesautomatically-tooltip": "Checar o site do Syncplay regularmente para ver se alguma nova versão do Syncplay está disponível.",
|
||||||
"autosavejoinstolist-tooltip": "When you join a room in a server, automatically remember the room name in the list of rooms to join.", # TO DO: Translate
|
"autosavejoinstolist-tooltip": "Quando você se juntar a uma sala em um servidor, automaticamente lembrar do nome da sala na lista de salas para entrar.",
|
||||||
"slowondesync-tooltip": "Reduzir a velocidade de reprodução temporariamente quando necessário para trazer você de volta à sincronia com os outros espectadores. Não suportado pelo MPC-HC/BE.",
|
"slowondesync-tooltip": "Reduzir a velocidade de reprodução temporariamente quando necessário para trazer você de volta à sincronia com os outros espectadores. Não suportado pelo MPC-HC/BE.",
|
||||||
"dontslowdownwithme-tooltip": "Significa que outros não serão desacelerados ou retrocedidos se sua reprodução estiver ficando para trás. Útil para operadores de salas.",
|
"dontslowdownwithme-tooltip": "Significa que outros não serão desacelerados ou retrocedidos se sua reprodução estiver ficando para trás. Útil para operadores de salas.",
|
||||||
"pauseonleave-tooltip": "Pausar reprodução se você for disconectado ou se alguém sair da sua sala.",
|
"pauseonleave-tooltip": "Pausar reprodução se você for desconectado ou se alguém sair da sua sala.",
|
||||||
"readyatstart-tooltip": "Definir-se como 'pronto' ao começar (do contrário você será definido como 'não pronto' até mudar seu estado de prontidão)",
|
"readyatstart-tooltip": "Definir-se como 'pronto' ao começar (do contrário você será definido como 'não pronto' até mudar seu estado de prontidão)",
|
||||||
"forceguiprompt-tooltip": "Diálogo de configuração não é exibido ao abrir um arquivo com o Syncplay.", # (Inverted)
|
"forceguiprompt-tooltip": "Diálogo de configuração não será exibido ao abrir um arquivo com o Syncplay.", # (Inverted)
|
||||||
"nostore-tooltip": "Começar Syncplay com a dada configuração, mas não guardar as mudanças permanentemente.", # (Inverted)
|
"nostore-tooltip": "Começar Syncplay com a dada configuração, mas não guardar as mudanças permanentemente.", # (Inverted)
|
||||||
"rewindondesync-tooltip": "Retroceder automaticamente quando necessário para sincronizar. Desabilitar isto pode resultar em grandes dessincronizações!",
|
"rewindondesync-tooltip": "Retroceder automaticamente quando necessário para sincronizar. Desabilitar isto pode resultar em grandes dessincronizações!",
|
||||||
"fastforwardondesync-tooltip": "Avançar automaticamente quando estiver fora de sincronia com o operador da sala (ou sua posição pretendida caso 'Nunca desacelerar ou retroceder outros' estiver habilitada).",
|
"fastforwardondesync-tooltip": "Avançar automaticamente quando estiver fora de sincronia com o operador da sala (ou sua posição pretendida caso 'Nunca desacelerar ou retroceder outros' estiver habilitada).",
|
||||||
@ -516,6 +517,6 @@ pt_BR = {
|
|||||||
"playlist-instruction-item-message": "Arraste um arquivo aqui para adicioná-lo à playlist compartilhada.",
|
"playlist-instruction-item-message": "Arraste um arquivo aqui para adicioná-lo à playlist compartilhada.",
|
||||||
"sharedplaylistenabled-tooltip": "Operadores da sala podem adicionar arquivos para a playlist compartilhada para tornar mais fácil para todo mundo assistir a mesma coisa. Configure os diretórios de mídia em 'Miscelânea'.",
|
"sharedplaylistenabled-tooltip": "Operadores da sala podem adicionar arquivos para a playlist compartilhada para tornar mais fácil para todo mundo assistir a mesma coisa. Configure os diretórios de mídia em 'Miscelânea'.",
|
||||||
|
|
||||||
"playlist-empty-error": "Playlist is currently empty.", # TO DO: Translate
|
"playlist-empty-error": "A playlist está atualemnte vazia.",
|
||||||
"playlist-invalid-index-error": "Invalid playlist index", # TO DO: Translate
|
"playlist-invalid-index-error": "Índice inválido na playlist.",
|
||||||
}
|
}
|
||||||
|
|||||||
@ -276,7 +276,7 @@ pt_PT = {
|
|||||||
"run-label": "Começar Syncplay",
|
"run-label": "Começar Syncplay",
|
||||||
"storeandrun-label": "Salvar mudanças e começar Syncplay",
|
"storeandrun-label": "Salvar mudanças e começar Syncplay",
|
||||||
|
|
||||||
"contact-label": "Sinta-se livre para enviar um e-mail para <a href=\"mailto:dev@syncplay.pl\"><nobr>dev@syncplay.pl</nobr></a>, conversar via chat pelo <a href=\"https://webchat.freenode.net/?channels=#syncplay\"><nobr>canal do IRC #Syncplay</nobr></a> no irc.freenode.net, <a href=\"https://github.com/Uriziel/syncplay/issues\"><nobr>abrir uma issue</nobr></a> pelo GitHub, <a href=\"https://www.facebook.com/SyncplaySoftware\"><nobr>curtir nossa página no Facebook</nobr></a>, <a href=\"https://twitter.com/Syncplay/\"><nobr>nos seguir no Twitter</nobr></a> ou visitar <a href=\"https://syncplay.pl/\"><nobr>https://syncplay.pl/</nobr></a>. Não use o Syncplay para mandar informações sensíveis/confidenciais.",
|
"contact-label": "Sinta-se livre para enviar um e-mail para <a href=\"mailto:dev@syncplay.pl\"><nobr>dev@syncplay.pl</nobr></a>, <a href=\"https://github.com/Syncplay/syncplay/issues\"><nobr>abrir uma issue</nobr></a> pelo GitHub / <a href=\"https://github.com/Syncplay/syncplay/discussions\"><nobr>start a discussion</nobr></a> to make a suggestion or ask a question via GitHub,, <a href=\"https://www.facebook.com/SyncplaySoftware\"><nobr>curtir nossa página no Facebook</nobr></a>, <a href=\"https://twitter.com/Syncplay/\"><nobr>nos seguir no Twitter</nobr></a> ou visitar <a href=\"https://syncplay.pl/\"><nobr>https://syncplay.pl/</nobr></a>. Não use o Syncplay para mandar informações sensíveis/confidenciais.", # TODO: Update translation
|
||||||
|
|
||||||
"joinroom-label": "Juntar-se a uma sala",
|
"joinroom-label": "Juntar-se a uma sala",
|
||||||
"joinroom-menu-label": "Juntar-se à sala {}",
|
"joinroom-menu-label": "Juntar-se à sala {}",
|
||||||
|
|||||||
@ -277,7 +277,7 @@ ru = {
|
|||||||
"run-label": "Запустить",
|
"run-label": "Запустить",
|
||||||
"storeandrun-label": "Сохранить и запустить",
|
"storeandrun-label": "Сохранить и запустить",
|
||||||
|
|
||||||
"contact-label": "Есть идея, нашли ошибку или хотите оставить отзыв? Пишите на <a href=\"mailto:dev@syncplay.pl\">dev@syncplay.pl</a>, в <a href=\"https://webchat.freenode.net/?channels=#syncplay\">IRC канал #Syncplay</a> на irc.freenode.net или <a href=\"https://github.com/Uriziel/syncplay/issues\">задавайте вопросы через GitHub</a>. Кроме того, заходите на <a href=\"https://syncplay.pl/\">www.syncplay.pl</a> за информацией, помощью и обновлениями! Не используйте Syncplay для передачи конфиденциальной информации.",
|
"contact-label": "Есть идея, нашли ошибку или хотите оставить отзыв? Пишите на <a href=\"mailto:dev@syncplay.pl\">dev@syncplay.pl</a> или <a href=\"https://github.com/Syncplay/syncplay/issues\">задавайте вопросы через GitHub</a> / <a href=\"https://github.com/Syncplay/syncplay/discussions\"><nobr>start a discussion</nobr></a> to make a suggestion or ask a question via GitHub. Кроме того, заходите на <a href=\"https://syncplay.pl/\">www.syncplay.pl</a> за информацией, помощью и обновлениями! Не используйте Syncplay для передачи конфиденциальной информации.", # TODO: Update translation
|
||||||
|
|
||||||
"joinroom-label": "Зайти в комнату",
|
"joinroom-label": "Зайти в комнату",
|
||||||
"joinroom-menu-label": "Зайти в комнату {}",
|
"joinroom-menu-label": "Зайти в комнату {}",
|
||||||
|
|||||||
@ -278,7 +278,7 @@ tr = {
|
|||||||
"run-label": "Syncplay'i çalıştırın",
|
"run-label": "Syncplay'i çalıştırın",
|
||||||
"storeandrun-label": "Yapılandırmayı depolayın ve Syncplay'i çalıştırın",
|
"storeandrun-label": "Yapılandırmayı depolayın ve Syncplay'i çalıştırın",
|
||||||
|
|
||||||
"contact-label": "E-posta <a href=\"mailto:dev@syncplay.pl\"><nobr>dev@syncplay.pl</nobr></a> göndermekten çekinmeyin. irc.freenode.net'te <a href=\"https://webchat.freenode.net/?channels=#syncplay\"><nobr>#Syncplay IRC channel</nobr></a> kanalı üzerinden yazabilir, GitHub üzerinden <a href=\"https://github.com/Uriziel/syncplay/issues\"><nobr>sorun bildirebilir</nobr></a>, Facebook üzerinden <a href=\"https://www.facebook.com/SyncplaySoftware\"><nobr>bizi beğenebilir</nobr></a>, Twitter üzerinden <a href=\"https://twitter.com/Syncplay/\"><nobr>bizi takip edebilir</nobr></a>, veya <a href=\"https://syncplay.pl/\"><nobr>https://syncplay.pl/</nobr></a> adresinden sayfamızı ziyaret edebilirsiniz. Hassas bilgileri göndermek için Syncplay kullanmayın.",
|
"contact-label": "E-posta <a href=\"mailto:dev@syncplay.pl\"><nobr>dev@syncplay.pl</nobr></a> göndermekten çekinmeyin, GitHub üzerinden <a href=\"https://github.com/Syncplay/syncplay/issues\"><nobr>sorun bildirebilir</nobr></a> / <a href=\"https://github.com/Syncplay/syncplay/discussions\"><nobr>start a discussion</nobr></a> to make a suggestion or ask a question via GitHub, Facebook üzerinden <a href=\"https://www.facebook.com/SyncplaySoftware\"><nobr>bizi beğenebilir</nobr></a>, Twitter üzerinden <a href=\"https://twitter.com/Syncplay/\"><nobr>bizi takip edebilir</nobr></a>, veya <a href=\"https://syncplay.pl/\"><nobr>https://syncplay.pl/</nobr></a> adresinden sayfamızı ziyaret edebilirsiniz. Hassas bilgileri göndermek için Syncplay kullanmayın.", # TODO: Update translation
|
||||||
|
|
||||||
"joinroom-label": "Odaya katıl",
|
"joinroom-label": "Odaya katıl",
|
||||||
"joinroom-menu-label": "{} odasına katıl",
|
"joinroom-menu-label": "{} odasına katıl",
|
||||||
|
|||||||
@ -65,6 +65,8 @@ class MpvPlayer(BasePlayer):
|
|||||||
continue
|
continue
|
||||||
if "=" in argToAdd:
|
if "=" in argToAdd:
|
||||||
(argName, argValue) = argToAdd.split("=", 1)
|
(argName, argValue) = argToAdd.split("=", 1)
|
||||||
|
if argValue[0] == '"' and argValue[-1] == '"':
|
||||||
|
argValue = argValue[1:-1]
|
||||||
else:
|
else:
|
||||||
argName = argToAdd
|
argName = argToAdd
|
||||||
argValue = "yes"
|
argValue = "yes"
|
||||||
@ -211,6 +213,9 @@ class MpvPlayer(BasePlayer):
|
|||||||
else:
|
else:
|
||||||
return self._position
|
return self._position
|
||||||
|
|
||||||
|
def eofDetected(self):
|
||||||
|
self._client.eofReportedByPlayer()
|
||||||
|
|
||||||
def _storePosition(self, value):
|
def _storePosition(self, value):
|
||||||
if value is None:
|
if value is None:
|
||||||
self._client.ui.showDebugMessage("NONE TYPE POSITION!")
|
self._client.ui.showDebugMessage("NONE TYPE POSITION!")
|
||||||
@ -418,11 +423,13 @@ class MpvPlayer(BasePlayer):
|
|||||||
|
|
||||||
def _handleUnknownLine(self, line):
|
def _handleUnknownLine(self, line):
|
||||||
self.mpvErrorCheck(line)
|
self.mpvErrorCheck(line)
|
||||||
|
|
||||||
if "<chat>" in line:
|
if "<chat>" in line:
|
||||||
line = line.replace(constants.MPV_INPUT_BACKSLASH_SUBSTITUTE_CHARACTER, "\\")
|
line = line.replace(constants.MPV_INPUT_BACKSLASH_SUBSTITUTE_CHARACTER, "\\")
|
||||||
self._listener.sendChat(line[6:-7])
|
self._listener.sendChat(line[6:-7])
|
||||||
|
|
||||||
|
if "<eof>" in line:
|
||||||
|
self.eofDetected()
|
||||||
|
|
||||||
if "<paused=" in line and ", pos=" in line:
|
if "<paused=" in line and ", pos=" in line:
|
||||||
update_string = line.replace(">", "<").replace("=", "<").replace(", ", "<").split("<")
|
update_string = line.replace(">", "<").replace("=", "<").replace(", ", "<").split("<")
|
||||||
paused_update = update_string[2]
|
paused_update = update_string[2]
|
||||||
|
|||||||
@ -297,7 +297,7 @@ class VlcPlayer(BasePlayer):
|
|||||||
# value = value.decode('utf-8')
|
# value = value.decode('utf-8')
|
||||||
self._filepath = value
|
self._filepath = value
|
||||||
self._pathAsk.set()
|
self._pathAsk.set()
|
||||||
elif name == "duration":
|
elif name == "duration" or name == "duration-change":
|
||||||
if value == "no-input":
|
if value == "no-input":
|
||||||
self._duration = 0
|
self._duration = 0
|
||||||
elif value == "invalid-32-bit-value":
|
elif value == "invalid-32-bit-value":
|
||||||
@ -306,6 +306,11 @@ class VlcPlayer(BasePlayer):
|
|||||||
else:
|
else:
|
||||||
self._duration = float(value.replace(",", "."))
|
self._duration = float(value.replace(",", "."))
|
||||||
self._durationAsk.set()
|
self._durationAsk.set()
|
||||||
|
if name == "duration-change":
|
||||||
|
self._filechanged = True
|
||||||
|
t = threading.Thread(target=self._onFileUpdate)
|
||||||
|
t.setDaemon(True)
|
||||||
|
t.start()
|
||||||
elif name == "playstate":
|
elif name == "playstate":
|
||||||
self._paused = bool(value != 'playing') if (value != "no-input" and self._filechanged == False) else self._client.getGlobalPaused()
|
self._paused = bool(value != 'playing') if (value != "no-input" and self._filechanged == False) else self._client.getGlobalPaused()
|
||||||
diff = time.time() - self._lastVLCPositionUpdate if self._lastVLCPositionUpdate else 0
|
diff = time.time() - self._lastVLCPositionUpdate if self._lastVLCPositionUpdate else 0
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
Principal author: Etoh
|
Principal author: Etoh
|
||||||
Other contributors: DerGenaue, jb, Pilotat
|
Other contributors: DerGenaue, jb, Pilotat
|
||||||
Project: https://syncplay.pl/
|
Project: https://syncplay.pl/
|
||||||
Version: 0.3.6
|
Version: 0.3.7
|
||||||
|
|
||||||
Note:
|
Note:
|
||||||
* This interface module is intended to be used in conjunction with Syncplay.
|
* This interface module is intended to be used in conjunction with Syncplay.
|
||||||
@ -78,7 +78,7 @@ Syncplay should install this automatically to your user folder.
|
|||||||
|
|
||||||
--]==========================================================================]
|
--]==========================================================================]
|
||||||
|
|
||||||
local connectorversion = "0.3.6"
|
local connectorversion = "0.3.7"
|
||||||
local vlcversion = vlc.misc.version()
|
local vlcversion = vlc.misc.version()
|
||||||
local vlcmajorversion = tonumber(vlcversion:sub(1,1)) -- get the major version of VLC
|
local vlcmajorversion = tonumber(vlcversion:sub(1,1)) -- get the major version of VLC
|
||||||
|
|
||||||
@ -114,6 +114,8 @@ local newfilepath
|
|||||||
local newinputstate
|
local newinputstate
|
||||||
local oldtitle = 0
|
local oldtitle = 0
|
||||||
local newtitle = 0
|
local newtitle = 0
|
||||||
|
local oldduration = 0
|
||||||
|
local newduration = 0
|
||||||
|
|
||||||
local channel1
|
local channel1
|
||||||
local channel2
|
local channel2
|
||||||
@ -179,6 +181,11 @@ function detectchanges()
|
|||||||
oldtitle = newtitle
|
oldtitle = newtitle
|
||||||
notificationbuffer = notificationbuffer .. "playstate"..msgseperator..tostring(get_play_state())..msgterminator
|
notificationbuffer = notificationbuffer .. "playstate"..msgseperator..tostring(get_play_state())..msgterminator
|
||||||
notificationbuffer = notificationbuffer .. "position"..msgseperator..tostring(get_time())..msgterminator
|
notificationbuffer = notificationbuffer .. "position"..msgseperator..tostring(get_time())..msgterminator
|
||||||
|
newduration = get_duration()
|
||||||
|
if oldduration ~= newduration then
|
||||||
|
oldduration = newduration
|
||||||
|
notificationbuffer = notificationbuffer .. "duration-change"..msgseperator..tostring(newduration)..msgterminator
|
||||||
|
end
|
||||||
else
|
else
|
||||||
notificationbuffer = notificationbuffer .. "playstate"..msgseperator..noinput..msgterminator
|
notificationbuffer = notificationbuffer .. "playstate"..msgseperator..noinput..msgterminator
|
||||||
notificationbuffer = notificationbuffer .. "position"..msgseperator..noinput..msgterminator
|
notificationbuffer = notificationbuffer .. "position"..msgseperator..noinput..msgterminator
|
||||||
@ -189,7 +196,6 @@ function detectchanges()
|
|||||||
oldinputstate = newinputstate
|
oldinputstate = newinputstate
|
||||||
notificationbuffer = notificationbuffer.."inputstate-change"..msgseperator..tostring(newinputstate)..msgterminator
|
notificationbuffer = notificationbuffer.."inputstate-change"..msgseperator..tostring(newinputstate)..msgterminator
|
||||||
end
|
end
|
||||||
|
|
||||||
return notificationbuffer
|
return notificationbuffer
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -406,7 +412,7 @@ function get_duration ()
|
|||||||
local i = 0
|
local i = 0
|
||||||
response = 0
|
response = 0
|
||||||
repeat
|
repeat
|
||||||
vlc.misc.mwait(vlc.misc.mdate() + durationdelay)
|
-- vlc.misc.mwait(vlc.misc.mdate() + durationdelay)
|
||||||
if item and item:duration() then
|
if item and item:duration() then
|
||||||
response = item:duration()
|
response = item:duration()
|
||||||
if response < 1 then
|
if response < 1 then
|
||||||
@ -420,7 +426,6 @@ function get_duration ()
|
|||||||
else
|
else
|
||||||
errormsg = noinput
|
errormsg = noinput
|
||||||
end
|
end
|
||||||
|
|
||||||
return response, errormsg
|
return response, errormsg
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -490,7 +495,10 @@ function do_command ( command, argument)
|
|||||||
|
|
||||||
if command == "get-interface-version" then response = "interface-version"..msgseperator..connectorversion..msgterminator
|
if command == "get-interface-version" then response = "interface-version"..msgseperator..connectorversion..msgterminator
|
||||||
elseif command == "get-vlc-version" then response = "vlc-version"..msgseperator..vlcversion..msgterminator
|
elseif command == "get-vlc-version" then response = "vlc-version"..msgseperator..vlcversion..msgterminator
|
||||||
elseif command == "get-duration" then response = "duration"..msgseperator..errormerge(get_duration())..msgterminator
|
elseif command == "get-duration" then
|
||||||
|
newduration = errormerge(get_duration())
|
||||||
|
response = "duration"..msgseperator..newduration..msgterminator
|
||||||
|
oldduration = newduration
|
||||||
elseif command == "get-filepath" then response = "filepath"..msgseperator..errormerge(get_filepath())..msgterminator
|
elseif command == "get-filepath" then response = "filepath"..msgseperator..errormerge(get_filepath())..msgterminator
|
||||||
elseif command == "get-filename" then response = "filename"..msgseperator..errormerge(get_filename())..msgterminator
|
elseif command == "get-filename" then response = "filename"..msgseperator..errormerge(get_filename())..msgterminator
|
||||||
elseif command == "get-title" then response = "title"..msgseperator..errormerge(get_var("title", 0))..msgterminator
|
elseif command == "get-title" then response = "title"..msgseperator..errormerge(get_var("title", 0))..msgterminator
|
||||||
|
|||||||
@ -1,39 +0,0 @@
|
|||||||
1.2.6
|
|
||||||
|
|
||||||
* `Not all files in the room are same` message is displayed after first unpause if that's the case
|
|
||||||
* `You're alone in the room` message is displayed after first unpause if that's the case
|
|
||||||
* All messages exported to messages.py
|
|
||||||
* Full UTF-8 support
|
|
||||||
* IRC Bot (experimental, thanks HarHar)
|
|
||||||
* MPV support (including streams - thanks happy)
|
|
||||||
* VLC support (experimental)
|
|
||||||
* MOTD (experimental)
|
|
||||||
* Reply on HTTP requests (experimental)
|
|
||||||
* Better GUI (thanks TacticalGenius230)
|
|
||||||
* Removed syncplayClientForceConfiguration.bat file for opening configuration
|
|
||||||
* Configuration always opens if no file was provided (not done with open with) or was set like that in configuration window
|
|
||||||
* Syncplay now tries to locate default player on first run
|
|
||||||
* Released executables are now working on Windows 8 (thanks titsontrains)
|
|
||||||
* Fixed Mplayer2 not working with msgcolor (thanks ion1)
|
|
||||||
* Added CCCP path for MPC-HC
|
|
||||||
* Various improvements to installer and uninstaller
|
|
||||||
* Re-enabled "mplayer" as a valid player name and improved version checking
|
|
||||||
* Removed passing stderr to outpup for mplayer
|
|
||||||
* Forcing precise seeking to fix double jumping in mplayer2/mpv.
|
|
||||||
* Added pre-experimental MAL support
|
|
||||||
* Fixed reconnection time prolonging over multiple disconnections
|
|
||||||
* Allow 1 second seeks
|
|
||||||
|
|
||||||
1.2.5 (2 January 2013)
|
|
||||||
|
|
||||||
* Installation support for Windows
|
|
||||||
* First official release.
|
|
||||||
|
|
||||||
1.2.4
|
|
||||||
|
|
||||||
* Config file is not saved again unless needed
|
|
||||||
* Added optimize flags to the default installation on Linux
|
|
||||||
* Server optimized to handle many users at the same time
|
|
||||||
* #58 - Default room always assumed your username now.
|
|
||||||
|
|
||||||
1.2.3 (29 December 2012)
|
|
||||||
@ -295,6 +295,13 @@ end
|
|||||||
|
|
||||||
chat_timer=mp.add_periodic_timer(TICK_INTERVAL, chat_update)
|
chat_timer=mp.add_periodic_timer(TICK_INTERVAL, chat_update)
|
||||||
|
|
||||||
|
mp.observe_property('eof-reached', 'bool', function(e)
|
||||||
|
if mp.get_property_native("eof-reached") == true then
|
||||||
|
mp.command('print-text "<eof>"')
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
|
||||||
mp.register_script_message('chat', function(e)
|
mp.register_script_message('chat', function(e)
|
||||||
add_chat(e)
|
add_chat(e)
|
||||||
end)
|
end)
|
||||||
@ -985,7 +992,7 @@ function readyMpvAfterSettingsKnown()
|
|||||||
add_repl_alpharow_bindings(alpharowbindings)
|
add_repl_alpharow_bindings(alpharowbindings)
|
||||||
mp.add_forced_key_binding('tab', handle_tab)
|
mp.add_forced_key_binding('tab', handle_tab)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
syncplayintfSet = true
|
syncplayintfSet = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -1,463 +0,0 @@
|
|||||||
{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deftab529{\fonttbl{\f0\fswiss\fcharset0 Helvetica;}{\f1\fswiss\fcharset238 Helvetica;}}
|
|
||||||
{\colortbl ;\red0\green0\blue255;}
|
|
||||||
{\*\generator Riched20 10.0.18362}\viewkind4\uc1
|
|
||||||
\pard\tx529\f0\fs24\lang9 Syncplay relies on the following softwares, in compliance with their licenses. \par
|
|
||||||
\par
|
|
||||||
\b Qt.py\b0\par
|
|
||||||
\par
|
|
||||||
Copyright (c) 2016 Marcus Ottosson\par
|
|
||||||
\par
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy\par
|
|
||||||
of this software and associated documentation files (the "Software"), to deal\par
|
|
||||||
in the Software without restriction, including without limitation the rights\par
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\par
|
|
||||||
copies of the Software, and to permit persons to whom the Software is\par
|
|
||||||
furnished to do so, subject to the following conditions:\par
|
|
||||||
\par
|
|
||||||
The above copyright notice and this permission notice shall be included in all\par
|
|
||||||
copies or substantial portions of the Software.\par
|
|
||||||
\par
|
|
||||||
\b Qt for Python\par
|
|
||||||
\b0\par
|
|
||||||
Copyright (C) 2018 The Qt Company Ltd.\par
|
|
||||||
Contact: {{\field{\*\fldinst{HYPERLINK https://www.qt.io/licensing/ }}{\fldrslt{https://www.qt.io/licensing/\ul0\cf0}}}}\f0\fs24\par
|
|
||||||
\par
|
|
||||||
This program is free software: you can redistribute it and/or modify\par
|
|
||||||
it under the terms of the GNU Lesser General Public License as published\par
|
|
||||||
by the Free Software Foundation, either version 3 of the License, or\par
|
|
||||||
(at your option) any later version.\par
|
|
||||||
\par
|
|
||||||
This program is distributed in the hope that it will be useful,\par
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of\par
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\par
|
|
||||||
GNU Lesser General Public License for more details.\par
|
|
||||||
\par
|
|
||||||
You should have received a copy of the GNU Lesser General Public License\par
|
|
||||||
along with this program. If not, see <{{\field{\*\fldinst{HYPERLINK "http://www.gnu.org/licenses/"}}{\fldrslt{http://www.gnu.org/licenses/\ul0\cf0}}}}\f0\fs24 >.\par
|
|
||||||
\par
|
|
||||||
\b Qt\b0\par
|
|
||||||
\par
|
|
||||||
This program uses Qt under the GNU LGPL version 3.\par
|
|
||||||
\par
|
|
||||||
Qt is a C++ toolkit for cross-platform application development.\par
|
|
||||||
\par
|
|
||||||
Qt provides single-source portability across all major desktop operating systems. It is also available for embedded Linux and other embedded and mobile operating systems.\par
|
|
||||||
\par
|
|
||||||
Qt is available under three different licensing options designed to accommodate the needs of our various users.\par
|
|
||||||
\par
|
|
||||||
Qt licensed under our commercial license agreement is appropriate for development of proprietary/commercial software where you do not want to share any source code with third parties or otherwise cannot comply with the terms of the GNU LGPL version 3 or GNU LGPL version 2.1.\par
|
|
||||||
\par
|
|
||||||
Qt licensed under the GNU LGPL version 3 is appropriate for the development of Qt applications provided you can comply with the terms and conditions of the GNU LGPL version 3.\par
|
|
||||||
\par
|
|
||||||
Qt licensed under the GNU LGPL version 2.1 is appropriate for the development of Qt applications provided you can comply with the terms and conditions of the GNU LGPL version 2.1.\par
|
|
||||||
\par
|
|
||||||
Please see qt.io/licensing for an overview of Qt licensing.\par
|
|
||||||
\par
|
|
||||||
Copyright (C) 2017 The Qt Company Ltd and other contributors.\par
|
|
||||||
\par
|
|
||||||
Qt and the Qt logo are trademarks of The Qt Company Ltd.\par
|
|
||||||
\par
|
|
||||||
Qt is The Qt Company Ltd product developed as an open source project. See qt.io for more information.\par
|
|
||||||
\par
|
|
||||||
\b Twisted\par
|
|
||||||
\par
|
|
||||||
\b0 Copyright (c) 2001-2017\par
|
|
||||||
Allen Short\par
|
|
||||||
Amber Hawkie Brown\par
|
|
||||||
Andrew Bennetts\par
|
|
||||||
Andy Gayton\par
|
|
||||||
Antoine Pitrou\par
|
|
||||||
Apple Computer, Inc.\par
|
|
||||||
Ashwini Oruganti\par
|
|
||||||
Benjamin Bruheim\par
|
|
||||||
Bob Ippolito\par
|
|
||||||
Canonical Limited\par
|
|
||||||
Christopher Armstrong\par
|
|
||||||
David Reid\par
|
|
||||||
Divmod Inc.\par
|
|
||||||
Donovan Preston\par
|
|
||||||
Eric Mangold\par
|
|
||||||
Eyal Lotem\par
|
|
||||||
Google Inc.\par
|
|
||||||
Hybrid Logic Ltd.\par
|
|
||||||
Hynek Schlawack\par
|
|
||||||
Itamar Turner-Trauring\par
|
|
||||||
James Knight\par
|
|
||||||
Jason A. Mobarak\par
|
|
||||||
Jean-Paul Calderone\par
|
|
||||||
Jessica McKellar\par
|
|
||||||
Jonathan D. Simms\par
|
|
||||||
Jonathan Jacobs\par
|
|
||||||
Jonathan Lange\par
|
|
||||||
Julian Berman\par
|
|
||||||
J\'fcrgen Hermann\par
|
|
||||||
Kevin Horn\par
|
|
||||||
Kevin Turner\par
|
|
||||||
Laurens Van Houtven\par
|
|
||||||
Mary Gardiner\par
|
|
||||||
Massachusetts Institute of Technology\par
|
|
||||||
Matthew Lefkowitz\par
|
|
||||||
Moshe Zadka\par
|
|
||||||
Paul Swartz\par
|
|
||||||
Pavel Pergamenshchik\par
|
|
||||||
Rackspace, US Inc.\par
|
|
||||||
Ralph Meijer\par
|
|
||||||
Richard Wall\par
|
|
||||||
Sean Riley\par
|
|
||||||
Software Freedom Conservancy\par
|
|
||||||
Tavendo GmbH\par
|
|
||||||
Thijs Triemstra\par
|
|
||||||
Thomas Herve\par
|
|
||||||
Timothy Allen\par
|
|
||||||
Tom Prince\par
|
|
||||||
Travis B. Hartwell\par
|
|
||||||
\par
|
|
||||||
and others that have contributed code to the public domain.\par
|
|
||||||
\par
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining\par
|
|
||||||
a copy of this software and associated documentation files (the\par
|
|
||||||
"Software"), to deal in the Software without restriction, including\par
|
|
||||||
without limitation the rights to use, copy, modify, merge, publish,\par
|
|
||||||
distribute, sublicense, and/or sell copies of the Software, and to\par
|
|
||||||
permit persons to whom the Software is furnished to do so, subject to\par
|
|
||||||
the following conditions:\par
|
|
||||||
\par
|
|
||||||
The above copyright notice and this permission notice shall be\par
|
|
||||||
included in all copies or substantial portions of the Software.\par
|
|
||||||
\b\par
|
|
||||||
qt5reactor\par
|
|
||||||
\par
|
|
||||||
\b0 Copyright (c) 2001-2018\par
|
|
||||||
Allen Short\par
|
|
||||||
Andy Gayton\par
|
|
||||||
Andrew Bennetts\par
|
|
||||||
Antoine Pitrou\par
|
|
||||||
Apple Computer, Inc.\par
|
|
||||||
Ashwini Oruganti\par
|
|
||||||
bakbuk\par
|
|
||||||
Benjamin Bruheim\par
|
|
||||||
Bob Ippolito\par
|
|
||||||
Burak Nehbit\par
|
|
||||||
Canonical Limited\par
|
|
||||||
Christopher Armstrong\par
|
|
||||||
Christopher R. Wood\par
|
|
||||||
David Reid\par
|
|
||||||
Donovan Preston\par
|
|
||||||
Elvis Stansvik\par
|
|
||||||
Eric Mangold\par
|
|
||||||
Eyal Lotem\par
|
|
||||||
Glenn Tarbox\par
|
|
||||||
Google Inc.\par
|
|
||||||
Hybrid Logic Ltd.\par
|
|
||||||
Hynek Schlawack\par
|
|
||||||
Itamar Turner-Trauring\par
|
|
||||||
James Knight\par
|
|
||||||
Jason A. Mobarak\par
|
|
||||||
Jean-Paul Calderone\par
|
|
||||||
Jessica McKellar\par
|
|
||||||
Jonathan Jacobs\par
|
|
||||||
Jonathan Lange\par
|
|
||||||
Jonathan D. Simms\par
|
|
||||||
J\'fcrgen Hermann\par
|
|
||||||
Julian Berman\par
|
|
||||||
Kevin Horn\par
|
|
||||||
Kevin Turner\par
|
|
||||||
Kyle Altendorf\par
|
|
||||||
Laurens Van Houtven\par
|
|
||||||
Mary Gardiner\par
|
|
||||||
Matthew Lefkowitz\par
|
|
||||||
Massachusetts Institute of Technology\par
|
|
||||||
Moshe Zadka\par
|
|
||||||
Paul Swartz\par
|
|
||||||
Pavel Pergamenshchik\par
|
|
||||||
Ralph Meijer\par
|
|
||||||
Richard Wall\par
|
|
||||||
Sean Riley\par
|
|
||||||
Software Freedom Conservancy\par
|
|
||||||
Tarashish Mishra\par
|
|
||||||
Travis B. Hartwell\par
|
|
||||||
Thijs Triemstra\par
|
|
||||||
Thomas Herve\par
|
|
||||||
Timothy Allen\par
|
|
||||||
Tom Prince\par
|
|
||||||
\par
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining\par
|
|
||||||
a copy of this software and associated documentation files (the\par
|
|
||||||
"Software"), to deal in the Software without restriction, including\par
|
|
||||||
without limitation the rights to use, copy, modify, merge, publish,\par
|
|
||||||
distribute, sublicense, and/or sell copies of the Software, and to\par
|
|
||||||
permit persons to whom the Software is furnished to do so, subject to\par
|
|
||||||
the following conditions:\par
|
|
||||||
\par
|
|
||||||
The above copyright notice and this permission notice shall be\par
|
|
||||||
included in all copies or substantial portions of the Software.\par
|
|
||||||
\par
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\par
|
|
||||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\par
|
|
||||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\par
|
|
||||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\par
|
|
||||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\par
|
|
||||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\par
|
|
||||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\b\par
|
|
||||||
\par
|
|
||||||
appnope\par
|
|
||||||
\b0\par
|
|
||||||
Copyright (c) 2013, Min Ragan-Kelley\par
|
|
||||||
\par
|
|
||||||
All rights reserved.\par
|
|
||||||
\par
|
|
||||||
Redistribution and use in source and binary forms, with or without\par
|
|
||||||
modification, are permitted provided that the following conditions are met:\par
|
|
||||||
\par
|
|
||||||
Redistributions of source code must retain the above copyright notice, this\par
|
|
||||||
list of conditions and the following disclaimer.\par
|
|
||||||
\par
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND\par
|
|
||||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\par
|
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\par
|
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE\par
|
|
||||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\par
|
|
||||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\par
|
|
||||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\par
|
|
||||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\par
|
|
||||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\par
|
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\par
|
|
||||||
\par
|
|
||||||
\b py2exe\par
|
|
||||||
\b0\par
|
|
||||||
Copyright (c) 2000-2013 Thomas Heller, Jimmy Retzlaff\par
|
|
||||||
\par
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining\par
|
|
||||||
a copy of this software and associated documentation files (the\par
|
|
||||||
"Software"), to deal in the Software without restriction, including\par
|
|
||||||
without limitation the rights to use, copy, modify, merge, publish,\par
|
|
||||||
distribute, sublicense, and/or sell copies of the Software, and to\par
|
|
||||||
permit persons to whom the Software is furnished to do so, subject to\par
|
|
||||||
the following conditions:\par
|
|
||||||
\par
|
|
||||||
The above copyright notice and this permission notice shall be\par
|
|
||||||
included in all copies or substantial portions of the Software.\par
|
|
||||||
\par
|
|
||||||
\b py2app\par
|
|
||||||
\par
|
|
||||||
\b0 Copyright (c) 2004 Bob Ippolito.\par
|
|
||||||
\par
|
|
||||||
Some parts copyright (c) 2010-2014 Ronald Oussoren\par
|
|
||||||
\par
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\par
|
|
||||||
\par
|
|
||||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\par
|
|
||||||
\par
|
|
||||||
\b dmgbuild\par
|
|
||||||
\par
|
|
||||||
\b0 Copyright (c) 2014 Alastair Houghton\par
|
|
||||||
Copyright (c) 2017 The Qt Company Ltd.\par
|
|
||||||
\par
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy\par
|
|
||||||
of this software and associated documentation files (the "Software"), to deal\par
|
|
||||||
in the Software without restriction, including without limitation the rights\par
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\par
|
|
||||||
copies of the Software, and to permit persons to whom the Software is\par
|
|
||||||
furnished to do so, subject to the following conditions:\par
|
|
||||||
\par
|
|
||||||
The above copyright notice and this permission notice shall be included in\par
|
|
||||||
all copies or substantial portions of the Software.\par
|
|
||||||
\par
|
|
||||||
\b Requests\par
|
|
||||||
\par
|
|
||||||
\b0 Copyright 2018 Kenneth Reitz\par
|
|
||||||
\par
|
|
||||||
Licensed under the Apache License, Version 2.0 (the \ldblquote License\rdblquote ); you may not use this file\par
|
|
||||||
except in compliance with the License. You may obtain a copy of the License at\par
|
|
||||||
\par
|
|
||||||
{{\field{\*\fldinst{HYPERLINK http://www.apache.org/licenses/LICENSE-2.0 }}{\fldrslt{http://www.apache.org/licenses/LICENSE-2.0\ul0\cf0}}}}\f0\fs24\par
|
|
||||||
\par
|
|
||||||
Unless required by applicable law or agreed to in writing, software distributed under the \par
|
|
||||||
License is distributed on an \ldblquote AS IS\rdblquote BASIS, WITHOUT WARRANTIES OR CONDI-\par
|
|
||||||
TIONS OF ANY KIND, either express or implied. See the License for the specific lang-\par
|
|
||||||
uage governing permissions and limitations under the License.\par
|
|
||||||
\par
|
|
||||||
\b mpv-repl\b0\par
|
|
||||||
\par
|
|
||||||
Copyright 2016, James Ross-Gowan\par
|
|
||||||
\par
|
|
||||||
Permission to use, copy, modify, and/or distribute this software for any\par
|
|
||||||
purpose with or without fee is hereby granted, provided that the above\par
|
|
||||||
copyright notice and this permission notice appear in all copies.\par
|
|
||||||
\par
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\par
|
|
||||||
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\par
|
|
||||||
FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\par
|
|
||||||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\par
|
|
||||||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\par
|
|
||||||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\par
|
|
||||||
PERFORMANCE OF THIS SOFTWARE.\par
|
|
||||||
\par
|
|
||||||
\b python-certifi\b0\par
|
|
||||||
\par
|
|
||||||
This Source Code Form is subject to the terms of the Mozilla Public License,\par
|
|
||||||
v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain\par
|
|
||||||
one at {{\field{\*\fldinst{HYPERLINK http://mozilla.org/MPL/2.0/ }}{\fldrslt{http://mozilla.org/MPL/2.0/\ul0\cf0}}}}\f0\fs24 .\par
|
|
||||||
\par
|
|
||||||
\b cffi\b0\par
|
|
||||||
\par
|
|
||||||
|
|
||||||
\pard This package has been mostly done by Armin Rigo with help from\par
|
|
||||||
Maciej Fija\f1\'b3kowski. The idea is heavily based (although not directly\par
|
|
||||||
copied) from LuaJIT ffi by Mike Pall.\par
|
|
||||||
\par
|
|
||||||
Other contributors:\par
|
|
||||||
\par
|
|
||||||
Google Inc.\par
|
|
||||||
|
|
||||||
\pard\tx529\par
|
|
||||||
The MIT License\par
|
|
||||||
\par
|
|
||||||
Permission is hereby granted, free of charge, to any person \par
|
|
||||||
obtaining a copy of this software and associated documentation \par
|
|
||||||
files (the "Software"), to deal in the Software without \par
|
|
||||||
restriction, including without limitation the rights to use, \par
|
|
||||||
copy, modify, merge, publish, distribute, sublicense, and/or \par
|
|
||||||
sell copies of the Software, and to permit persons to whom the \par
|
|
||||||
Software is furnished to do so, subject to the following conditions:\par
|
|
||||||
\par
|
|
||||||
The above copyright notice and this permission notice shall be included \par
|
|
||||||
in all copies or substantial portions of the Software.\par
|
|
||||||
\par
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS \par
|
|
||||||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, \par
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL \par
|
|
||||||
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER \par
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING \par
|
|
||||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER \par
|
|
||||||
DEALINGS IN THE SOFTWARE.\par
|
|
||||||
\par
|
|
||||||
\b service-identity\b0\par
|
|
||||||
\par
|
|
||||||
Copyright (c) 2014 Hynek Schlawack\par
|
|
||||||
\par
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of\par
|
|
||||||
this software and associated documentation files (the "Software"), to deal in\par
|
|
||||||
the Software without restriction, including without limitation the rights to\par
|
|
||||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\par
|
|
||||||
of the Software, and to permit persons to whom the Software is furnished to do\par
|
|
||||||
so, subject to the following conditions:\par
|
|
||||||
\par
|
|
||||||
The above copyright notice and this permission notice shall be included in all\par
|
|
||||||
copies or substantial portions of the Software.\par
|
|
||||||
\par
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\par
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\par
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\par
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\par
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\par
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\par
|
|
||||||
SOFTWARE.\par
|
|
||||||
\par
|
|
||||||
\b pyopenssl\b0\par
|
|
||||||
\par
|
|
||||||
Licensed under the Apache License, Version 2.0 (the \ldblquote License\rdblquote ); you may not use this file\par
|
|
||||||
except in compliance with the License. You may obtain a copy of the License at\par
|
|
||||||
\par
|
|
||||||
{{\field{\*\fldinst{HYPERLINK http://www.apache.org/licenses/LICENSE-2.0 }}{\fldrslt{http://www.apache.org/licenses/LICENSE-2.0\ul0\cf0}}}}\f1\fs24\par
|
|
||||||
\par
|
|
||||||
Unless required by applicable law or agreed to in writing, software distributed under the \par
|
|
||||||
License is distributed on an \ldblquote AS IS\rdblquote BASIS, WITHOUT WARRANTIES OR CONDI-\par
|
|
||||||
TIONS OF ANY KIND, either express or implied. See the License for the specific lang-\par
|
|
||||||
uage governing permissions and limitations under the License.\par
|
|
||||||
\par
|
|
||||||
\b cryptography\b0\par
|
|
||||||
\par
|
|
||||||
Authors listed here: {{\field{\*\fldinst{HYPERLINK https://github.com/pyca/cryptography/blob/master/AUTHORS.rst }}{\fldrslt{https://github.com/pyca/cryptography/blob/master/AUTHORS.rst\ul0\cf0}}}}\f1\fs24\par
|
|
||||||
\par
|
|
||||||
Licensed under the Apache License, Version 2.0 (the \ldblquote License\rdblquote ); you may not use this file\par
|
|
||||||
except in compliance with the License. You may obtain a copy of the License at\par
|
|
||||||
\par
|
|
||||||
{{\field{\*\fldinst{HYPERLINK http://www.apache.org/licenses/LICENSE-2.0 }}{\fldrslt{http://www.apache.org/licenses/LICENSE-2.0\ul0\cf0}}}}\f1\fs24\par
|
|
||||||
\par
|
|
||||||
Unless required by applicable law or agreed to in writing, software distributed under the \par
|
|
||||||
License is distributed on an \ldblquote AS IS\rdblquote BASIS, WITHOUT WARRANTIES OR CONDI-\par
|
|
||||||
TIONS OF ANY KIND, either express or implied. See the License for the specific lang-\par
|
|
||||||
uage governing permissions and limitations under the License.\par
|
|
||||||
\par
|
|
||||||
\b Darkdetect\b0\par
|
|
||||||
\par
|
|
||||||
Copyright (c) 2019, Alberto Sottile\par
|
|
||||||
All rights reserved.\par
|
|
||||||
\par
|
|
||||||
Redistribution and use in source and binary forms, with or without\par
|
|
||||||
modification, are permitted provided that the following conditions are met:\par
|
|
||||||
* Redistributions of source code must retain the above copyright\par
|
|
||||||
notice, this list of conditions and the following disclaimer.\par
|
|
||||||
* Redistributions in binary form must reproduce the above copyright\par
|
|
||||||
notice, this list of conditions and the following disclaimer in the\par
|
|
||||||
documentation and/or other materials provided with the distribution.\par
|
|
||||||
* Neither the name of "darkdetect" nor the\par
|
|
||||||
names of its contributors may be used to endorse or promote products\par
|
|
||||||
derived from this software without specific prior written permission.\par
|
|
||||||
\par
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND\par
|
|
||||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\par
|
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\par
|
|
||||||
DISCLAIMED. IN NO EVENT SHALL "Alberto Sottile" BE LIABLE FOR ANY\par
|
|
||||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\par
|
|
||||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\par
|
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\par
|
|
||||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\par
|
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\par
|
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\par
|
|
||||||
\par
|
|
||||||
\b Python MPV JSONIPC\par
|
|
||||||
\b0\f0\lang2057 Authors listed here: {{\field{\*\fldinst{HYPERLINK https://github.com/iwalton3/python-mpv-jsonipc/ }}{\fldrslt{https://github.com/iwalton3/python-mpv-jsonipc/\ul0\cf0}}}}\f0\fs24 (principal developer Ian Walton / iwalton3)\b\f1\lang9\par
|
|
||||||
\par
|
|
||||||
\b0 Licensed under the Apache License, Version 2.0 (the \ldblquote License\rdblquote ); you may not use this file\par
|
|
||||||
except in compliance with the License. You may obtain a copy of the License at\par
|
|
||||||
\par
|
|
||||||
{{\field{\*\fldinst{HYPERLINK http://www.apache.org/licenses/LICENSE-2.0 }}{\fldrslt{http://www.apache.org/licenses/LICENSE-2.0\ul0\cf0}}}}\f1\fs24\par
|
|
||||||
\par
|
|
||||||
Unless required by applicable law or agreed to in writing, software distributed under the \par
|
|
||||||
License is distributed on an \ldblquote AS IS\rdblquote BASIS, WITHOUT WARRANTIES OR CONDI-\par
|
|
||||||
TIONS OF ANY KIND, either express or implied. See the License for the specific lang-\par
|
|
||||||
uage governing permissions and limitations under the License.\par
|
|
||||||
\b\par
|
|
||||||
\par
|
|
||||||
Icons\par
|
|
||||||
\par
|
|
||||||
\b0 Syncplay uses the following icons and images:\par
|
|
||||||
\par
|
|
||||||
- Silk icon set 1.3\par
|
|
||||||
_________________________________________\par
|
|
||||||
Mark James\par
|
|
||||||
{{\field{\*\fldinst{HYPERLINK http://www.famfamfam.com/lab/icons/silk/ }}{\fldrslt{http://www.famfamfam.com/lab/icons/silk/\ul0\cf0}}}}\f1\fs24\par
|
|
||||||
_________________________________________\par
|
|
||||||
\par
|
|
||||||
This work is licensed under a\par
|
|
||||||
Creative Commons Attribution 2.5 License.\par
|
|
||||||
[ {{\field{\*\fldinst{HYPERLINK http://creativecommons.org/licenses/by/2.5/ }}{\fldrslt{http://creativecommons.org/licenses/by/2.5/\ul0\cf0}}}}\f1\fs24 ]\par
|
|
||||||
\par
|
|
||||||
This means you may use it for any purpose,\par
|
|
||||||
and make any changes you like.\par
|
|
||||||
All I ask is that you include a link back\par
|
|
||||||
to this page in your credits.\par
|
|
||||||
\par
|
|
||||||
Are you using this icon set? Send me an email\par
|
|
||||||
(including a link or picture if available) to\par
|
|
||||||
mjames@gmail.com\par
|
|
||||||
\par
|
|
||||||
Any other questions about this icon set please\par
|
|
||||||
contact mjames@gmail.com\par
|
|
||||||
\par
|
|
||||||
- Silk Companion 1\par
|
|
||||||
\par
|
|
||||||
|
|
||||||
\pard Copyright Damien Guard - CC-BY 3.0\par
|
|
||||||
{{\field{\*\fldinst{HYPERLINK https://damieng.com/creative/icons/silk-companion-1-icons }}{\fldrslt{https://damieng.com/creative/icons/silk-companion-1-icons\ul0\cf0}}}}\f1\fs24\par
|
|
||||||
\par
|
|
||||||
- Padlock free icon\par
|
|
||||||
CC-BY 3.0\par
|
|
||||||
Icon made by Maxim Basinski from {{\field{\*\fldinst{HYPERLINK https://www.flaticon.com/free-icon/padlock_291248 }}{\fldrslt{https://www.flaticon.com/free-icon/padlock_291248\ul0\cf0}}}}\f1\fs24\par
|
|
||||||
\par
|
|
||||||
|
|
||||||
\pard\tx529\par
|
|
||||||
}
|
|
||||||
| |||||||