diff --git a/.DS_Store b/.DS_Store index 11b4919..c92a90d 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/plex-posters/.DS_Store b/plex-posters/.DS_Store new file mode 100644 index 0000000..cb18a1f Binary files /dev/null and b/plex-posters/.DS_Store differ diff --git a/plex-posters/LICENSE b/plex-posters/LICENSE new file mode 100644 index 0000000..e3b6c44 --- /dev/null +++ b/plex-posters/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 dtomlinson + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/plex-posters/README.rst b/plex-posters/README.rst new file mode 100644 index 0000000..4782100 --- /dev/null +++ b/plex-posters/README.rst @@ -0,0 +1 @@ +# plex_posters diff --git a/plex-posters/poetry.lock b/plex-posters/poetry.lock new file mode 100644 index 0000000..3c5eaf3 --- /dev/null +++ b/plex-posters/poetry.lock @@ -0,0 +1,189 @@ +[[package]] +category = "dev" +description = "Atomic file writes." +name = "atomicwrites" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "1.3.0" + +[[package]] +category = "dev" +description = "Classes Without Boilerplate" +name = "attrs" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "19.3.0" + +[[package]] +category = "main" +description = "Python package for providing Mozilla's CA Bundle." +name = "certifi" +optional = false +python-versions = "*" +version = "2019.9.11" + +[[package]] +category = "main" +description = "Universal encoding detector for Python 2 and 3" +name = "chardet" +optional = false +python-versions = "*" +version = "3.0.4" + +[[package]] +category = "dev" +description = "Cross-platform colored terminal text." +marker = "sys_platform == \"win32\"" +name = "colorama" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "0.4.1" + +[[package]] +category = "main" +description = "Internationalized Domain Names in Applications (IDNA)" +name = "idna" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "2.8" + +[[package]] +category = "dev" +description = "More routines for operating on iterables, beyond itertools" +name = "more-itertools" +optional = false +python-versions = ">=3.4" +version = "7.2.0" + +[[package]] +category = "dev" +description = "plugin and hook calling mechanisms for python" +name = "pluggy" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "0.13.0" + +[[package]] +category = "main" +description = "PRAW, an acronym for `Python Reddit API Wrapper`, is a python package that allows for simple access to reddit's API." +name = "praw" +optional = false +python-versions = ">=3.4" +version = "6.4.0" + +[package.dependencies] +prawcore = ">=1.0.1,<2.0" +update-checker = ">=0.16" +websocket-client = ">=0.54.0" + +[[package]] +category = "main" +description = "Low-level communication layer for PRAW 4+." +name = "prawcore" +optional = false +python-versions = "*" +version = "1.0.1" + +[package.dependencies] +requests = ">=2.6.0,<3.0" + +[[package]] +category = "dev" +description = "library with cross-python path, ini-parsing, io, code, log facilities" +name = "py" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "1.8.0" + +[[package]] +category = "dev" +description = "pytest: simple powerful testing with Python" +name = "pytest" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "3.10.1" + +[package.dependencies] +atomicwrites = ">=1.0" +attrs = ">=17.4.0" +colorama = "*" +more-itertools = ">=4.0.0" +pluggy = ">=0.7" +py = ">=1.5.0" +setuptools = "*" +six = ">=1.10.0" + +[[package]] +category = "main" +description = "Python HTTP for Humans." +name = "requests" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +version = "2.22.0" + +[package.dependencies] +certifi = ">=2017.4.17" +chardet = ">=3.0.2,<3.1.0" +idna = ">=2.5,<2.9" +urllib3 = ">=1.21.1,<1.25.0 || >1.25.0,<1.25.1 || >1.25.1,<1.26" + +[[package]] +category = "main" +description = "Python 2 and 3 compatibility utilities" +name = "six" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*" +version = "1.13.0" + +[[package]] +category = "main" +description = "A python module that will check for package updates." +name = "update-checker" +optional = false +python-versions = "*" +version = "0.16" + +[package.dependencies] +requests = ">=2.3.0" + +[[package]] +category = "main" +description = "HTTP library with thread-safe connection pooling, file post, and more." +name = "urllib3" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4" +version = "1.25.7" + +[[package]] +category = "main" +description = "WebSocket client for Python. hybi13 is supported." +name = "websocket-client" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +version = "0.56.0" + +[package.dependencies] +six = "*" + +[metadata] +content-hash = "3b87e030e8047911ca71f9edde0e547018b1282a3122c53430c0d966bb3d4ffd" +python-versions = "^3.8" + +[metadata.hashes] +atomicwrites = ["03472c30eb2c5d1ba9227e4c2ca66ab8287fbfbbda3888aa93dc2e28fc6811b4", "75a9445bac02d8d058d5e1fe689654ba5a6556a1dfd8ce6ec55a0ed79866cfa6"] +attrs = ["08a96c641c3a74e44eb59afb61a24f2cb9f4d7188748e76ba4bb5edfa3cb7d1c", "f7b7ce16570fe9965acd6d30101a28f62fb4a7f9e926b3bbc9b61f8b04247e72"] +certifi = ["e4f3620cfea4f83eedc95b24abd9cd56f3c4b146dd0177e83a21b4eb49e21e50", "fd7c7c74727ddcf00e9acd26bba8da604ffec95bf1c2144e67aff7a8b50e6cef"] +chardet = ["84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae", "fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"] +colorama = ["05eed71e2e327246ad6b38c540c4a3117230b19679b875190486ddd2d721422d", "f8ac84de7840f5b9c4e3347b3c1eaa50f7e49c2b07596221daec5edaabbd7c48"] +idna = ["c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407", "ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c"] +more-itertools = ["409cd48d4db7052af495b09dec721011634af3753ae1ef92d2b32f73a745f832", "92b8c4b06dac4f0611c0729b2f2ede52b2e1bac1ab48f089c7ddc12e26bb60c4"] +pluggy = ["0db4b7601aae1d35b4a033282da476845aa19185c1e6964b25cf324b5e4ec3e6", "fa5fa1622fa6dd5c030e9cad086fa19ef6a0cf6d7a2d12318e10cb49d6d68f34"] +praw = ["2e5c98e49fe60e5308255ed147b670d350f98281f84f582df30f87de727b6de2", "cb8f85541ad4c6b10214ef9639acccfb5fed7ffee977be169b85357d2d2ea6d9"] +prawcore = ["25dd14bf121bc0ad2ffc78e2322d9a01a516017105a5596cc21bb1e9a928b40c", "ab5558efb438aa73fc66c4178bfc809194dea3ce2addf4dec873de7e2fd2824e"] +py = ["64f65755aee5b381cea27766a3a147c3f15b9b6b9ac88676de66ba2ae36793fa", "dc639b046a6e2cff5bbe40194ad65936d6ba360b52b3c3fe1d08a82dd50b5e53"] +pytest = ["3f193df1cfe1d1609d4c583838bea3d532b18d6160fd3f55c9447fdca30848ec", "e246cf173c01169b9617fc07264b7b1316e78d7a650055235d6d897bc80d9660"] +requests = ["11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4", "9cf5292fcd0f598c671cfc1e0d7d1a7f13bb8085e9a590f48c010551dc6c4b31"] +six = ["1f1b7d42e254082a9db6279deae68afb421ceba6158efa6131de7b3003ee93fd", "30f610279e8b2578cab6db20741130331735c781b56053c59c4076da27f06b66"] +update-checker = ["59cfad7f9a0ee99f95f1dfc60f55bf184937bcab46a7270341c2c33695572453", "70e39446fccf77b21192cf7a8214051fa93a636dc3b5c8b602b589d100a168b8"] +urllib3 = ["a8a318824cc77d1fd4b2bec2ded92646630d7fe8619497b142c84a9e6f5a7293", "f3c5fd51747d450d4dcf6f923c81f78f811aab8205fda64b0aba34a4e48b0745"] +websocket-client = ["1151d5fb3a62dc129164292e1227655e4bbc5dd5340a5165dfae61128ec50aa9", "1fd5520878b68b84b5748bb30e592b10d0a91529d5383f74f4964e72b297fd3a"] diff --git a/plex-posters/pyproject.toml b/plex-posters/pyproject.toml new file mode 100644 index 0000000..7c7a3e4 --- /dev/null +++ b/plex-posters/pyproject.toml @@ -0,0 +1,16 @@ +[tool.poetry] +name = "plex-posters" +version = "0.1.0" +description = "" +authors = ["dtomlinson "] + +[tool.poetry.dependencies] +python = "^3.8" +praw = "^6.4" + +[tool.poetry.dev-dependencies] +pytest = "^3.0" + +[build-system] +requires = ["poetry>=0.12"] +build-backend = "poetry.masonry.api" diff --git a/plex-posters/src/.DS_Store b/plex-posters/src/.DS_Store new file mode 100644 index 0000000..54b214a Binary files /dev/null and b/plex-posters/src/.DS_Store differ diff --git a/plex-posters/src/plex_posters/.DS_Store b/plex-posters/src/plex_posters/.DS_Store new file mode 100644 index 0000000..30be445 Binary files /dev/null and b/plex-posters/src/plex_posters/.DS_Store differ diff --git a/plex-posters/src/plex_posters/__init__.py b/plex-posters/src/plex_posters/__init__.py new file mode 100644 index 0000000..2d0a405 --- /dev/null +++ b/plex-posters/src/plex_posters/__init__.py @@ -0,0 +1,67 @@ +from __future__ import annotations +from typing import Type, TypeVar +import praw +import requests + +__version__ = '0.1.0' + +T_movie_poster_porn_scraper = TypeVar( + 'T_movie_poster_porn_scraper', bound="movie_poster_porn_scraper" +) + + +class movie_poster_porn_scraper(object): + def __init__(self, instance: praw.Reddit) -> None: + super().__init__() + self.reddit_instance = instance + + @classmethod + def create_instance( + cls: Type(T_movie_poster_porn_scraper), + client_id: str, + client_secret: str, + user_agent: str, + ) -> T_movie_poster_porn_scraper: + + reddit_instance = praw.Reddit( + client_id=client_id, + client_secret=client_secret, + user_agent=user_agent, + ) + + return cls(reddit_instance) + + def get_hot_posters( + self: T_movie_poster_porn_scraper, + ) -> T_movie_poster_porn_scraper: + + self._poster_urls = {} + for post in self.reddit_instance.subreddit('MoviePosterPorn').hot( + limit=10 + ): + print(post.title) + print(post.url) + # print(dir(post)) + # self._poster_urls.append(post.url) + self._poster_urls[post.title] = post.url + print(self._poster_urls) + return self + + def get_posters(self: T_movie_poster_porn_scraper): + for title, url in self._poster_urls.items(): + r = requests.get(url) + with open('posters/' + title + '.jpg', 'wb') as p: + p.write(r.content) + return self + + +inst = movie_poster_porn_scraper.create_instance( + client_id='yb7NnBPh4riSnw', + client_secret='-3Z0XUXD2XCiksfX26jORG107fA', + user_agent='Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:70.0)' + 'Gecko/20100101 Firefox/70.0', +) + +print(inst.reddit_instance.read_only) + +inst.get_hot_posters().get_posters() diff --git a/plex-posters/src/plex_posters/posters/Castle In The Sky (1986) [1000 × 1371] by Michael Raaflaub.jpg b/plex-posters/src/plex_posters/posters/Castle In The Sky (1986) [1000 × 1371] by Michael Raaflaub.jpg new file mode 100644 index 0000000..f6f4371 Binary files /dev/null and b/plex-posters/src/plex_posters/posters/Castle In The Sky (1986) [1000 × 1371] by Michael Raaflaub.jpg differ diff --git a/plex-posters/src/plex_posters/posters/Not the Droids you're looking for. Concept for movie poster, Brad Bartkus [1173x1599].jpg b/plex-posters/src/plex_posters/posters/Not the Droids you're looking for. Concept for movie poster, Brad Bartkus [1173x1599].jpg new file mode 100644 index 0000000..46bf557 Binary files /dev/null and b/plex-posters/src/plex_posters/posters/Not the Droids you're looking for. Concept for movie poster, Brad Bartkus [1173x1599].jpg differ diff --git a/plex-posters/src/plex_posters/posters/Once Upon a Time In Hollywood (2019) [1549 x 2170] (OC).jpg b/plex-posters/src/plex_posters/posters/Once Upon a Time In Hollywood (2019) [1549 x 2170] (OC).jpg new file mode 100644 index 0000000..d408a2d Binary files /dev/null and b/plex-posters/src/plex_posters/posters/Once Upon a Time In Hollywood (2019) [1549 x 2170] (OC).jpg differ diff --git a/plex-posters/src/plex_posters/posters/Once Upon a Time... in Hollywood (2019) [1000 x 1425].jpg b/plex-posters/src/plex_posters/posters/Once Upon a Time... in Hollywood (2019) [1000 x 1425].jpg new file mode 100644 index 0000000..e45541b Binary files /dev/null and b/plex-posters/src/plex_posters/posters/Once Upon a Time... in Hollywood (2019) [1000 x 1425].jpg differ diff --git a/plex-posters/src/plex_posters/posters/Princess Mononoke (1997) [1400 × 1867] by Michael Raaflaub.jpg b/plex-posters/src/plex_posters/posters/Princess Mononoke (1997) [1400 × 1867] by Michael Raaflaub.jpg new file mode 100644 index 0000000..be71ecb Binary files /dev/null and b/plex-posters/src/plex_posters/posters/Princess Mononoke (1997) [1400 × 1867] by Michael Raaflaub.jpg differ diff --git a/plex-posters/src/plex_posters/posters/Prometheus (2012) [800×1200] by Martin Ansin.jpg b/plex-posters/src/plex_posters/posters/Prometheus (2012) [800×1200] by Martin Ansin.jpg new file mode 100644 index 0000000..a634f67 Binary files /dev/null and b/plex-posters/src/plex_posters/posters/Prometheus (2012) [800×1200] by Martin Ansin.jpg differ diff --git a/plex-posters/src/plex_posters/posters/Road To Perdition (2002) [1200 × 1697] by Hamish Fraser.jpg b/plex-posters/src/plex_posters/posters/Road To Perdition (2002) [1200 × 1697] by Hamish Fraser.jpg new file mode 100644 index 0000000..b996ef6 Binary files /dev/null and b/plex-posters/src/plex_posters/posters/Road To Perdition (2002) [1200 × 1697] by Hamish Fraser.jpg differ diff --git a/plex-posters/src/plex_posters/posters/Saturday Fiction (2019) [4669x7000].jpg b/plex-posters/src/plex_posters/posters/Saturday Fiction (2019) [4669x7000].jpg new file mode 100644 index 0000000..9d91644 Binary files /dev/null and b/plex-posters/src/plex_posters/posters/Saturday Fiction (2019) [4669x7000].jpg differ diff --git a/plex-posters/src/plex_posters/posters/Star Wars: Episode IX - The Rise of Skywalker (2019) [1026 x 1500].jpg b/plex-posters/src/plex_posters/posters/Star Wars: Episode IX - The Rise of Skywalker (2019) [1026 x 1500].jpg new file mode 100644 index 0000000..7e155d3 Binary files /dev/null and b/plex-posters/src/plex_posters/posters/Star Wars: Episode IX - The Rise of Skywalker (2019) [1026 x 1500].jpg differ diff --git a/plex-posters/src/plex_posters/posters/The Muppet Christmas Carol (1992) [1811 × 1200] by Kevin M Wilson.jpg b/plex-posters/src/plex_posters/posters/The Muppet Christmas Carol (1992) [1811 × 1200] by Kevin M Wilson.jpg new file mode 100644 index 0000000..2861798 Binary files /dev/null and b/plex-posters/src/plex_posters/posters/The Muppet Christmas Carol (1992) [1811 × 1200] by Kevin M Wilson.jpg differ diff --git a/plex-posters/tests/__init__.py b/plex-posters/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/plex-posters/tests/test_plex_posters.py b/plex-posters/tests/test_plex_posters.py new file mode 100644 index 0000000..73f6d70 --- /dev/null +++ b/plex-posters/tests/test_plex_posters.py @@ -0,0 +1,5 @@ +from plex_posters import __version__ + + +def test_version(): + assert __version__ == '0.1.0' diff --git a/tmp/markdown.md b/tmp/markdown.md index 77a6549..71a3c69 100644 --- a/tmp/markdown.md +++ b/tmp/markdown.md @@ -1,3 +1,6 @@ -| Command | Description | -|:---------------|:-------------------| -| `bat -r 1:10 ` | show between lines | +| App | Key | Secret Key | +|:----------------|:-----------------|:------------------------------| +| movie-poster-dl | `yb7NnBPh4riSnw` | `-3Z0XUXD2XCiksfX26jORG107fA` | + + +