Initial commit
This commit is contained in:
		
							
								
								
									
										4
									
								
								.env.sample
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								.env.sample
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
			
		||||
REDDIT_CLIENT_ID=""
 | 
			
		||||
REDDIT_CLIENT_SECRET=""
 | 
			
		||||
REDDIT_USERNAME=""
 | 
			
		||||
REDDIT_PASSWORD=""
 | 
			
		||||
							
								
								
									
										165
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										165
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,165 @@
 | 
			
		||||
# Byte-compiled / optimized / DLL files
 | 
			
		||||
__pycache__/
 | 
			
		||||
*.py[cod]
 | 
			
		||||
*$py.class
 | 
			
		||||
 | 
			
		||||
# C extensions
 | 
			
		||||
*.so
 | 
			
		||||
 | 
			
		||||
# Distribution / packaging
 | 
			
		||||
.Python
 | 
			
		||||
build/
 | 
			
		||||
develop-eggs/
 | 
			
		||||
dist/
 | 
			
		||||
downloads/
 | 
			
		||||
eggs/
 | 
			
		||||
.eggs/
 | 
			
		||||
lib/
 | 
			
		||||
lib64/
 | 
			
		||||
parts/
 | 
			
		||||
sdist/
 | 
			
		||||
var/
 | 
			
		||||
wheels/
 | 
			
		||||
share/python-wheels/
 | 
			
		||||
*.egg-info/
 | 
			
		||||
.installed.cfg
 | 
			
		||||
*.egg
 | 
			
		||||
MANIFEST
 | 
			
		||||
 | 
			
		||||
# PyInstaller
 | 
			
		||||
#  Usually these files are written by a python script from a template
 | 
			
		||||
#  before PyInstaller builds the exe, so as to inject date/other infos into it.
 | 
			
		||||
*.manifest
 | 
			
		||||
*.spec
 | 
			
		||||
 | 
			
		||||
# Installer logs
 | 
			
		||||
pip-log.txt
 | 
			
		||||
pip-delete-this-directory.txt
 | 
			
		||||
 | 
			
		||||
# Unit test / coverage reports
 | 
			
		||||
htmlcov/
 | 
			
		||||
.tox/
 | 
			
		||||
.nox/
 | 
			
		||||
.coverage
 | 
			
		||||
.coverage.*
 | 
			
		||||
.cache
 | 
			
		||||
nosetests.xml
 | 
			
		||||
coverage.xml
 | 
			
		||||
*.cover
 | 
			
		||||
*.py,cover
 | 
			
		||||
.hypothesis/
 | 
			
		||||
.pytest_cache/
 | 
			
		||||
cover/
 | 
			
		||||
 | 
			
		||||
# Translations
 | 
			
		||||
*.mo
 | 
			
		||||
*.pot
 | 
			
		||||
 | 
			
		||||
# Django stuff:
 | 
			
		||||
*.log
 | 
			
		||||
local_settings.py
 | 
			
		||||
db.sqlite3
 | 
			
		||||
db.sqlite3-journal
 | 
			
		||||
 | 
			
		||||
# Flask stuff:
 | 
			
		||||
instance/
 | 
			
		||||
.webassets-cache
 | 
			
		||||
 | 
			
		||||
# Scrapy stuff:
 | 
			
		||||
.scrapy
 | 
			
		||||
 | 
			
		||||
# Sphinx documentation
 | 
			
		||||
docs/_build/
 | 
			
		||||
 | 
			
		||||
# PyBuilder
 | 
			
		||||
.pybuilder/
 | 
			
		||||
target/
 | 
			
		||||
 | 
			
		||||
# Jupyter Notebook
 | 
			
		||||
.ipynb_checkpoints
 | 
			
		||||
 | 
			
		||||
# IPython
 | 
			
		||||
profile_default/
 | 
			
		||||
ipython_config.py
 | 
			
		||||
 | 
			
		||||
# pyenv
 | 
			
		||||
#   For a library or package, you might want to ignore these files since the code is
 | 
			
		||||
#   intended to run in multiple environments; otherwise, check them in:
 | 
			
		||||
# .python-version
 | 
			
		||||
 | 
			
		||||
# pipenv
 | 
			
		||||
#   According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
 | 
			
		||||
#   However, in case of collaboration, if having platform-specific dependencies or dependencies
 | 
			
		||||
#   having no cross-platform support, pipenv may install dependencies that don't work, or not
 | 
			
		||||
#   install all needed dependencies.
 | 
			
		||||
#Pipfile.lock
 | 
			
		||||
 | 
			
		||||
# poetry
 | 
			
		||||
#   Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
 | 
			
		||||
#   This is especially recommended for binary packages to ensure reproducibility, and is more
 | 
			
		||||
#   commonly ignored for libraries.
 | 
			
		||||
#   https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
 | 
			
		||||
#poetry.lock
 | 
			
		||||
 | 
			
		||||
# pdm
 | 
			
		||||
#   Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
 | 
			
		||||
#pdm.lock
 | 
			
		||||
#   pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
 | 
			
		||||
#   in version control.
 | 
			
		||||
#   https://pdm.fming.dev/#use-with-ide
 | 
			
		||||
.pdm.toml
 | 
			
		||||
 | 
			
		||||
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
 | 
			
		||||
__pypackages__/
 | 
			
		||||
 | 
			
		||||
# Celery stuff
 | 
			
		||||
celerybeat-schedule
 | 
			
		||||
celerybeat.pid
 | 
			
		||||
 | 
			
		||||
# SageMath parsed files
 | 
			
		||||
*.sage.py
 | 
			
		||||
 | 
			
		||||
# Environments
 | 
			
		||||
.env
 | 
			
		||||
.venv
 | 
			
		||||
env/
 | 
			
		||||
venv/
 | 
			
		||||
ENV/
 | 
			
		||||
env.bak/
 | 
			
		||||
venv.bak/
 | 
			
		||||
 | 
			
		||||
# Spyder project settings
 | 
			
		||||
.spyderproject
 | 
			
		||||
.spyproject
 | 
			
		||||
 | 
			
		||||
# Rope project settings
 | 
			
		||||
.ropeproject
 | 
			
		||||
 | 
			
		||||
# mkdocs documentation
 | 
			
		||||
/site
 | 
			
		||||
 | 
			
		||||
# mypy
 | 
			
		||||
.mypy_cache/
 | 
			
		||||
.dmypy.json
 | 
			
		||||
dmypy.json
 | 
			
		||||
 | 
			
		||||
# Pyre type checker
 | 
			
		||||
.pyre/
 | 
			
		||||
 | 
			
		||||
# pytype static type analyzer
 | 
			
		||||
.pytype/
 | 
			
		||||
 | 
			
		||||
# Cython debug symbols
 | 
			
		||||
cython_debug/
 | 
			
		||||
 | 
			
		||||
# PyCharm
 | 
			
		||||
#  JetBrains specific template is maintained in a separate JetBrains.gitignore that can
 | 
			
		||||
#  be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
 | 
			
		||||
#  and can be added to the global gitignore or merged into this file.  For a more nuclear
 | 
			
		||||
#  option (not recommended) you can uncomment the following to ignore the entire idea folder.
 | 
			
		||||
#.idea/
 | 
			
		||||
 | 
			
		||||
# App
 | 
			
		||||
slide-deck.md
 | 
			
		||||
*.pptx
 | 
			
		||||
*.pptx#
 | 
			
		||||
							
								
								
									
										3
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
			
		||||
{
 | 
			
		||||
    "makefile.extensionOutputFolder": "./.vscode"
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										12
									
								
								Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								Makefile
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
slides:
 | 
			
		||||
	python -m reddit_saved_pptx
 | 
			
		||||
	npx @marp-team/marp-cli@latest slide-deck.md -o output.pptx
 | 
			
		||||
 | 
			
		||||
requirements:
 | 
			
		||||
	poetry export -f requirements.txt --output requirements.txt --without-hashes
 | 
			
		||||
 | 
			
		||||
install:
 | 
			
		||||
	poetry install
 | 
			
		||||
 | 
			
		||||
lint/black:
 | 
			
		||||
	black reddit_saved_pptx
 | 
			
		||||
							
								
								
									
										16
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
			
		||||
# reddit-saved-pptx
 | 
			
		||||
Convert your Reddit saved posts into a powerpoint presentation. Code can be easily adjusted to your needs.
 | 
			
		||||
 | 
			
		||||
## Requirements
 | 
			
		||||
- python
 | 
			
		||||
- npm (npx)
 | 
			
		||||
- [A Reddit application](https://www.reddit.com/prefs/apps)
 | 
			
		||||
 | 
			
		||||
# Usage
 | 
			
		||||
```bash
 | 
			
		||||
# One-time setup of the necessary environment variables
 | 
			
		||||
cp .env.sample .env
 | 
			
		||||
 | 
			
		||||
# Build the powerpoint. Result will be in the same directory called `output.pptx`.
 | 
			
		||||
make slides
 | 
			
		||||
```
 | 
			
		||||
							
								
								
									
										451
									
								
								poetry.lock
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										451
									
								
								poetry.lock
									
									
									
										generated
									
									
									
										Normal file
									
								
							@@ -0,0 +1,451 @@
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "atomicwrites"
 | 
			
		||||
version = "1.4.1"
 | 
			
		||||
description = "Atomic file writes."
 | 
			
		||||
category = "dev"
 | 
			
		||||
optional = false
 | 
			
		||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "attrs"
 | 
			
		||||
version = "22.1.0"
 | 
			
		||||
description = "Classes Without Boilerplate"
 | 
			
		||||
category = "dev"
 | 
			
		||||
optional = false
 | 
			
		||||
python-versions = ">=3.5"
 | 
			
		||||
 | 
			
		||||
[package.extras]
 | 
			
		||||
dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"]
 | 
			
		||||
docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"]
 | 
			
		||||
tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "zope.interface", "cloudpickle"]
 | 
			
		||||
tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "mypy (>=0.900,!=0.940)", "pytest-mypy-plugins", "cloudpickle"]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "black"
 | 
			
		||||
version = "22.6.0"
 | 
			
		||||
description = "The uncompromising code formatter."
 | 
			
		||||
category = "dev"
 | 
			
		||||
optional = false
 | 
			
		||||
python-versions = ">=3.6.2"
 | 
			
		||||
 | 
			
		||||
[package.dependencies]
 | 
			
		||||
click = ">=8.0.0"
 | 
			
		||||
mypy-extensions = ">=0.4.3"
 | 
			
		||||
pathspec = ">=0.9.0"
 | 
			
		||||
platformdirs = ">=2"
 | 
			
		||||
tomli = {version = ">=1.1.0", markers = "python_full_version < \"3.11.0a7\""}
 | 
			
		||||
 | 
			
		||||
[package.extras]
 | 
			
		||||
colorama = ["colorama (>=0.4.3)"]
 | 
			
		||||
d = ["aiohttp (>=3.7.4)"]
 | 
			
		||||
jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"]
 | 
			
		||||
uvloop = ["uvloop (>=0.15.2)"]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "certifi"
 | 
			
		||||
version = "2022.6.15"
 | 
			
		||||
description = "Python package for providing Mozilla's CA Bundle."
 | 
			
		||||
category = "main"
 | 
			
		||||
optional = false
 | 
			
		||||
python-versions = ">=3.6"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "charset-normalizer"
 | 
			
		||||
version = "2.1.0"
 | 
			
		||||
description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
 | 
			
		||||
category = "main"
 | 
			
		||||
optional = false
 | 
			
		||||
python-versions = ">=3.6.0"
 | 
			
		||||
 | 
			
		||||
[package.extras]
 | 
			
		||||
unicode_backport = ["unicodedata2"]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "click"
 | 
			
		||||
version = "8.1.3"
 | 
			
		||||
description = "Composable command line interface toolkit"
 | 
			
		||||
category = "dev"
 | 
			
		||||
optional = false
 | 
			
		||||
python-versions = ">=3.7"
 | 
			
		||||
 | 
			
		||||
[package.dependencies]
 | 
			
		||||
colorama = {version = "*", markers = "platform_system == \"Windows\""}
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "colorama"
 | 
			
		||||
version = "0.4.5"
 | 
			
		||||
description = "Cross-platform colored terminal text."
 | 
			
		||||
category = "dev"
 | 
			
		||||
optional = false
 | 
			
		||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "idna"
 | 
			
		||||
version = "3.3"
 | 
			
		||||
description = "Internationalized Domain Names in Applications (IDNA)"
 | 
			
		||||
category = "main"
 | 
			
		||||
optional = false
 | 
			
		||||
python-versions = ">=3.5"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "jinja2"
 | 
			
		||||
version = "3.1.2"
 | 
			
		||||
description = "A very fast and expressive template engine."
 | 
			
		||||
category = "main"
 | 
			
		||||
optional = false
 | 
			
		||||
python-versions = ">=3.7"
 | 
			
		||||
 | 
			
		||||
[package.dependencies]
 | 
			
		||||
MarkupSafe = ">=2.0"
 | 
			
		||||
 | 
			
		||||
[package.extras]
 | 
			
		||||
i18n = ["Babel (>=2.7)"]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "markupsafe"
 | 
			
		||||
version = "2.1.1"
 | 
			
		||||
description = "Safely add untrusted strings to HTML/XML markup."
 | 
			
		||||
category = "main"
 | 
			
		||||
optional = false
 | 
			
		||||
python-versions = ">=3.7"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "more-itertools"
 | 
			
		||||
version = "8.14.0"
 | 
			
		||||
description = "More routines for operating on iterables, beyond itertools"
 | 
			
		||||
category = "dev"
 | 
			
		||||
optional = false
 | 
			
		||||
python-versions = ">=3.5"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "mypy-extensions"
 | 
			
		||||
version = "0.4.3"
 | 
			
		||||
description = "Experimental type system extensions for programs checked with the mypy typechecker."
 | 
			
		||||
category = "dev"
 | 
			
		||||
optional = false
 | 
			
		||||
python-versions = "*"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "packaging"
 | 
			
		||||
version = "21.3"
 | 
			
		||||
description = "Core utilities for Python packages"
 | 
			
		||||
category = "dev"
 | 
			
		||||
optional = false
 | 
			
		||||
python-versions = ">=3.6"
 | 
			
		||||
 | 
			
		||||
[package.dependencies]
 | 
			
		||||
pyparsing = ">=2.0.2,<3.0.5 || >3.0.5"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "pathspec"
 | 
			
		||||
version = "0.9.0"
 | 
			
		||||
description = "Utility library for gitignore style pattern matching of file paths."
 | 
			
		||||
category = "dev"
 | 
			
		||||
optional = false
 | 
			
		||||
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "platformdirs"
 | 
			
		||||
version = "2.5.2"
 | 
			
		||||
description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
 | 
			
		||||
category = "dev"
 | 
			
		||||
optional = false
 | 
			
		||||
python-versions = ">=3.7"
 | 
			
		||||
 | 
			
		||||
[package.extras]
 | 
			
		||||
docs = ["furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx-autodoc-typehints (>=1.12)", "sphinx (>=4)"]
 | 
			
		||||
test = ["appdirs (==1.4.4)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)", "pytest (>=6)"]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "pluggy"
 | 
			
		||||
version = "0.13.1"
 | 
			
		||||
description = "plugin and hook calling mechanisms for python"
 | 
			
		||||
category = "dev"
 | 
			
		||||
optional = false
 | 
			
		||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
 | 
			
		||||
 | 
			
		||||
[package.extras]
 | 
			
		||||
dev = ["pre-commit", "tox"]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "praw"
 | 
			
		||||
version = "7.6.0"
 | 
			
		||||
description = "PRAW, an acronym for `Python Reddit API Wrapper`, is a python package that allows for simple access to  Reddit's API."
 | 
			
		||||
category = "main"
 | 
			
		||||
optional = false
 | 
			
		||||
python-versions = "~=3.7"
 | 
			
		||||
 | 
			
		||||
[package.dependencies]
 | 
			
		||||
prawcore = ">=2.1,<3"
 | 
			
		||||
update-checker = ">=0.18"
 | 
			
		||||
websocket-client = ">=0.54.0"
 | 
			
		||||
 | 
			
		||||
[package.extras]
 | 
			
		||||
test = ["requests (>=2.20.1,<3)", "pytest (>=2.7.3)", "betamax-matchers (>=0.3.0,<0.5)", "betamax (>=0.8,<0.9)"]
 | 
			
		||||
readthedocs = ["sphinx-rtd-theme", "sphinx"]
 | 
			
		||||
lint = ["sphinx-rtd-theme", "sphinx", "pre-commit"]
 | 
			
		||||
dev = ["requests (>=2.20.1,<3)", "pytest (>=2.7.3)", "betamax-matchers (>=0.3.0,<0.5)", "betamax (>=0.8,<0.9)", "sphinx-rtd-theme", "sphinx", "pre-commit", "packaging"]
 | 
			
		||||
ci = ["coveralls"]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "prawcore"
 | 
			
		||||
version = "2.3.0"
 | 
			
		||||
description = "Low-level communication layer for PRAW 4+."
 | 
			
		||||
category = "main"
 | 
			
		||||
optional = false
 | 
			
		||||
python-versions = "~=3.6"
 | 
			
		||||
 | 
			
		||||
[package.dependencies]
 | 
			
		||||
requests = ">=2.6.0,<3.0"
 | 
			
		||||
 | 
			
		||||
[package.extras]
 | 
			
		||||
test = ["testfixtures (>4.13.2,<7)", "pytest", "mock (>=0.8)", "betamax-serializers (>=0.2.0,<0.3)", "betamax-matchers (>=0.4.0,<0.5)", "betamax (>=0.8,<0.9)"]
 | 
			
		||||
lint = ["flynt", "pydocstyle", "pre-commit", "flake8", "black"]
 | 
			
		||||
dev = ["testfixtures (>4.13.2,<7)", "pytest", "mock (>=0.8)", "betamax-serializers (>=0.2.0,<0.3)", "betamax-matchers (>=0.4.0,<0.5)", "betamax (>=0.8,<0.9)", "flynt", "pydocstyle", "pre-commit", "flake8", "black"]
 | 
			
		||||
ci = ["coveralls"]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "py"
 | 
			
		||||
version = "1.11.0"
 | 
			
		||||
description = "library with cross-python path, ini-parsing, io, code, log facilities"
 | 
			
		||||
category = "dev"
 | 
			
		||||
optional = false
 | 
			
		||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "pyparsing"
 | 
			
		||||
version = "3.0.9"
 | 
			
		||||
description = "pyparsing module - Classes and methods to define and execute parsing grammars"
 | 
			
		||||
category = "dev"
 | 
			
		||||
optional = false
 | 
			
		||||
python-versions = ">=3.6.8"
 | 
			
		||||
 | 
			
		||||
[package.extras]
 | 
			
		||||
diagrams = ["railroad-diagrams", "jinja2"]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "pytest"
 | 
			
		||||
version = "5.4.3"
 | 
			
		||||
description = "pytest: simple powerful testing with Python"
 | 
			
		||||
category = "dev"
 | 
			
		||||
optional = false
 | 
			
		||||
python-versions = ">=3.5"
 | 
			
		||||
 | 
			
		||||
[package.dependencies]
 | 
			
		||||
atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""}
 | 
			
		||||
attrs = ">=17.4.0"
 | 
			
		||||
colorama = {version = "*", markers = "sys_platform == \"win32\""}
 | 
			
		||||
more-itertools = ">=4.0.0"
 | 
			
		||||
packaging = "*"
 | 
			
		||||
pluggy = ">=0.12,<1.0"
 | 
			
		||||
py = ">=1.5.0"
 | 
			
		||||
wcwidth = "*"
 | 
			
		||||
 | 
			
		||||
[package.extras]
 | 
			
		||||
checkqa-mypy = ["mypy (==v0.761)"]
 | 
			
		||||
testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "python-dotenv"
 | 
			
		||||
version = "0.20.0"
 | 
			
		||||
description = "Read key-value pairs from a .env file and set them as environment variables"
 | 
			
		||||
category = "main"
 | 
			
		||||
optional = false
 | 
			
		||||
python-versions = ">=3.5"
 | 
			
		||||
 | 
			
		||||
[package.extras]
 | 
			
		||||
cli = ["click (>=5.0)"]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "requests"
 | 
			
		||||
version = "2.28.1"
 | 
			
		||||
description = "Python HTTP for Humans."
 | 
			
		||||
category = "main"
 | 
			
		||||
optional = false
 | 
			
		||||
python-versions = ">=3.7, <4"
 | 
			
		||||
 | 
			
		||||
[package.dependencies]
 | 
			
		||||
certifi = ">=2017.4.17"
 | 
			
		||||
charset-normalizer = ">=2,<3"
 | 
			
		||||
idna = ">=2.5,<4"
 | 
			
		||||
urllib3 = ">=1.21.1,<1.27"
 | 
			
		||||
 | 
			
		||||
[package.extras]
 | 
			
		||||
socks = ["PySocks (>=1.5.6,!=1.5.7)"]
 | 
			
		||||
use_chardet_on_py3 = ["chardet (>=3.0.2,<6)"]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "tomli"
 | 
			
		||||
version = "2.0.1"
 | 
			
		||||
description = "A lil' TOML parser"
 | 
			
		||||
category = "dev"
 | 
			
		||||
optional = false
 | 
			
		||||
python-versions = ">=3.7"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "update-checker"
 | 
			
		||||
version = "0.18.0"
 | 
			
		||||
description = "A python module that will check for package updates."
 | 
			
		||||
category = "main"
 | 
			
		||||
optional = false
 | 
			
		||||
python-versions = "*"
 | 
			
		||||
 | 
			
		||||
[package.dependencies]
 | 
			
		||||
requests = ">=2.3.0"
 | 
			
		||||
 | 
			
		||||
[package.extras]
 | 
			
		||||
test = ["pytest (>=2.7.3)"]
 | 
			
		||||
lint = ["flake8", "black"]
 | 
			
		||||
dev = ["pytest (>=2.7.3)", "flake8", "black"]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "urllib3"
 | 
			
		||||
version = "1.26.11"
 | 
			
		||||
description = "HTTP library with thread-safe connection pooling, file post, and more."
 | 
			
		||||
category = "main"
 | 
			
		||||
optional = false
 | 
			
		||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <4"
 | 
			
		||||
 | 
			
		||||
[package.extras]
 | 
			
		||||
brotli = ["brotlicffi (>=0.8.0)", "brotli (>=1.0.9)", "brotlipy (>=0.6.0)"]
 | 
			
		||||
secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"]
 | 
			
		||||
socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "wcwidth"
 | 
			
		||||
version = "0.2.5"
 | 
			
		||||
description = "Measures the displayed width of unicode strings in a terminal"
 | 
			
		||||
category = "dev"
 | 
			
		||||
optional = false
 | 
			
		||||
python-versions = "*"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "websocket-client"
 | 
			
		||||
version = "1.3.3"
 | 
			
		||||
description = "WebSocket client for Python with low level API options"
 | 
			
		||||
category = "main"
 | 
			
		||||
optional = false
 | 
			
		||||
python-versions = ">=3.7"
 | 
			
		||||
 | 
			
		||||
[package.extras]
 | 
			
		||||
test = ["websockets"]
 | 
			
		||||
optional = ["wsaccel", "python-socks"]
 | 
			
		||||
docs = ["sphinx-rtd-theme (>=0.5)", "Sphinx (>=3.4)"]
 | 
			
		||||
 | 
			
		||||
[metadata]
 | 
			
		||||
lock-version = "1.1"
 | 
			
		||||
python-versions = "^3.10"
 | 
			
		||||
content-hash = "71770dadddc5b8657b1a260283bda2bf177486ae295b83c2d6e324a24712fc67"
 | 
			
		||||
 | 
			
		||||
[metadata.files]
 | 
			
		||||
atomicwrites = []
 | 
			
		||||
attrs = []
 | 
			
		||||
black = []
 | 
			
		||||
certifi = []
 | 
			
		||||
charset-normalizer = []
 | 
			
		||||
click = [
 | 
			
		||||
    {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"},
 | 
			
		||||
    {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"},
 | 
			
		||||
]
 | 
			
		||||
colorama = []
 | 
			
		||||
idna = [
 | 
			
		||||
    {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"},
 | 
			
		||||
    {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"},
 | 
			
		||||
]
 | 
			
		||||
jinja2 = [
 | 
			
		||||
    {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"},
 | 
			
		||||
    {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"},
 | 
			
		||||
]
 | 
			
		||||
markupsafe = [
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp310-cp310-win32.whl", hash = "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp37-cp37m-win32.whl", hash = "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp38-cp38-win32.whl", hash = "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp39-cp39-win32.whl", hash = "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247"},
 | 
			
		||||
    {file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"},
 | 
			
		||||
]
 | 
			
		||||
more-itertools = []
 | 
			
		||||
mypy-extensions = [
 | 
			
		||||
    {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"},
 | 
			
		||||
    {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"},
 | 
			
		||||
]
 | 
			
		||||
packaging = [
 | 
			
		||||
    {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"},
 | 
			
		||||
    {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"},
 | 
			
		||||
]
 | 
			
		||||
pathspec = [
 | 
			
		||||
    {file = "pathspec-0.9.0-py2.py3-none-any.whl", hash = "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a"},
 | 
			
		||||
    {file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"},
 | 
			
		||||
]
 | 
			
		||||
platformdirs = [
 | 
			
		||||
    {file = "platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"},
 | 
			
		||||
    {file = "platformdirs-2.5.2.tar.gz", hash = "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"},
 | 
			
		||||
]
 | 
			
		||||
pluggy = [
 | 
			
		||||
    {file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"},
 | 
			
		||||
    {file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"},
 | 
			
		||||
]
 | 
			
		||||
praw = []
 | 
			
		||||
prawcore = []
 | 
			
		||||
py = [
 | 
			
		||||
    {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"},
 | 
			
		||||
    {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"},
 | 
			
		||||
]
 | 
			
		||||
pyparsing = [
 | 
			
		||||
    {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"},
 | 
			
		||||
    {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"},
 | 
			
		||||
]
 | 
			
		||||
pytest = [
 | 
			
		||||
    {file = "pytest-5.4.3-py3-none-any.whl", hash = "sha256:5c0db86b698e8f170ba4582a492248919255fcd4c79b1ee64ace34301fb589a1"},
 | 
			
		||||
    {file = "pytest-5.4.3.tar.gz", hash = "sha256:7979331bfcba207414f5e1263b5a0f8f521d0f457318836a7355531ed1a4c7d8"},
 | 
			
		||||
]
 | 
			
		||||
python-dotenv = [
 | 
			
		||||
    {file = "python-dotenv-0.20.0.tar.gz", hash = "sha256:b7e3b04a59693c42c36f9ab1cc2acc46fa5df8c78e178fc33a8d4cd05c8d498f"},
 | 
			
		||||
    {file = "python_dotenv-0.20.0-py3-none-any.whl", hash = "sha256:d92a187be61fe482e4fd675b6d52200e7be63a12b724abbf931a40ce4fa92938"},
 | 
			
		||||
]
 | 
			
		||||
requests = []
 | 
			
		||||
tomli = [
 | 
			
		||||
    {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"},
 | 
			
		||||
    {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"},
 | 
			
		||||
]
 | 
			
		||||
update-checker = []
 | 
			
		||||
urllib3 = []
 | 
			
		||||
wcwidth = [
 | 
			
		||||
    {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"},
 | 
			
		||||
    {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"},
 | 
			
		||||
]
 | 
			
		||||
websocket-client = []
 | 
			
		||||
							
								
								
									
										19
									
								
								pyproject.toml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								pyproject.toml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
[tool.poetry]
 | 
			
		||||
name = "reddit-saved-pptx"
 | 
			
		||||
version = "0.1.0"
 | 
			
		||||
description = ""
 | 
			
		||||
authors = ["strNophix <nvdpoel01@gmail.com>"]
 | 
			
		||||
 | 
			
		||||
[tool.poetry.dependencies]
 | 
			
		||||
python = "^3.10"
 | 
			
		||||
praw = "^7.6.0"
 | 
			
		||||
Jinja2 = "^3.1.2"
 | 
			
		||||
python-dotenv = "^0.20.0"
 | 
			
		||||
 | 
			
		||||
[tool.poetry.dev-dependencies]
 | 
			
		||||
pytest = "^5.2"
 | 
			
		||||
black = "^22.6.0"
 | 
			
		||||
 | 
			
		||||
[build-system]
 | 
			
		||||
requires = ["poetry-core>=1.0.0"]
 | 
			
		||||
build-backend = "poetry.core.masonry.api"
 | 
			
		||||
							
								
								
									
										1
									
								
								reddit_saved_pptx/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								reddit_saved_pptx/__init__.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
__version__ = "0.1.0"
 | 
			
		||||
							
								
								
									
										48
									
								
								reddit_saved_pptx/__main__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								reddit_saved_pptx/__main__.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,48 @@
 | 
			
		||||
import os
 | 
			
		||||
import pathlib
 | 
			
		||||
import random
 | 
			
		||||
import re
 | 
			
		||||
 | 
			
		||||
import praw
 | 
			
		||||
from dotenv import load_dotenv
 | 
			
		||||
from jinja2 import Environment
 | 
			
		||||
from jinja2 import FileSystemLoader
 | 
			
		||||
from praw.models import Submission
 | 
			
		||||
from praw.models import Redditor
 | 
			
		||||
 | 
			
		||||
load_dotenv()
 | 
			
		||||
 | 
			
		||||
IMAGE_ONLY_REGEX = re.compile(r"(http(s?):)([/|.|\w|\s|-])*\.(?:jpg|png)")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def main() -> int:
 | 
			
		||||
    reddit = praw.Reddit(
 | 
			
		||||
        client_id=os.getenv("REDDIT_CLIENT_ID"),
 | 
			
		||||
        client_secret=os.getenv("REDDIT_CLIENT_SECRET"),
 | 
			
		||||
        user_agent="reddit-saved-pptx",
 | 
			
		||||
        username=os.getenv("REDDIT_USERNAME"),
 | 
			
		||||
        password=os.getenv("REDDIT_PASSWORD"),
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    me: Redditor = reddit.user.me()
 | 
			
		||||
 | 
			
		||||
    nsfw_posts: list[Submission] = []
 | 
			
		||||
    for post in me.saved(limit=None):
 | 
			
		||||
        if not isinstance(post, Submission):
 | 
			
		||||
            continue
 | 
			
		||||
 | 
			
		||||
        post: Submission
 | 
			
		||||
        if IMAGE_ONLY_REGEX.match(post.url):
 | 
			
		||||
            nsfw_posts.append(post)
 | 
			
		||||
 | 
			
		||||
    random.shuffle(nsfw_posts)
 | 
			
		||||
 | 
			
		||||
    environment = Environment(loader=FileSystemLoader("templates/"))
 | 
			
		||||
    template = environment.get_template("base.jinja2")
 | 
			
		||||
    result = template.render(nsfw_posts=nsfw_posts)
 | 
			
		||||
    pathlib.Path("slide-deck.md").write_text(result, encoding="utf8")
 | 
			
		||||
    return 0
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == "__main__":
 | 
			
		||||
    raise SystemExit(main())
 | 
			
		||||
							
								
								
									
										12
									
								
								requirements.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								requirements.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
certifi==2022.6.15; python_version >= "3.7" and python_version < "4"
 | 
			
		||||
charset-normalizer==2.1.0; python_version >= "3.7" and python_version < "4" and python_full_version >= "3.6.0"
 | 
			
		||||
idna==3.3; python_version >= "3.7" and python_version < "4"
 | 
			
		||||
jinja2==3.1.2; python_version >= "3.7"
 | 
			
		||||
markupsafe==2.1.1; python_version >= "3.7"
 | 
			
		||||
praw==7.6.0; python_version >= "3.7" and python_version < "4.0"
 | 
			
		||||
prawcore==2.3.0; python_version >= "3.7" and python_version < "4.0"
 | 
			
		||||
python-dotenv==0.20.0; python_version >= "3.5"
 | 
			
		||||
requests==2.28.1; python_version >= "3.7" and python_version < "4"
 | 
			
		||||
update-checker==0.18.0; python_version >= "3.7" and python_version < "4.0"
 | 
			
		||||
urllib3==1.26.11; python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4" or python_full_version >= "3.6.0" and python_version < "4" and python_version >= "3.7"
 | 
			
		||||
websocket-client==1.3.3; python_version >= "3.7" and python_version < "4.0"
 | 
			
		||||
							
								
								
									
										7
									
								
								templates/base.jinja2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								templates/base.jinja2
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
---
 | 
			
		||||
marp: true
 | 
			
		||||
theme: default
 | 
			
		||||
{% for post in nsfw_posts %}
 | 
			
		||||
---
 | 
			
		||||

 | 
			
		||||
{% endfor %}
 | 
			
		||||
		Reference in New Issue
	
	Block a user