# *ATTENTION* - Anna's Archive enforces web scraping blocks through Cloudflare. The site is also subject to change. The `ebook` command may return `No Search Results` found. A fix is in the works that may involve a new project and archiving this one. A long term solution is [hosting an instance of Anna's Archive](https://annas-software.org/AnnaArchivist/annas-archive) with [community support](https://chrisdixononcode.dev/support) or possibly creating a cli by forking the main repo and building an api.
<div align="center">
<h1>GetDat</h1>
<p><i>A command line utility for getting resources available online</i></p>
<img
src="{{ 'assets/images/getdat-logo.png' }}"
alt="GetDat Package Logo"
height="400"
/>
<p align="center">
<a href="https://iv.ggtyler.dev/watch?v=4b8P8cqc-UQ" target="_blank">
GetDat Theme Music
</a>
</p>
</div>
<div class="flex flex-row justify-between flex-wrap">
<a href="https://pypi.org/project/getdat/" alt="Link to PyPi package homepage">
<img class="p-2" alt="PyPI - Downloads" src="https://img.shields.io/pypi/dw/getdat?logo=pypi">
</a>
<a href="https://github.com/Audiosutras/getdat/actions/workflows/ci.yml?query=branch=master" alt="Link to CI jobs for master branch">
<img class="p-2" alt="CI" src="https://github.com/Audiosutras/getdat/actions/workflows/ci.yml/badge.svg?branch=master">
</a>
<a href="https://github.com/Audiosutras/getdat" alt="Link to Github Issues">
<img alt="GitHub issues" src="https://img.shields.io/github/issues/Audiosutras/getdat">
</a>
</div>
Table of Contents
- [Installation Methods](#installation-methods)
- [Commands](#commands)
- [Local Development](#local-development)
- [Deployment](#deployment)
- [Publishing Getdat](#publishing-getdat)
- [Publishing Docs](#publishing-docs)
- [Contributors](#contributors)
## Installation Methods
PYPI - Stable Release:
```bash
-> pipx install getdat
```
From Head commit of Repository:
```bash
-> pipx install git+https://github.com/Audiosutras/getdat.git
```
## Commands
### Job
Launches [Braintrust](https://bit.ly/braintrust-gigs-talent-search), the job board powered by blockchain, in your default browser
### Sport
Launches [Totalsportk](https://www.totalsportk.org/) in your default browser
### Cinema
Launches [movie-web.app](https://movie-web.app/search/movie) in your default browser
<div align="center" class="gif-image">
<img
src="{{ 'assets/images/getdat-cinema.gif' | relative_url }}"
alt="Gif of GetDat Cinema Command In Action"
/>
</div>
```bash
-> getdat cinema
```
### Ebook
Search and download an ebook available through [Anna's Archive](https://annas-archive.org/). You can think of this command as "headless" Anna's Archive
<div align="center" class="gif-image">
<img
src="{{ 'assets/images/getdat-ebook.gif' | relative_url }}"
alt="Gif of GetDat Ebook Command In Action"
style="border: red"
/>
</div>
* The demo for this command downloaded an epub format of Robert Louis Stevenson's and N.C. Wyeth's book *Treasure Island*. This book is in the public domain.
* The demo for this command opens the downloaded ebook using [epr](https://github.com/wustho/epr), a terminal epub reader to show the contents of the downloaded book. You can expect higher ebook quality by using a desktop e-reader like [librum](https://librumreader.com/)
* Anna's Archive `SciDB` search is not yet supported.
```bash
-> getdat ebook [OPTIONS] [Q]
```
#### ARGUMENTS
| Name | Help |
|------|------|
| Q | Search |
Example:
```bash
-> getdat ebook "Treasure Island Stevenson"
```
or
```bash
-> getdat ebook Treasure Island Stevenson
```
#### OPTIONS
```bash
-> getdat ebook --help
Usage: getdat ebook [OPTIONS] [Q]...
Search and download an ebook available through Anna's Archive
ex: getdat ebook <Search>
Options:
-o, --output_dir TEXT Path to ebook's output directory from home
directory. Path must be prefixed by '~' on
Unix or '~user' on Windows. This argument
overrides GETDAT_BOOK_DIR env var if set.
Outputs book to working directory if neither
are set.
-e, --ext [pdf|epub|mobi|cbr|cbz|fb2|fb2.zip|azw3|djvu]
Preferred ebook extension for ebooks in
search results.
-l, --lang TEXT Preferred language of ebooks in search
results. Provided Language must be ISO 639-1
format. Language region extension supported.
Filtering by multiple languages supported.
Examples: English - en, Spanish - es,
Traditional Chinese - zh-Hant, Multiple
Langauges - en,es,zh-Hant
-i, --instance [org|gs|se] The instance of Anna's Archive you would
like to use for your search: https://annas-
archive.org, https://annas-archive.gs,
https://annas-archive.se - Default: org
--help Show this message and exit.
```
Example:
```bash
-> getdat ebook Treasure Island Stevenson --ext=epub --output_dir=~/books/epub/ --instance=gs --lang=en,es,zh-Hant
```
or
```bash
-> getdat ebook "Treasure Island Stevenson" -e epub -o ~/books/epub -i gs -l es
```
or
```bash
-> getdat ebook "Treasure Island Stevenson"
```
#### Environment Variable
- `GETDAT_BOOK_DIR` - Path from home directory to destination directory. Ignored if `--output_dir` is specified as an [option](#options)
## Local Development
Python Version: `3.11`. To install python on MacOS & Debian-based systems
```bash
-> sudo apt install software-properties-common
-> sudo add-apt-repository ppa:deadsnakes/ppa
-> sudo apt update
-> sudo apt install python3.11
```
This python package uses [poetry](https://python-poetry.org/docs/) for dependency management. To install:
```bash
# install pipx if you have not already
-> python3 -m pip install --user pipx
-> python3 -m pipx ensurepath
# install poetry
-> pipx install poetry
```
Assuming that you have *forked the repository* and have a copy on your local machine. Within the `getdat` directory, install dependencies and open a `virtualenv` shell managed by poetry.
```bash
-> poetry install
-> poetry shell
(getdat-py3.11) ->
```
To run/develop the cli program.
```bash
(getdat-py3.11) -> getdat
Usage: getdat [OPTIONS] COMMAND [ARGS]...
A command line utility for getting resources available online
Options:
--help Show this message and exit.
Commands:
cinema Launches movie-web.app in your default browser
ebook Search and download an ebook available through Anna's Archive...
Check out our docs at https://github.com/Audiosutras/getdat/docs for more
details
```
Project uses [pytest](https://docs.pytest.org/en/7.4.x/) for unit testing. Test run quickly with the help of [pytest-mock](https://pytest-mock.readthedocs.io/en/latest/usage.html)
```bash
(getdat-py3.11) -> pytest -v --cov=. tests/
```
Style guide and code check enforced with [pre-commit](https://pre-commit.com/)
```bash
(getdat-py3.11) -> pre-commit install
```
Running `docs` site locally for making changes to `github-pages` requires [ruby](https://jekyllrb.com/docs/installation/ubuntu/) to be installed. After installation make sure to install *bundler* with `gem install jekyll bundler` as well:
```bash
-> cd docs
-> bundler install
-> bundler exec jekyll build
-> bundler exec jekyll serve
```
## Deployment
### Publishing Getdat
Workflow: `master` branch
- In `pyproject.toml` *bump* the version number `*.*.*`
- Create a [git tag](https://git-scm.com/book/en/v2/Git-Basics-Tagging) with the new version number `*.*.*` you specified in `pyproject.toml`.
- Push the newly created tag `git push origin *.*.*` to the repository. This will trigger the `pre-release.yml` github workflow to publish our package to `test.pypi`. The pre-release can be seen [here](https://test.pypi.org/project/getdat/) for testing. Install with:
```bash
-> python3.11 -m pip install --index-url https://test.pypi.org/simple/ getdat --extra-index-url https://pypi.org/simple beautifulsoup4 requests click
```
- *Note*: `--extra-index-url` option is pulling dependencies from `pypi.org` and not `test.pypi.org` though our package is coming in from `test.pypi.org`. Make sure to add all dependencies from `[tool.poetry.dependencies]` in `pyproject.toml` (except python) before running this command.
- *Create* a [release](https://www.toolsqa.com/git/github-releases/) on github. Make sure to select `Tags` from the toggle menu. Select the latest tag (highest version number). Name the release `Release *.*.*`. Make sure the version number in `pyproject.toml` syncs up with the release version. *Click* `Publish release`. This will kick off our `release.yml` workflow to publish our package to `pypi`. The release can be seen [here and installed](https://pypi.org/project/getdat/) for production use. Install with:
```bash
-> pipx install getdat
```
### Publishing Docs
Docs are published to the [site](https://getdat.chrisdixononcode.dev) when a release is created for the python package to pypi.org. This is *automated*, but can be triggered manually by running the github workflow *Deploy Jekyll with GitHub Pages dependencies preinstalled*.
---
## Contributors
![GitHub Contributors Image](https://contrib.rocks/image?repo=Audiosutras/getdat)
Raw data
{
"_id": null,
"home_page": "https://audiosutras.github.io/getdat/",
"name": "getdat",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.11,<4.0",
"maintainer_email": "",
"keywords": "cli,books,movies,episodes,anna's archive,movie-web,web scraper",
"author": "Christopher Dixon",
"author_email": "chrisdixononcode@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/cd/10/6de48800d08f83e879006f6e114d03e21286489786e6c43d4040fe38c37e/getdat-0.2.2.tar.gz",
"platform": null,
"description": "# *ATTENTION* - Anna's Archive enforces web scraping blocks through Cloudflare. The site is also subject to change. The `ebook` command may return `No Search Results` found. A fix is in the works that may involve a new project and archiving this one. A long term solution is [hosting an instance of Anna's Archive](https://annas-software.org/AnnaArchivist/annas-archive) with [community support](https://chrisdixononcode.dev/support) or possibly creating a cli by forking the main repo and building an api.\n\n\n<div align=\"center\">\n <h1>GetDat</h1>\n <p><i>A command line utility for getting resources available online</i></p>\n <img\n src=\"{{ 'assets/images/getdat-logo.png' }}\"\n alt=\"GetDat Package Logo\"\n height=\"400\"\n />\n <p align=\"center\">\n <a href=\"https://iv.ggtyler.dev/watch?v=4b8P8cqc-UQ\" target=\"_blank\">\n GetDat Theme Music\n </a>\n </p>\n</div>\n\n<div class=\"flex flex-row justify-between flex-wrap\">\n <a href=\"https://pypi.org/project/getdat/\" alt=\"Link to PyPi package homepage\">\n <img class=\"p-2\" alt=\"PyPI - Downloads\" src=\"https://img.shields.io/pypi/dw/getdat?logo=pypi\">\n </a>\n <a href=\"https://github.com/Audiosutras/getdat/actions/workflows/ci.yml?query=branch=master\" alt=\"Link to CI jobs for master branch\">\n <img class=\"p-2\" alt=\"CI\" src=\"https://github.com/Audiosutras/getdat/actions/workflows/ci.yml/badge.svg?branch=master\">\n </a>\n <a href=\"https://github.com/Audiosutras/getdat\" alt=\"Link to Github Issues\">\n <img alt=\"GitHub issues\" src=\"https://img.shields.io/github/issues/Audiosutras/getdat\">\n </a>\n</div>\n\nTable of Contents\n\n- [Installation Methods](#installation-methods)\n- [Commands](#commands)\n- [Local Development](#local-development)\n- [Deployment](#deployment)\n - [Publishing Getdat](#publishing-getdat)\n - [Publishing Docs](#publishing-docs)\n- [Contributors](#contributors)\n\n## Installation Methods\n\nPYPI - Stable Release:\n```bash\n-> pipx install getdat\n```\n\nFrom Head commit of Repository:\n```bash\n-> pipx install git+https://github.com/Audiosutras/getdat.git\n```\n\n## Commands\n\n### Job\nLaunches [Braintrust](https://bit.ly/braintrust-gigs-talent-search), the job board powered by blockchain, in your default browser\n\n### Sport\nLaunches [Totalsportk](https://www.totalsportk.org/) in your default browser\n\n### Cinema\nLaunches [movie-web.app](https://movie-web.app/search/movie) in your default browser\n\n<div align=\"center\" class=\"gif-image\">\n <img\n src=\"{{ 'assets/images/getdat-cinema.gif' | relative_url }}\"\n alt=\"Gif of GetDat Cinema Command In Action\"\n />\n</div>\n\n```bash\n-> getdat cinema\n```\n\n### Ebook\nSearch and download an ebook available through [Anna's Archive](https://annas-archive.org/). You can think of this command as \"headless\" Anna's Archive\n\n<div align=\"center\" class=\"gif-image\">\n <img\n src=\"{{ 'assets/images/getdat-ebook.gif' | relative_url }}\"\n alt=\"Gif of GetDat Ebook Command In Action\"\n style=\"border: red\"\n />\n</div>\n\n* The demo for this command downloaded an epub format of Robert Louis Stevenson's and N.C. Wyeth's book *Treasure Island*. This book is in the public domain.\n* The demo for this command opens the downloaded ebook using [epr](https://github.com/wustho/epr), a terminal epub reader to show the contents of the downloaded book. You can expect higher ebook quality by using a desktop e-reader like [librum](https://librumreader.com/)\n* Anna's Archive `SciDB` search is not yet supported.\n\n\n```bash\n-> getdat ebook [OPTIONS] [Q]\n```\n\n#### ARGUMENTS\n\n| Name | Help |\n|------|------|\n| Q | Search |\n\nExample:\n```bash\n-> getdat ebook \"Treasure Island Stevenson\"\n```\nor\n```bash\n-> getdat ebook Treasure Island Stevenson\n```\n\n#### OPTIONS\n\n```bash\n-> getdat ebook --help\nUsage: getdat ebook [OPTIONS] [Q]...\n\n Search and download an ebook available through Anna's Archive\n\n ex: getdat ebook <Search>\n\nOptions:\n -o, --output_dir TEXT Path to ebook's output directory from home\n directory. Path must be prefixed by '~' on\n Unix or '~user' on Windows. This argument\n overrides GETDAT_BOOK_DIR env var if set.\n Outputs book to working directory if neither\n are set.\n -e, --ext [pdf|epub|mobi|cbr|cbz|fb2|fb2.zip|azw3|djvu]\n Preferred ebook extension for ebooks in\n search results.\n -l, --lang TEXT Preferred language of ebooks in search\n results. Provided Language must be ISO 639-1\n format. Language region extension supported.\n Filtering by multiple languages supported.\n Examples: English - en, Spanish - es,\n Traditional Chinese - zh-Hant, Multiple\n Langauges - en,es,zh-Hant\n -i, --instance [org|gs|se] The instance of Anna's Archive you would\n like to use for your search: https://annas-\n archive.org, https://annas-archive.gs,\n https://annas-archive.se - Default: org\n --help Show this message and exit.\n\n```\n\nExample:\n```bash\n-> getdat ebook Treasure Island Stevenson --ext=epub --output_dir=~/books/epub/ --instance=gs --lang=en,es,zh-Hant\n```\nor\n```bash\n-> getdat ebook \"Treasure Island Stevenson\" -e epub -o ~/books/epub -i gs -l es\n```\nor\n```bash\n-> getdat ebook \"Treasure Island Stevenson\"\n```\n\n#### Environment Variable\n\n- `GETDAT_BOOK_DIR` - Path from home directory to destination directory. Ignored if `--output_dir` is specified as an [option](#options)\n\n## Local Development\n\nPython Version: `3.11`. To install python on MacOS & Debian-based systems\n```bash\n-> sudo apt install software-properties-common\n-> sudo add-apt-repository ppa:deadsnakes/ppa\n-> sudo apt update\n-> sudo apt install python3.11\n```\n\nThis python package uses [poetry](https://python-poetry.org/docs/) for dependency management. To install:\n```bash\n# install pipx if you have not already\n-> python3 -m pip install --user pipx\n-> python3 -m pipx ensurepath\n# install poetry\n-> pipx install poetry\n```\n\nAssuming that you have *forked the repository* and have a copy on your local machine. Within the `getdat` directory, install dependencies and open a `virtualenv` shell managed by poetry.\n```bash\n-> poetry install\n-> poetry shell\n(getdat-py3.11) ->\n```\n\nTo run/develop the cli program.\n```bash\n(getdat-py3.11) -> getdat\nUsage: getdat [OPTIONS] COMMAND [ARGS]...\n\n A command line utility for getting resources available online\n\nOptions:\n --help Show this message and exit.\n\nCommands:\n cinema Launches movie-web.app in your default browser\n ebook Search and download an ebook available through Anna's Archive...\n\n Check out our docs at https://github.com/Audiosutras/getdat/docs for more\n details\n\n```\n\nProject uses [pytest](https://docs.pytest.org/en/7.4.x/) for unit testing. Test run quickly with the help of [pytest-mock](https://pytest-mock.readthedocs.io/en/latest/usage.html)\n```bash\n(getdat-py3.11) -> pytest -v --cov=. tests/\n```\n\nStyle guide and code check enforced with [pre-commit](https://pre-commit.com/)\n```bash\n(getdat-py3.11) -> pre-commit install\n```\n\nRunning `docs` site locally for making changes to `github-pages` requires [ruby](https://jekyllrb.com/docs/installation/ubuntu/) to be installed. After installation make sure to install *bundler* with `gem install jekyll bundler` as well:\n```bash\n-> cd docs\n-> bundler install\n-> bundler exec jekyll build\n-> bundler exec jekyll serve\n```\n\n## Deployment\n\n### Publishing Getdat\n\nWorkflow: `master` branch\n\n- In `pyproject.toml` *bump* the version number `*.*.*`\n\n- Create a [git tag](https://git-scm.com/book/en/v2/Git-Basics-Tagging) with the new version number `*.*.*` you specified in `pyproject.toml`.\n\n- Push the newly created tag `git push origin *.*.*` to the repository. This will trigger the `pre-release.yml` github workflow to publish our package to `test.pypi`. The pre-release can be seen [here](https://test.pypi.org/project/getdat/) for testing. Install with:\n```bash\n-> python3.11 -m pip install --index-url https://test.pypi.org/simple/ getdat --extra-index-url https://pypi.org/simple beautifulsoup4 requests click\n```\n - *Note*: `--extra-index-url` option is pulling dependencies from `pypi.org` and not `test.pypi.org` though our package is coming in from `test.pypi.org`. Make sure to add all dependencies from `[tool.poetry.dependencies]` in `pyproject.toml` (except python) before running this command.\n\n- *Create* a [release](https://www.toolsqa.com/git/github-releases/) on github. Make sure to select `Tags` from the toggle menu. Select the latest tag (highest version number). Name the release `Release *.*.*`. Make sure the version number in `pyproject.toml` syncs up with the release version. *Click* `Publish release`. This will kick off our `release.yml` workflow to publish our package to `pypi`. The release can be seen [here and installed](https://pypi.org/project/getdat/) for production use. Install with:\n```bash\n-> pipx install getdat\n```\n\n### Publishing Docs\nDocs are published to the [site](https://getdat.chrisdixononcode.dev) when a release is created for the python package to pypi.org. This is *automated*, but can be triggered manually by running the github workflow *Deploy Jekyll with GitHub Pages dependencies preinstalled*.\n\n---\n## Contributors\n\n![GitHub Contributors Image](https://contrib.rocks/image?repo=Audiosutras/getdat)\n",
"bugtrack_url": null,
"license": "",
"summary": "A command line utility for getting resources available online",
"version": "0.2.2",
"project_urls": {
"Homepage": "https://audiosutras.github.io/getdat/",
"Repository": "https://github.com/Audiosutras/getdat"
},
"split_keywords": [
"cli",
"books",
"movies",
"episodes",
"anna's archive",
"movie-web",
"web scraper"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "b1a4bd300d6a8088fc98a552c4287a96f2c70ca849b4897a4b2a682365f74b3d",
"md5": "5aa82cbbcd2a06cc5d5891a17a7c4438",
"sha256": "9fab6f946e4d0b42050e944416e93189846c04c3f7271a0cbcedfc5c3a474b0b"
},
"downloads": -1,
"filename": "getdat-0.2.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "5aa82cbbcd2a06cc5d5891a17a7c4438",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.11,<4.0",
"size": 11686,
"upload_time": "2023-12-04T17:14:50",
"upload_time_iso_8601": "2023-12-04T17:14:50.230800Z",
"url": "https://files.pythonhosted.org/packages/b1/a4/bd300d6a8088fc98a552c4287a96f2c70ca849b4897a4b2a682365f74b3d/getdat-0.2.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "cd106de48800d08f83e879006f6e114d03e21286489786e6c43d4040fe38c37e",
"md5": "2fe7aa887ecd819f717c823c1675a4bf",
"sha256": "ef9b9fdd3706e3f202c28c0fb89e4ed005cd6205066c484ed71f689f9d136bbb"
},
"downloads": -1,
"filename": "getdat-0.2.2.tar.gz",
"has_sig": false,
"md5_digest": "2fe7aa887ecd819f717c823c1675a4bf",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11,<4.0",
"size": 13100,
"upload_time": "2023-12-04T17:14:51",
"upload_time_iso_8601": "2023-12-04T17:14:51.165840Z",
"url": "https://files.pythonhosted.org/packages/cd/10/6de48800d08f83e879006f6e114d03e21286489786e6c43d4040fe38c37e/getdat-0.2.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-12-04 17:14:51",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Audiosutras",
"github_project": "getdat",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "getdat"
}