diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-pylast.spec | 562 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 564 insertions, 0 deletions
@@ -0,0 +1 @@ +/pylast-5.1.0.tar.gz diff --git a/python-pylast.spec b/python-pylast.spec new file mode 100644 index 0000000..9cc06c3 --- /dev/null +++ b/python-pylast.spec @@ -0,0 +1,562 @@ +%global _empty_manifest_terminate_build 0 +Name: python-pylast +Version: 5.1.0 +Release: 1 +Summary: A Python interface to Last.fm and Libre.fm +License: Apache-2.0 +URL: https://github.com/pylast/pylast +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/cf/2e/6e6bf26d26a2f3b8c66ddb617a854a3ca933f9ef028b1e7f7f962c0ed1c3/pylast-5.1.0.tar.gz +BuildArch: noarch + +Requires: python3-httpx +Requires: python3-importlib-metadata +Requires: python3-flaky +Requires: python3-pytest +Requires: python3-pytest-cov +Requires: python3-pytest-random-order +Requires: python3-pyyaml + +%description +# pyLast + +[](https://pypi.org/project/pylast/) +[](https://pypi.org/project/pylast/) +[](https://pypistats.org/packages/pylast) +[](https://github.com/pylast/pylast/actions) +[](https://codecov.io/gh/pylast/pylast) +[](https://github.com/psf/black) +[](https://zenodo.org/badge/latestdoi/7803088) + +A Python interface to [Last.fm](https://www.last.fm/) and other API-compatible websites +such as [Libre.fm](https://libre.fm/). + +Use the pydoc utility for help on usage or see [tests/](tests/) for examples. + +## Installation + +Install via pip: + +```sh +python3 -m pip install pylast +``` + +Install latest development version: + +```sh +python3 -m pip install -U git+https://github.com/pylast/pylast +``` + +Or from requirements.txt: + +```txt +-e https://github.com/pylast/pylast.git#egg=pylast +``` + +Note: + +* pyLast 5.1+ supports Python 3.7-3.11. +* pyLast 5.0+ supports Python 3.7-3.10. +* pyLast 4.3+ supports Python 3.6-3.10. +* pyLast 4.0 - 4.2 supports Python 3.6-3.9. +* pyLast 3.2 - 3.3 supports Python 3.5-3.8. +* pyLast 3.0 - 3.1 supports Python 3.5-3.7. +* pyLast 2.2 - 2.4 supports Python 2.7.10+, 3.4-3.7. +* pyLast 2.0 - 2.1 supports Python 2.7.10+, 3.4-3.6. +* pyLast 1.7 - 1.9 supports Python 2.7, 3.3-3.6. +* pyLast 1.0 - 1.6 supports Python 2.7, 3.3-3.4. +* pyLast 0.5 supports Python 2, 3. +* pyLast < 0.5 supports Python 2. + +## Features + + * Simple public interface. + * Access to all the data exposed by the Last.fm web services. + * Scrobbling support. + * Full object-oriented design. + * Proxy support. + * Internal caching support for some web services calls (disabled by default). + * Support for other API-compatible networks like Libre.fm. + + +## Getting started + +Here's some simple code example to get you started. In order to create any object from +pyLast, you need a `Network` object which represents a social music network that is +Last.fm or any other API-compatible one. You can obtain a pre-configured one for Last.fm +and use it as follows: + +```python +import pylast + +# You have to have your own unique two values for API_KEY and API_SECRET +# Obtain yours from https://www.last.fm/api/account/create for Last.fm +API_KEY = "b25b959554ed76058ac220b7b2e0a026" # this is a sample key +API_SECRET = "425b55975eed76058ac220b7b4e8a054" + +# In order to perform a write operation you need to authenticate yourself +username = "your_user_name" +password_hash = pylast.md5("your_password") + +network = pylast.LastFMNetwork( + api_key=API_KEY, + api_secret=API_SECRET, + username=username, + password_hash=password_hash, +) + +# Now you can use that object everywhere +track = network.get_track("Iron Maiden", "The Nomad") +track.love() +track.add_tags(("awesome", "favorite")) + +# Type help(pylast.LastFMNetwork) or help(pylast) in a Python interpreter +# to get more help about anything and see examples of how it works +``` + +More examples in +<a href="https://github.com/hugovk/lastfm-tools">hugovk/lastfm-tools</a> and +[tests/](https://github.com/pylast/pylast/tree/main/tests). + +## Testing + +The [tests/](https://github.com/pylast/pylast/tree/main/tests) directory contains +integration and unit tests with Last.fm, and plenty of code examples. + +For integration tests you need a test account at Last.fm that will become cluttered with +test data, and an API key and secret. Either copy +[example_test_pylast.yaml](example_test_pylast.yaml) to test_pylast.yaml and fill out +the credentials, or set them as environment variables like: + +```sh +export PYLAST_USERNAME=TODO_ENTER_YOURS_HERE +export PYLAST_PASSWORD_HASH=TODO_ENTER_YOURS_HERE +export PYLAST_API_KEY=TODO_ENTER_YOURS_HERE +export PYLAST_API_SECRET=TODO_ENTER_YOURS_HERE +``` + +To run all unit and integration tests: + +```sh +python3 -m pip install -e ".[tests]" +pytest +``` + +Or run just one test case: + +```sh +pytest -k test_scrobble +``` + +To run with coverage: + +```sh +pytest -v --cov pylast --cov-report term-missing +coverage report # for command-line report +coverage html # for HTML report +open htmlcov/index.html +``` + +## Logging + +To enable from your own code: + +```python +import logging +import pylast + +logging.basicConfig(level=logging.INFO) + + +network = pylast.LastFMNetwork(...) +``` + +To enable from pytest: + +```sh +pytest --log-cli-level info -k test_album_search_images +``` + +To also see data returned from the API, use `level=logging.DEBUG` or +`--log-cli-level debug` instead. + + +%package -n python3-pylast +Summary: A Python interface to Last.fm and Libre.fm +Provides: python-pylast +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-pylast +# pyLast + +[](https://pypi.org/project/pylast/) +[](https://pypi.org/project/pylast/) +[](https://pypistats.org/packages/pylast) +[](https://github.com/pylast/pylast/actions) +[](https://codecov.io/gh/pylast/pylast) +[](https://github.com/psf/black) +[](https://zenodo.org/badge/latestdoi/7803088) + +A Python interface to [Last.fm](https://www.last.fm/) and other API-compatible websites +such as [Libre.fm](https://libre.fm/). + +Use the pydoc utility for help on usage or see [tests/](tests/) for examples. + +## Installation + +Install via pip: + +```sh +python3 -m pip install pylast +``` + +Install latest development version: + +```sh +python3 -m pip install -U git+https://github.com/pylast/pylast +``` + +Or from requirements.txt: + +```txt +-e https://github.com/pylast/pylast.git#egg=pylast +``` + +Note: + +* pyLast 5.1+ supports Python 3.7-3.11. +* pyLast 5.0+ supports Python 3.7-3.10. +* pyLast 4.3+ supports Python 3.6-3.10. +* pyLast 4.0 - 4.2 supports Python 3.6-3.9. +* pyLast 3.2 - 3.3 supports Python 3.5-3.8. +* pyLast 3.0 - 3.1 supports Python 3.5-3.7. +* pyLast 2.2 - 2.4 supports Python 2.7.10+, 3.4-3.7. +* pyLast 2.0 - 2.1 supports Python 2.7.10+, 3.4-3.6. +* pyLast 1.7 - 1.9 supports Python 2.7, 3.3-3.6. +* pyLast 1.0 - 1.6 supports Python 2.7, 3.3-3.4. +* pyLast 0.5 supports Python 2, 3. +* pyLast < 0.5 supports Python 2. + +## Features + + * Simple public interface. + * Access to all the data exposed by the Last.fm web services. + * Scrobbling support. + * Full object-oriented design. + * Proxy support. + * Internal caching support for some web services calls (disabled by default). + * Support for other API-compatible networks like Libre.fm. + + +## Getting started + +Here's some simple code example to get you started. In order to create any object from +pyLast, you need a `Network` object which represents a social music network that is +Last.fm or any other API-compatible one. You can obtain a pre-configured one for Last.fm +and use it as follows: + +```python +import pylast + +# You have to have your own unique two values for API_KEY and API_SECRET +# Obtain yours from https://www.last.fm/api/account/create for Last.fm +API_KEY = "b25b959554ed76058ac220b7b2e0a026" # this is a sample key +API_SECRET = "425b55975eed76058ac220b7b4e8a054" + +# In order to perform a write operation you need to authenticate yourself +username = "your_user_name" +password_hash = pylast.md5("your_password") + +network = pylast.LastFMNetwork( + api_key=API_KEY, + api_secret=API_SECRET, + username=username, + password_hash=password_hash, +) + +# Now you can use that object everywhere +track = network.get_track("Iron Maiden", "The Nomad") +track.love() +track.add_tags(("awesome", "favorite")) + +# Type help(pylast.LastFMNetwork) or help(pylast) in a Python interpreter +# to get more help about anything and see examples of how it works +``` + +More examples in +<a href="https://github.com/hugovk/lastfm-tools">hugovk/lastfm-tools</a> and +[tests/](https://github.com/pylast/pylast/tree/main/tests). + +## Testing + +The [tests/](https://github.com/pylast/pylast/tree/main/tests) directory contains +integration and unit tests with Last.fm, and plenty of code examples. + +For integration tests you need a test account at Last.fm that will become cluttered with +test data, and an API key and secret. Either copy +[example_test_pylast.yaml](example_test_pylast.yaml) to test_pylast.yaml and fill out +the credentials, or set them as environment variables like: + +```sh +export PYLAST_USERNAME=TODO_ENTER_YOURS_HERE +export PYLAST_PASSWORD_HASH=TODO_ENTER_YOURS_HERE +export PYLAST_API_KEY=TODO_ENTER_YOURS_HERE +export PYLAST_API_SECRET=TODO_ENTER_YOURS_HERE +``` + +To run all unit and integration tests: + +```sh +python3 -m pip install -e ".[tests]" +pytest +``` + +Or run just one test case: + +```sh +pytest -k test_scrobble +``` + +To run with coverage: + +```sh +pytest -v --cov pylast --cov-report term-missing +coverage report # for command-line report +coverage html # for HTML report +open htmlcov/index.html +``` + +## Logging + +To enable from your own code: + +```python +import logging +import pylast + +logging.basicConfig(level=logging.INFO) + + +network = pylast.LastFMNetwork(...) +``` + +To enable from pytest: + +```sh +pytest --log-cli-level info -k test_album_search_images +``` + +To also see data returned from the API, use `level=logging.DEBUG` or +`--log-cli-level debug` instead. + + +%package help +Summary: Development documents and examples for pylast +Provides: python3-pylast-doc +%description help +# pyLast + +[](https://pypi.org/project/pylast/) +[](https://pypi.org/project/pylast/) +[](https://pypistats.org/packages/pylast) +[](https://github.com/pylast/pylast/actions) +[](https://codecov.io/gh/pylast/pylast) +[](https://github.com/psf/black) +[](https://zenodo.org/badge/latestdoi/7803088) + +A Python interface to [Last.fm](https://www.last.fm/) and other API-compatible websites +such as [Libre.fm](https://libre.fm/). + +Use the pydoc utility for help on usage or see [tests/](tests/) for examples. + +## Installation + +Install via pip: + +```sh +python3 -m pip install pylast +``` + +Install latest development version: + +```sh +python3 -m pip install -U git+https://github.com/pylast/pylast +``` + +Or from requirements.txt: + +```txt +-e https://github.com/pylast/pylast.git#egg=pylast +``` + +Note: + +* pyLast 5.1+ supports Python 3.7-3.11. +* pyLast 5.0+ supports Python 3.7-3.10. +* pyLast 4.3+ supports Python 3.6-3.10. +* pyLast 4.0 - 4.2 supports Python 3.6-3.9. +* pyLast 3.2 - 3.3 supports Python 3.5-3.8. +* pyLast 3.0 - 3.1 supports Python 3.5-3.7. +* pyLast 2.2 - 2.4 supports Python 2.7.10+, 3.4-3.7. +* pyLast 2.0 - 2.1 supports Python 2.7.10+, 3.4-3.6. +* pyLast 1.7 - 1.9 supports Python 2.7, 3.3-3.6. +* pyLast 1.0 - 1.6 supports Python 2.7, 3.3-3.4. +* pyLast 0.5 supports Python 2, 3. +* pyLast < 0.5 supports Python 2. + +## Features + + * Simple public interface. + * Access to all the data exposed by the Last.fm web services. + * Scrobbling support. + * Full object-oriented design. + * Proxy support. + * Internal caching support for some web services calls (disabled by default). + * Support for other API-compatible networks like Libre.fm. + + +## Getting started + +Here's some simple code example to get you started. In order to create any object from +pyLast, you need a `Network` object which represents a social music network that is +Last.fm or any other API-compatible one. You can obtain a pre-configured one for Last.fm +and use it as follows: + +```python +import pylast + +# You have to have your own unique two values for API_KEY and API_SECRET +# Obtain yours from https://www.last.fm/api/account/create for Last.fm +API_KEY = "b25b959554ed76058ac220b7b2e0a026" # this is a sample key +API_SECRET = "425b55975eed76058ac220b7b4e8a054" + +# In order to perform a write operation you need to authenticate yourself +username = "your_user_name" +password_hash = pylast.md5("your_password") + +network = pylast.LastFMNetwork( + api_key=API_KEY, + api_secret=API_SECRET, + username=username, + password_hash=password_hash, +) + +# Now you can use that object everywhere +track = network.get_track("Iron Maiden", "The Nomad") +track.love() +track.add_tags(("awesome", "favorite")) + +# Type help(pylast.LastFMNetwork) or help(pylast) in a Python interpreter +# to get more help about anything and see examples of how it works +``` + +More examples in +<a href="https://github.com/hugovk/lastfm-tools">hugovk/lastfm-tools</a> and +[tests/](https://github.com/pylast/pylast/tree/main/tests). + +## Testing + +The [tests/](https://github.com/pylast/pylast/tree/main/tests) directory contains +integration and unit tests with Last.fm, and plenty of code examples. + +For integration tests you need a test account at Last.fm that will become cluttered with +test data, and an API key and secret. Either copy +[example_test_pylast.yaml](example_test_pylast.yaml) to test_pylast.yaml and fill out +the credentials, or set them as environment variables like: + +```sh +export PYLAST_USERNAME=TODO_ENTER_YOURS_HERE +export PYLAST_PASSWORD_HASH=TODO_ENTER_YOURS_HERE +export PYLAST_API_KEY=TODO_ENTER_YOURS_HERE +export PYLAST_API_SECRET=TODO_ENTER_YOURS_HERE +``` + +To run all unit and integration tests: + +```sh +python3 -m pip install -e ".[tests]" +pytest +``` + +Or run just one test case: + +```sh +pytest -k test_scrobble +``` + +To run with coverage: + +```sh +pytest -v --cov pylast --cov-report term-missing +coverage report # for command-line report +coverage html # for HTML report +open htmlcov/index.html +``` + +## Logging + +To enable from your own code: + +```python +import logging +import pylast + +logging.basicConfig(level=logging.INFO) + + +network = pylast.LastFMNetwork(...) +``` + +To enable from pytest: + +```sh +pytest --log-cli-level info -k test_album_search_images +``` + +To also see data returned from the API, use `level=logging.DEBUG` or +`--log-cli-level debug` instead. + + +%prep +%autosetup -n pylast-5.1.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-pylast -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Thu Mar 09 2023 Python_Bot <Python_Bot@openeuler.org> - 5.1.0-1 +- Package Spec generated @@ -0,0 +1 @@ +4682873efce8ca68e93d5d39d91f5681 pylast-5.1.0.tar.gz |