%global _empty_manifest_terminate_build 0 Name: python-reader Version: 3.5 Release: 1 Summary: A Python feed reader library. License: BSD-3-Clause URL: https://github.com/lemon24/reader Source0: https://mirrors.nju.edu.cn/pypi/web/packages/76/90/3f0bae14beb5f82e2896b1c5f742ee164d1438934b55c3f32115e31e7b91/reader-3.5.tar.gz BuildArch: noarch Requires: python3-typing-extensions Requires: python3-feedparser Requires: python3-requests Requires: python3-iso8601 Requires: python3-beautifulsoup4 Requires: python3-flask Requires: python3-humanize Requires: python3-PyYAML Requires: python3-click Requires: python3-PyYAML Requires: python3-reader[app,cli,docs,tests,unstable-plugins] Requires: python3-tox Requires: python3-pre-commit Requires: python3-build Requires: python3-twine Requires: python3-sphinx Requires: python3-sphinx-rtd-theme Requires: python3-click Requires: python3-sphinx-click Requires: python3-sphinx-issues Requires: python3-sphinx-hoverxref Requires: python3-sphinxcontrib-log-cabinet Requires: python3-setuptools Requires: python3-pytest Requires: python3-pytest-randomly Requires: python3-pytest-subtests Requires: python3-flaky Requires: python3-coverage Requires: python3-pytest-cov Requires: python3-requests-mock Requires: python3-mechanicalsoup Requires: python3-requests-wsgi-adapter Requires: python3-lxml Requires: python3-html5lib Requires: python3-werkzeug Requires: python3-types-requests Requires: python3-mypy Requires: python3-requests Requires: python3-mutagen Requires: python3-beautifulsoup4 Requires: python3-blinker Requires: python3-tweepy Requires: python3-Jinja2 %description .. begin-intro **reader** is a Python feed reader library. It is designed to allow writing feed reader applications without any business code, and without depending on a particular framework. .. end-intro |build-status-github| |code-coverage| |documentation-status| |pypi-status| |type-checking| |code-style| .. |build-status-github| image:: https://github.com/lemon24/reader/workflows/build/badge.svg :target: https://github.com/lemon24/reader/actions?query=workflow%3Abuild :alt: build status (GitHub Actions) .. |code-coverage| image:: https://codecov.io/github/lemon24/reader/coverage.svg?branch=master :target: https://codecov.io/github/lemon24/reader?branch=master :alt: code coverage .. |documentation-status| image:: https://readthedocs.org/projects/reader/badge/?version=latest&style=flat :target: https://reader.readthedocs.io/en/latest/?badge=latest :alt: documentation status .. |pypi-status| image:: https://img.shields.io/pypi/v/reader.svg :target: https://pypi.python.org/pypi/reader :alt: PyPI status .. |type-checking| image:: http://www.mypy-lang.org/static/mypy_badge.svg :target: http://mypy-lang.org/ :alt: checked with mypy .. |code-style| image:: https://img.shields.io/badge/code%20style-black-000000.svg :target: https://github.com/psf/black :alt: code style: black .. begin-features *reader* allows you to: * retrieve, store, and manage **Atom**, **RSS**, and **JSON** feeds * and even follow **Twitter** accounts * mark articles as read or important * add arbitrary tags/metadata to feeds and articles * filter feeds and articles * full-text search articles * get statistics on feed and user activity * write plugins to extend its functionality * skip all the low level stuff and focus on what makes your feed reader different ...all these with: * a stable, clearly documented API * excellent test coverage * fully typed Python What *reader* doesn't do: * provide an UI * provide a REST API (yet) * depend on a web framework * have an opinion of how/where you use it The following exist, but are optional (and frankly, a bit unpolished): * a minimal web interface * that works even with text-only browsers * with automatic tag fixing for podcasts (MP3 enclosures) * a command-line interface .. end-features Documentation: `reader.readthedocs.io`_ .. _reader.readthedocs.io: https://reader.readthedocs.io/ Usage: .. begin-usage .. code-block:: bash $ pip install reader .. code-block:: python >>> from reader import make_reader >>> >>> reader = make_reader('db.sqlite') >>> reader.add_feed('http://www.hellointernet.fm/podcast?format=rss') >>> reader.update_feeds() >>> >>> entries = list(reader.get_entries()) >>> [e.title for e in entries] ['H.I. #108: Project Cyclops', 'H.I. #107: One Year of Weird', ...] >>> >>> reader.mark_entry_as_read(entries[0]) >>> >>> [e.title for e in reader.get_entries(read=False)] ['H.I. #107: One Year of Weird', 'H.I. #106: Water on Mars', ...] >>> [e.title for e in reader.get_entries(read=True)] ['H.I. #108: Project Cyclops'] >>> >>> reader.update_search() >>> >>> for e in reader.search_entries('year', limit=3): ... title = e.metadata.get('.title') ... print(title.value, title.highlights) ... H.I. #107: One Year of Weird (slice(15, 19, None),) H.I. #52: 20,000 Years of Torment (slice(17, 22, None),) H.I. #83: The Best Kind of Prison () .. end-usage %package -n python3-reader Summary: A Python feed reader library. Provides: python-reader BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-reader .. begin-intro **reader** is a Python feed reader library. It is designed to allow writing feed reader applications without any business code, and without depending on a particular framework. .. end-intro |build-status-github| |code-coverage| |documentation-status| |pypi-status| |type-checking| |code-style| .. |build-status-github| image:: https://github.com/lemon24/reader/workflows/build/badge.svg :target: https://github.com/lemon24/reader/actions?query=workflow%3Abuild :alt: build status (GitHub Actions) .. |code-coverage| image:: https://codecov.io/github/lemon24/reader/coverage.svg?branch=master :target: https://codecov.io/github/lemon24/reader?branch=master :alt: code coverage .. |documentation-status| image:: https://readthedocs.org/projects/reader/badge/?version=latest&style=flat :target: https://reader.readthedocs.io/en/latest/?badge=latest :alt: documentation status .. |pypi-status| image:: https://img.shields.io/pypi/v/reader.svg :target: https://pypi.python.org/pypi/reader :alt: PyPI status .. |type-checking| image:: http://www.mypy-lang.org/static/mypy_badge.svg :target: http://mypy-lang.org/ :alt: checked with mypy .. |code-style| image:: https://img.shields.io/badge/code%20style-black-000000.svg :target: https://github.com/psf/black :alt: code style: black .. begin-features *reader* allows you to: * retrieve, store, and manage **Atom**, **RSS**, and **JSON** feeds * and even follow **Twitter** accounts * mark articles as read or important * add arbitrary tags/metadata to feeds and articles * filter feeds and articles * full-text search articles * get statistics on feed and user activity * write plugins to extend its functionality * skip all the low level stuff and focus on what makes your feed reader different ...all these with: * a stable, clearly documented API * excellent test coverage * fully typed Python What *reader* doesn't do: * provide an UI * provide a REST API (yet) * depend on a web framework * have an opinion of how/where you use it The following exist, but are optional (and frankly, a bit unpolished): * a minimal web interface * that works even with text-only browsers * with automatic tag fixing for podcasts (MP3 enclosures) * a command-line interface .. end-features Documentation: `reader.readthedocs.io`_ .. _reader.readthedocs.io: https://reader.readthedocs.io/ Usage: .. begin-usage .. code-block:: bash $ pip install reader .. code-block:: python >>> from reader import make_reader >>> >>> reader = make_reader('db.sqlite') >>> reader.add_feed('http://www.hellointernet.fm/podcast?format=rss') >>> reader.update_feeds() >>> >>> entries = list(reader.get_entries()) >>> [e.title for e in entries] ['H.I. #108: Project Cyclops', 'H.I. #107: One Year of Weird', ...] >>> >>> reader.mark_entry_as_read(entries[0]) >>> >>> [e.title for e in reader.get_entries(read=False)] ['H.I. #107: One Year of Weird', 'H.I. #106: Water on Mars', ...] >>> [e.title for e in reader.get_entries(read=True)] ['H.I. #108: Project Cyclops'] >>> >>> reader.update_search() >>> >>> for e in reader.search_entries('year', limit=3): ... title = e.metadata.get('.title') ... print(title.value, title.highlights) ... H.I. #107: One Year of Weird (slice(15, 19, None),) H.I. #52: 20,000 Years of Torment (slice(17, 22, None),) H.I. #83: The Best Kind of Prison () .. end-usage %package help Summary: Development documents and examples for reader Provides: python3-reader-doc %description help .. begin-intro **reader** is a Python feed reader library. It is designed to allow writing feed reader applications without any business code, and without depending on a particular framework. .. end-intro |build-status-github| |code-coverage| |documentation-status| |pypi-status| |type-checking| |code-style| .. |build-status-github| image:: https://github.com/lemon24/reader/workflows/build/badge.svg :target: https://github.com/lemon24/reader/actions?query=workflow%3Abuild :alt: build status (GitHub Actions) .. |code-coverage| image:: https://codecov.io/github/lemon24/reader/coverage.svg?branch=master :target: https://codecov.io/github/lemon24/reader?branch=master :alt: code coverage .. |documentation-status| image:: https://readthedocs.org/projects/reader/badge/?version=latest&style=flat :target: https://reader.readthedocs.io/en/latest/?badge=latest :alt: documentation status .. |pypi-status| image:: https://img.shields.io/pypi/v/reader.svg :target: https://pypi.python.org/pypi/reader :alt: PyPI status .. |type-checking| image:: http://www.mypy-lang.org/static/mypy_badge.svg :target: http://mypy-lang.org/ :alt: checked with mypy .. |code-style| image:: https://img.shields.io/badge/code%20style-black-000000.svg :target: https://github.com/psf/black :alt: code style: black .. begin-features *reader* allows you to: * retrieve, store, and manage **Atom**, **RSS**, and **JSON** feeds * and even follow **Twitter** accounts * mark articles as read or important * add arbitrary tags/metadata to feeds and articles * filter feeds and articles * full-text search articles * get statistics on feed and user activity * write plugins to extend its functionality * skip all the low level stuff and focus on what makes your feed reader different ...all these with: * a stable, clearly documented API * excellent test coverage * fully typed Python What *reader* doesn't do: * provide an UI * provide a REST API (yet) * depend on a web framework * have an opinion of how/where you use it The following exist, but are optional (and frankly, a bit unpolished): * a minimal web interface * that works even with text-only browsers * with automatic tag fixing for podcasts (MP3 enclosures) * a command-line interface .. end-features Documentation: `reader.readthedocs.io`_ .. _reader.readthedocs.io: https://reader.readthedocs.io/ Usage: .. begin-usage .. code-block:: bash $ pip install reader .. code-block:: python >>> from reader import make_reader >>> >>> reader = make_reader('db.sqlite') >>> reader.add_feed('http://www.hellointernet.fm/podcast?format=rss') >>> reader.update_feeds() >>> >>> entries = list(reader.get_entries()) >>> [e.title for e in entries] ['H.I. #108: Project Cyclops', 'H.I. #107: One Year of Weird', ...] >>> >>> reader.mark_entry_as_read(entries[0]) >>> >>> [e.title for e in reader.get_entries(read=False)] ['H.I. #107: One Year of Weird', 'H.I. #106: Water on Mars', ...] >>> [e.title for e in reader.get_entries(read=True)] ['H.I. #108: Project Cyclops'] >>> >>> reader.update_search() >>> >>> for e in reader.search_entries('year', limit=3): ... title = e.metadata.get('.title') ... print(title.value, title.highlights) ... H.I. #107: One Year of Weird (slice(15, 19, None),) H.I. #52: 20,000 Years of Torment (slice(17, 22, None),) H.I. #83: The Best Kind of Prison () .. end-usage %prep %autosetup -n reader-3.5 %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-reader -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Fri May 05 2023 Python_Bot - 3.5-1 - Package Spec generated