%global _empty_manifest_terminate_build 0
Name: python-samsungtvws
Version: 2.5.0
Release: 1
Summary: Samsung Smart TV WS API wrapper
License: MIT
URL: https://github.com/xchwarze/samsung-tv-ws-api
Source0: https://mirrors.nju.edu.cn/pypi/web/packages/ca/85/94d3e0675ff626803ec22227963320371760f012294257a41501fd998e8b/samsungtvws-2.5.0.tar.gz
BuildArch: noarch
Requires: python3-websocket-client
Requires: python3-requests
Requires: python3-aiohttp
Requires: python3-websockets
Requires: python3-cryptography
Requires: python3-py3rijndael
%description
Samsung Smart TV WS API wrapper
This project is a library for remote controlling Samsung televisions via a TCP/IP connection.
It currently supports modern (post-2016) TVs with Ethernet or Wi-Fi connectivity. They should be all models with TizenOs.
Based on https://github.com/marysieek/samsung-tv-api work
## Install
```bash
$ pip3 install samsungtvws[async,encrypted]
```
or
```bash
$ pip3 install "git+https://github.com/xchwarze/samsung-tv-ws-api.git#egg=samsungtvws[async,encrypted]"
```
or...!
```bash
$ git clone https://github.com/xchwarze/samsung-tv-ws-api
$ pip3 install "./samsung-tv-ws-api[async,encrypted]"
```
### Extras
`async` is required if you wish to use asynchronous I/O for all communications with the TV (`SamsungTVAsyncRest` and `SamsungTVWSAsyncRemote`)
`encrypted` is required if you wish to communicate with a TV which only support the v1 API (some J and K models) for sending commands (`SamsungTVEncryptedWSAsyncRemote` and `SamsungTVEncryptedWSAsyncAuthenticator`).
## Usage
### Basic
```python
import sys
import os
import logging
import wakeonlan
sys.path.append('../')
from samsungtvws import SamsungTVWS
# Increase debug level
logging.basicConfig(level=logging.INFO)
# Normal constructor
tv = SamsungTVWS('192.168.xxx.xxx')
# Autosave token to file
token_file = os.path.dirname(os.path.realpath(__file__)) + '/tv-token.txt'
tv = SamsungTVWS(host='192.168.xxx.xxx', port=8002, token_file=token_file)
# Toggle power
tv.shortcuts().power()
# Power On
wakeonlan.send_magic_packet('CC:6E:A4:xx:xx:xx')
# Open web in browser
tv.open_browser('https://duckduckgo.com/')
# View installed apps
apps = tv.app_list()
logging.info(apps)
# Open app (Spotify)
tv.run_app('3201606009684')
# Get app status (Spotify)
app = tv.rest_app_status('3201606009684')
logging.info(app)
# Open app (Spotify)
app = tv.rest_app_run('3201606009684')
logging.info(app)
# Close app (Spotify)
app = tv.rest_app_close('3201606009684')
logging.info(app)
# Install from official store (Spotify)
app = tv.rest_app_install('3201606009684')
logging.info(app)
# Get device info (device name, model, supported features..)
info = tv.rest_device_info()
logging.info(info)
```
### Art Mode
TVs that support art mode (such as The Frame) can be controlled as follows:
```python
import sys
import logging
sys.path.append('../')
from samsungtvws import SamsungTVWS
# Increase debug level
logging.basicConfig(level=logging.INFO)
# Normal constructor
tv = SamsungTVWS('192.168.xxx.xxx')
# Is art mode supported?
info = tv.art().supported()
logging.info(info)
# List the art available on the device
info = tv.art().available()
logging.info(info)
# Retrieve information about the currently selected art
info = tv.art().get_current()
logging.info(info)
# Retrieve a thumbnail for a specific piece of art. Returns a JPEG.
thumbnail = tv.art().get_thumbnail('SAM-F0206')
# Set a piece of art
tv.art().select_image('SAM-F0206')
# Set a piece of art, but don't immediately show it if not in art mode
tv.art().select_image('SAM-F0201', show=False)
# Determine whether the TV is currently in art mode
info = tv.art().get_artmode()
logging.info(info)
# Switch art mode on or off
tv.art().set_artmode(True)
tv.art().set_artmode(False)
# Upload a picture
file = open('test.png', 'rb')
data = file.read()
tv.art().upload(data)
# If uploading a JPEG
tv.art().upload(data, file_type='JPEG')
# To set the matte to modern and apricot color
tv.art().upload(data, matte='modern_apricot')
# Delete an uploaded item
tv.art().delete('MY-F0020')
# Delete multiple uploaded items
tv.art().delete_list(['MY-F0020', 'MY-F0021'])
# List available photo filters
info = tv.art().get_photo_filter_list()
logging.info(info)
# Apply a filter to a specific piece of art
tv.art().set_photo_filter('SAM-F0206', 'ink')
```
### Async
Examples are available in the examples folder: `async_remote.py`, `async_rest.py`
### Encrypted API
Examples are available in the examples folder: `encrypted_authenticator.py`, `encrypted_remote.py`
## Supported TVs
List of support TV models. https://developer.samsung.com/smarttv/develop/extension-libraries/smart-view-sdk/supported-device/supported-tvs.html
```
2017 : M5500 and above
2016 : K4300, K5300 and above
2015 : J5500 and above (except J6203)
2014 : H4500, H5500 and above (except H6003/H6103/H6153/H6201/H6203)
Supported TV models may vary by region.
```
For complete list https://developer.samsung.com/smarttv/develop/specifications/tv-model-groups.html
## License
GPL-2.0
%package -n python3-samsungtvws
Summary: Samsung Smart TV WS API wrapper
Provides: python-samsungtvws
BuildRequires: python3-devel
BuildRequires: python3-setuptools
BuildRequires: python3-pip
%description -n python3-samsungtvws
Samsung Smart TV WS API wrapper
This project is a library for remote controlling Samsung televisions via a TCP/IP connection.
It currently supports modern (post-2016) TVs with Ethernet or Wi-Fi connectivity. They should be all models with TizenOs.
Based on https://github.com/marysieek/samsung-tv-api work
## Install
```bash
$ pip3 install samsungtvws[async,encrypted]
```
or
```bash
$ pip3 install "git+https://github.com/xchwarze/samsung-tv-ws-api.git#egg=samsungtvws[async,encrypted]"
```
or...!
```bash
$ git clone https://github.com/xchwarze/samsung-tv-ws-api
$ pip3 install "./samsung-tv-ws-api[async,encrypted]"
```
### Extras
`async` is required if you wish to use asynchronous I/O for all communications with the TV (`SamsungTVAsyncRest` and `SamsungTVWSAsyncRemote`)
`encrypted` is required if you wish to communicate with a TV which only support the v1 API (some J and K models) for sending commands (`SamsungTVEncryptedWSAsyncRemote` and `SamsungTVEncryptedWSAsyncAuthenticator`).
## Usage
### Basic
```python
import sys
import os
import logging
import wakeonlan
sys.path.append('../')
from samsungtvws import SamsungTVWS
# Increase debug level
logging.basicConfig(level=logging.INFO)
# Normal constructor
tv = SamsungTVWS('192.168.xxx.xxx')
# Autosave token to file
token_file = os.path.dirname(os.path.realpath(__file__)) + '/tv-token.txt'
tv = SamsungTVWS(host='192.168.xxx.xxx', port=8002, token_file=token_file)
# Toggle power
tv.shortcuts().power()
# Power On
wakeonlan.send_magic_packet('CC:6E:A4:xx:xx:xx')
# Open web in browser
tv.open_browser('https://duckduckgo.com/')
# View installed apps
apps = tv.app_list()
logging.info(apps)
# Open app (Spotify)
tv.run_app('3201606009684')
# Get app status (Spotify)
app = tv.rest_app_status('3201606009684')
logging.info(app)
# Open app (Spotify)
app = tv.rest_app_run('3201606009684')
logging.info(app)
# Close app (Spotify)
app = tv.rest_app_close('3201606009684')
logging.info(app)
# Install from official store (Spotify)
app = tv.rest_app_install('3201606009684')
logging.info(app)
# Get device info (device name, model, supported features..)
info = tv.rest_device_info()
logging.info(info)
```
### Art Mode
TVs that support art mode (such as The Frame) can be controlled as follows:
```python
import sys
import logging
sys.path.append('../')
from samsungtvws import SamsungTVWS
# Increase debug level
logging.basicConfig(level=logging.INFO)
# Normal constructor
tv = SamsungTVWS('192.168.xxx.xxx')
# Is art mode supported?
info = tv.art().supported()
logging.info(info)
# List the art available on the device
info = tv.art().available()
logging.info(info)
# Retrieve information about the currently selected art
info = tv.art().get_current()
logging.info(info)
# Retrieve a thumbnail for a specific piece of art. Returns a JPEG.
thumbnail = tv.art().get_thumbnail('SAM-F0206')
# Set a piece of art
tv.art().select_image('SAM-F0206')
# Set a piece of art, but don't immediately show it if not in art mode
tv.art().select_image('SAM-F0201', show=False)
# Determine whether the TV is currently in art mode
info = tv.art().get_artmode()
logging.info(info)
# Switch art mode on or off
tv.art().set_artmode(True)
tv.art().set_artmode(False)
# Upload a picture
file = open('test.png', 'rb')
data = file.read()
tv.art().upload(data)
# If uploading a JPEG
tv.art().upload(data, file_type='JPEG')
# To set the matte to modern and apricot color
tv.art().upload(data, matte='modern_apricot')
# Delete an uploaded item
tv.art().delete('MY-F0020')
# Delete multiple uploaded items
tv.art().delete_list(['MY-F0020', 'MY-F0021'])
# List available photo filters
info = tv.art().get_photo_filter_list()
logging.info(info)
# Apply a filter to a specific piece of art
tv.art().set_photo_filter('SAM-F0206', 'ink')
```
### Async
Examples are available in the examples folder: `async_remote.py`, `async_rest.py`
### Encrypted API
Examples are available in the examples folder: `encrypted_authenticator.py`, `encrypted_remote.py`
## Supported TVs
List of support TV models. https://developer.samsung.com/smarttv/develop/extension-libraries/smart-view-sdk/supported-device/supported-tvs.html
```
2017 : M5500 and above
2016 : K4300, K5300 and above
2015 : J5500 and above (except J6203)
2014 : H4500, H5500 and above (except H6003/H6103/H6153/H6201/H6203)
Supported TV models may vary by region.
```
For complete list https://developer.samsung.com/smarttv/develop/specifications/tv-model-groups.html
## License
GPL-2.0
%package help
Summary: Development documents and examples for samsungtvws
Provides: python3-samsungtvws-doc
%description help
Samsung Smart TV WS API wrapper
This project is a library for remote controlling Samsung televisions via a TCP/IP connection.
It currently supports modern (post-2016) TVs with Ethernet or Wi-Fi connectivity. They should be all models with TizenOs.
Based on https://github.com/marysieek/samsung-tv-api work
## Install
```bash
$ pip3 install samsungtvws[async,encrypted]
```
or
```bash
$ pip3 install "git+https://github.com/xchwarze/samsung-tv-ws-api.git#egg=samsungtvws[async,encrypted]"
```
or...!
```bash
$ git clone https://github.com/xchwarze/samsung-tv-ws-api
$ pip3 install "./samsung-tv-ws-api[async,encrypted]"
```
### Extras
`async` is required if you wish to use asynchronous I/O for all communications with the TV (`SamsungTVAsyncRest` and `SamsungTVWSAsyncRemote`)
`encrypted` is required if you wish to communicate with a TV which only support the v1 API (some J and K models) for sending commands (`SamsungTVEncryptedWSAsyncRemote` and `SamsungTVEncryptedWSAsyncAuthenticator`).
## Usage
### Basic
```python
import sys
import os
import logging
import wakeonlan
sys.path.append('../')
from samsungtvws import SamsungTVWS
# Increase debug level
logging.basicConfig(level=logging.INFO)
# Normal constructor
tv = SamsungTVWS('192.168.xxx.xxx')
# Autosave token to file
token_file = os.path.dirname(os.path.realpath(__file__)) + '/tv-token.txt'
tv = SamsungTVWS(host='192.168.xxx.xxx', port=8002, token_file=token_file)
# Toggle power
tv.shortcuts().power()
# Power On
wakeonlan.send_magic_packet('CC:6E:A4:xx:xx:xx')
# Open web in browser
tv.open_browser('https://duckduckgo.com/')
# View installed apps
apps = tv.app_list()
logging.info(apps)
# Open app (Spotify)
tv.run_app('3201606009684')
# Get app status (Spotify)
app = tv.rest_app_status('3201606009684')
logging.info(app)
# Open app (Spotify)
app = tv.rest_app_run('3201606009684')
logging.info(app)
# Close app (Spotify)
app = tv.rest_app_close('3201606009684')
logging.info(app)
# Install from official store (Spotify)
app = tv.rest_app_install('3201606009684')
logging.info(app)
# Get device info (device name, model, supported features..)
info = tv.rest_device_info()
logging.info(info)
```
### Art Mode
TVs that support art mode (such as The Frame) can be controlled as follows:
```python
import sys
import logging
sys.path.append('../')
from samsungtvws import SamsungTVWS
# Increase debug level
logging.basicConfig(level=logging.INFO)
# Normal constructor
tv = SamsungTVWS('192.168.xxx.xxx')
# Is art mode supported?
info = tv.art().supported()
logging.info(info)
# List the art available on the device
info = tv.art().available()
logging.info(info)
# Retrieve information about the currently selected art
info = tv.art().get_current()
logging.info(info)
# Retrieve a thumbnail for a specific piece of art. Returns a JPEG.
thumbnail = tv.art().get_thumbnail('SAM-F0206')
# Set a piece of art
tv.art().select_image('SAM-F0206')
# Set a piece of art, but don't immediately show it if not in art mode
tv.art().select_image('SAM-F0201', show=False)
# Determine whether the TV is currently in art mode
info = tv.art().get_artmode()
logging.info(info)
# Switch art mode on or off
tv.art().set_artmode(True)
tv.art().set_artmode(False)
# Upload a picture
file = open('test.png', 'rb')
data = file.read()
tv.art().upload(data)
# If uploading a JPEG
tv.art().upload(data, file_type='JPEG')
# To set the matte to modern and apricot color
tv.art().upload(data, matte='modern_apricot')
# Delete an uploaded item
tv.art().delete('MY-F0020')
# Delete multiple uploaded items
tv.art().delete_list(['MY-F0020', 'MY-F0021'])
# List available photo filters
info = tv.art().get_photo_filter_list()
logging.info(info)
# Apply a filter to a specific piece of art
tv.art().set_photo_filter('SAM-F0206', 'ink')
```
### Async
Examples are available in the examples folder: `async_remote.py`, `async_rest.py`
### Encrypted API
Examples are available in the examples folder: `encrypted_authenticator.py`, `encrypted_remote.py`
## Supported TVs
List of support TV models. https://developer.samsung.com/smarttv/develop/extension-libraries/smart-view-sdk/supported-device/supported-tvs.html
```
2017 : M5500 and above
2016 : K4300, K5300 and above
2015 : J5500 and above (except J6203)
2014 : H4500, H5500 and above (except H6003/H6103/H6153/H6201/H6203)
Supported TV models may vary by region.
```
For complete list https://developer.samsung.com/smarttv/develop/specifications/tv-model-groups.html
## License
GPL-2.0
%prep
%autosetup -n samsungtvws-2.5.0
%build
%py3_build
%install
%py3_install
install -d -m755 %{buildroot}/%{_pkgdocdir}
if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
pushd %{buildroot}
if [ -d usr/lib ]; then
find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/lib64 ]; then
find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/bin ]; then
find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/sbin ]; then
find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
fi
touch doclist.lst
if [ -d usr/share/man ]; then
find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
fi
popd
mv %{buildroot}/filelist.lst .
mv %{buildroot}/doclist.lst .
%files -n python3-samsungtvws -f filelist.lst
%dir %{python3_sitelib}/*
%files help -f doclist.lst
%{_docdir}/*
%changelog
* Fri May 05 2023 Python_Bot - 2.5.0-1
- Package Spec generated