Metadata-Version: 2.1
Name: autopost
Version: 0.0.4
Summary: Auto-posts social media updates
Author-email: William Woodruff <william@yossarian.net>
Requires-Python: >=3.11
Description-Content-Type: text/markdown
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Topic :: Security
Requires-Dist: feedparser ~= 6.0
Requires-Dist: praw >= 7.6.1,< 7.8.0
Requires-Dist: Mastodon.py >= 1.7,< 1.9
Requires-Dist: pydantic ~= 1.10
Requires-Dist: python-frontmatter ~= 1.0
Requires-Dist: result ~= 0.8
Requires-Dist: rich >= 12.5.1,< 13.5.0
Requires-Dist: python-twitter ~= 3.5
Requires-Dist: build ; extra == "dev"
Requires-Dist: autopost[test,lint] ; extra == "dev"
Requires-Dist: bandit ; extra == "lint"
Requires-Dist: black ; extra == "lint"
Requires-Dist: interrogate ; extra == "lint"
Requires-Dist: mypy ; extra == "lint"
Requires-Dist: ruff ; extra == "lint"
Requires-Dist: pytest ; extra == "test"
Requires-Dist: pytest-cov ; extra == "test"
Requires-Dist: pretend ; extra == "test"
Project-URL: Homepage, https://pypi.org/project/autopost/
Project-URL: Issues, https://github.com/woodruffw/autopost/issues
Project-URL: Source, https://github.com/woodruffw/autopost
Provides-Extra: dev
Provides-Extra: lint
Provides-Extra: test

autopost
========

![CI](https://github.com/woodruffw/autopost/workflows/CI/badge.svg)
[![PyPI version](https://badge.fury.io/py/autopost.svg)](https://pypi.org/project/autopost)

A social media auto-poster for a blog.

Supported sites:

* Twitter (currently untested)
* Mastodon (any instance)
* Reddit (any subreddit)

## Installation

`autopost` requires Python 3.11 or newer, and is available on PyPI:

```bash
python -m pip install autopost
```

## Usage

```console
usage: autopost [-h] [-V] [-v] [--dry-run] [--config-file CONFIG_FILE] {manual,atom} ...

auto-posts social media updates

positional arguments:
  {manual,atom}
    manual              auto-post manually
    atom                auto-post from an Atom RSS feed

options:
  -h, --help            show this help message and exit
  -V, --version         show program's version number and exit
  -v, --verbose         be more verbose while running (default: False)
  --dry-run             perform a dry-run (default: False)
  --config-file CONFIG_FILE
                        the file to load for configuration (default: ./autopost.toml)
```

## Examples

To do anything meaningful with `autopost`, you'll need to configure
it. See [autopost.example.toml](./autopost.example.toml) for an example configuration file.

Once configured, you can use `autopost` to make a post manually:

```console
$ autopost manual "test" --url "https://example.com" --tags foo bar
🎉 reddit:/r/enosuchblog: https://reddit.com/r/enosuchblog/comments/zldk8y/test/
🎉 mastodon:@yossarian@infosec.exchange: https://infosec.exchange/@yossarian/109509443715725349
```

...where `--tags` is optional.

Alternatively, you can use `autopost atom` to retrieve a post from an Atom-style
RSS feed:

```bash
autopost atom https://example.com/feed.xml
```

In both cases, you can pass `--dry-run` to see what `autopost` *would* post
instead of actually doing it:

```console
$ autopost --dry-run atom https://blog.yossarian.net/feed.xml
dry run: would have posted Modernizing my 1980s sound system with URL:
https://blog.yossarian.net/2022/11/07/Modernizing-my-1980s-sound-system and tags: ['howto', 'workflow', 'music']
```

