basic structure WIP
This commit is contained in:
commit
021e3216d2
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
keys.py
|
16
Pipfile
Normal file
16
Pipfile
Normal file
@ -0,0 +1,16 @@
|
||||
[[source]]
|
||||
url = "https://pypi.org/simple"
|
||||
verify_ssl = true
|
||||
name = "pypi"
|
||||
|
||||
[packages]
|
||||
pillow = "*"
|
||||
httpx = "*"
|
||||
|
||||
[dev-packages]
|
||||
|
||||
[prod-packages]
|
||||
waveshare-epaper = "*"
|
||||
|
||||
[requires]
|
||||
python_version = "3.9"
|
169
Pipfile.lock
generated
Normal file
169
Pipfile.lock
generated
Normal file
@ -0,0 +1,169 @@
|
||||
{
|
||||
"_meta": {
|
||||
"hash": {
|
||||
"sha256": "67ce1ab808a1bcb6013a54e3d675786aaa8852f6a8a94d3df78c600503cc1e2a"
|
||||
},
|
||||
"pipfile-spec": 6,
|
||||
"requires": {
|
||||
"python_version": "3.9"
|
||||
},
|
||||
"sources": [
|
||||
{
|
||||
"name": "pypi",
|
||||
"url": "https://pypi.org/simple",
|
||||
"verify_ssl": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"default": {
|
||||
"anyio": {
|
||||
"hashes": [
|
||||
"sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f",
|
||||
"sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a"
|
||||
],
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==4.0.0"
|
||||
},
|
||||
"certifi": {
|
||||
"hashes": [
|
||||
"sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082",
|
||||
"sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"
|
||||
],
|
||||
"markers": "python_version >= '3.6'",
|
||||
"version": "==2023.7.22"
|
||||
},
|
||||
"h11": {
|
||||
"hashes": [
|
||||
"sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d",
|
||||
"sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==0.14.0"
|
||||
},
|
||||
"httpcore": {
|
||||
"hashes": [
|
||||
"sha256:13b5e5cd1dca1a6636a6aaea212b19f4f85cd88c366a2b82304181b769aab3c9",
|
||||
"sha256:adc5398ee0a476567bf87467063ee63584a8bce86078bf748e48754f60202ced"
|
||||
],
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==0.18.0"
|
||||
},
|
||||
"httpx": {
|
||||
"hashes": [
|
||||
"sha256:181ea7f8ba3a82578be86ef4171554dd45fec26a02556a744db029a0a27b7100",
|
||||
"sha256:47ecda285389cb32bb2691cc6e069e3ab0205956f681c5b2ad2325719751d875"
|
||||
],
|
||||
"index": "pypi",
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==0.25.0"
|
||||
},
|
||||
"idna": {
|
||||
"hashes": [
|
||||
"sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4",
|
||||
"sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"
|
||||
],
|
||||
"markers": "python_version >= '3.5'",
|
||||
"version": "==3.4"
|
||||
},
|
||||
"pillow": {
|
||||
"hashes": [
|
||||
"sha256:00f438bb841382b15d7deb9a05cc946ee0f2c352653c7aa659e75e592f6fa17d",
|
||||
"sha256:0248f86b3ea061e67817c47ecbe82c23f9dd5d5226200eb9090b3873d3ca32de",
|
||||
"sha256:04f6f6149f266a100374ca3cc368b67fb27c4af9f1cc8cb6306d849dcdf12616",
|
||||
"sha256:062a1610e3bc258bff2328ec43f34244fcec972ee0717200cb1425214fe5b839",
|
||||
"sha256:0a026c188be3b443916179f5d04548092e253beb0c3e2ee0a4e2cdad72f66099",
|
||||
"sha256:0f7c276c05a9767e877a0b4c5050c8bee6a6d960d7f0c11ebda6b99746068c2a",
|
||||
"sha256:1a8413794b4ad9719346cd9306118450b7b00d9a15846451549314a58ac42219",
|
||||
"sha256:1ab05f3db77e98f93964697c8efc49c7954b08dd61cff526b7f2531a22410106",
|
||||
"sha256:1c3ac5423c8c1da5928aa12c6e258921956757d976405e9467c5f39d1d577a4b",
|
||||
"sha256:1c41d960babf951e01a49c9746f92c5a7e0d939d1652d7ba30f6b3090f27e412",
|
||||
"sha256:1fafabe50a6977ac70dfe829b2d5735fd54e190ab55259ec8aea4aaea412fa0b",
|
||||
"sha256:1fb29c07478e6c06a46b867e43b0bcdb241b44cc52be9bc25ce5944eed4648e7",
|
||||
"sha256:24fadc71218ad2b8ffe437b54876c9382b4a29e030a05a9879f615091f42ffc2",
|
||||
"sha256:2cdc65a46e74514ce742c2013cd4a2d12e8553e3a2563c64879f7c7e4d28bce7",
|
||||
"sha256:2ef6721c97894a7aa77723740a09547197533146fba8355e86d6d9a4a1056b14",
|
||||
"sha256:3b834f4b16173e5b92ab6566f0473bfb09f939ba14b23b8da1f54fa63e4b623f",
|
||||
"sha256:3d929a19f5469b3f4df33a3df2983db070ebb2088a1e145e18facbc28cae5b27",
|
||||
"sha256:41f67248d92a5e0a2076d3517d8d4b1e41a97e2df10eb8f93106c89107f38b57",
|
||||
"sha256:47e5bf85b80abc03be7455c95b6d6e4896a62f6541c1f2ce77a7d2bb832af262",
|
||||
"sha256:4d0152565c6aa6ebbfb1e5d8624140a440f2b99bf7afaafbdbf6430426497f28",
|
||||
"sha256:50d08cd0a2ecd2a8657bd3d82c71efd5a58edb04d9308185d66c3a5a5bed9610",
|
||||
"sha256:61f1a9d247317fa08a308daaa8ee7b3f760ab1809ca2da14ecc88ae4257d6172",
|
||||
"sha256:6932a7652464746fcb484f7fc3618e6503d2066d853f68a4bd97193a3996e273",
|
||||
"sha256:7a7e3daa202beb61821c06d2517428e8e7c1aab08943e92ec9e5755c2fc9ba5e",
|
||||
"sha256:7dbaa3c7de82ef37e7708521be41db5565004258ca76945ad74a8e998c30af8d",
|
||||
"sha256:7df5608bc38bd37ef585ae9c38c9cd46d7c81498f086915b0f97255ea60c2818",
|
||||
"sha256:806abdd8249ba3953c33742506fe414880bad78ac25cc9a9b1c6ae97bedd573f",
|
||||
"sha256:883f216eac8712b83a63f41b76ddfb7b2afab1b74abbb413c5df6680f071a6b9",
|
||||
"sha256:912e3812a1dbbc834da2b32299b124b5ddcb664ed354916fd1ed6f193f0e2d01",
|
||||
"sha256:937bdc5a7f5343d1c97dc98149a0be7eb9704e937fe3dc7140e229ae4fc572a7",
|
||||
"sha256:9882a7451c680c12f232a422730f986a1fcd808da0fd428f08b671237237d651",
|
||||
"sha256:9a92109192b360634a4489c0c756364c0c3a2992906752165ecb50544c251312",
|
||||
"sha256:9d7bc666bd8c5a4225e7ac71f2f9d12466ec555e89092728ea0f5c0c2422ea80",
|
||||
"sha256:a5f63b5a68daedc54c7c3464508d8c12075e56dcfbd42f8c1bf40169061ae666",
|
||||
"sha256:a646e48de237d860c36e0db37ecaecaa3619e6f3e9d5319e527ccbc8151df061",
|
||||
"sha256:a89b8312d51715b510a4fe9fc13686283f376cfd5abca8cd1c65e4c76e21081b",
|
||||
"sha256:a92386125e9ee90381c3369f57a2a50fa9e6aa8b1cf1d9c4b200d41a7dd8e992",
|
||||
"sha256:ae88931f93214777c7a3aa0a8f92a683f83ecde27f65a45f95f22d289a69e593",
|
||||
"sha256:afc8eef765d948543a4775f00b7b8c079b3321d6b675dde0d02afa2ee23000b4",
|
||||
"sha256:b0eb01ca85b2361b09480784a7931fc648ed8b7836f01fb9241141b968feb1db",
|
||||
"sha256:b1c25762197144e211efb5f4e8ad656f36c8d214d390585d1d21281f46d556ba",
|
||||
"sha256:b4005fee46ed9be0b8fb42be0c20e79411533d1fd58edabebc0dd24626882cfd",
|
||||
"sha256:b920e4d028f6442bea9a75b7491c063f0b9a3972520731ed26c83e254302eb1e",
|
||||
"sha256:baada14941c83079bf84c037e2d8b7506ce201e92e3d2fa0d1303507a8538212",
|
||||
"sha256:bb40c011447712d2e19cc261c82655f75f32cb724788df315ed992a4d65696bb",
|
||||
"sha256:c0949b55eb607898e28eaccb525ab104b2d86542a85c74baf3a6dc24002edec2",
|
||||
"sha256:c9aeea7b63edb7884b031a35305629a7593272b54f429a9869a4f63a1bf04c34",
|
||||
"sha256:cfe96560c6ce2f4c07d6647af2d0f3c54cc33289894ebd88cfbb3bcd5391e256",
|
||||
"sha256:d27b5997bdd2eb9fb199982bb7eb6164db0426904020dc38c10203187ae2ff2f",
|
||||
"sha256:d921bc90b1defa55c9917ca6b6b71430e4286fc9e44c55ead78ca1a9f9eba5f2",
|
||||
"sha256:e6bf8de6c36ed96c86ea3b6e1d5273c53f46ef518a062464cd7ef5dd2cf92e38",
|
||||
"sha256:eaed6977fa73408b7b8a24e8b14e59e1668cfc0f4c40193ea7ced8e210adf996",
|
||||
"sha256:fa1d323703cfdac2036af05191b969b910d8f115cf53093125e4058f62012c9a",
|
||||
"sha256:fe1e26e1ffc38be097f0ba1d0d07fcade2bcfd1d023cda5b29935ae8052bd793"
|
||||
],
|
||||
"index": "pypi",
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==10.1.0"
|
||||
},
|
||||
"sniffio": {
|
||||
"hashes": [
|
||||
"sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101",
|
||||
"sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==1.3.0"
|
||||
}
|
||||
},
|
||||
"develop": {},
|
||||
"prod-packages": {
|
||||
"rpi.gpio": {
|
||||
"hashes": [
|
||||
"sha256:15311d3b063b71dee738cd26570effc9985a952454d162937c34e08c0fc99902",
|
||||
"sha256:26b2ade4bb353bbe5417a64e40b45cdf00a82f27c2d320c0dd46c59751959d77",
|
||||
"sha256:29226823da8b5ccb9001d795a944f2e00924eeae583490f0bc7317581172c624",
|
||||
"sha256:57b6c044ef5375a78c8dda27cdfadf329e76aa6943cd6cffbbbd345a9adf9ca5",
|
||||
"sha256:77afb817b81331ce3049a4b8f94a85e41b7c404d8e56b61ac0f1eb75c3120868",
|
||||
"sha256:96ea7e5bf6bf592828487bfa7d3d1d0e432d5d1682e9e33b4dab398914628fcd",
|
||||
"sha256:b86b66dc02faa5461b443a1e1f0c1d209d64ab5229696f32fb3b0215e0600c8c",
|
||||
"sha256:cd61c4b03c37b62bba4a5acfea9862749c33c618e0295e7e90aa4713fb373b70"
|
||||
],
|
||||
"version": "==0.7.1"
|
||||
},
|
||||
"spidev": {
|
||||
"hashes": [
|
||||
"sha256:14dbc37594a4aaef85403ab617985d3c3ef464d62bc9b769ef552db53701115b",
|
||||
"sha256:280abc00a1ef7780ef62c3f294f52a2527b6c47d8c269fea98664970bcaf6da5"
|
||||
],
|
||||
"version": "==3.6"
|
||||
},
|
||||
"waveshare-epaper": {
|
||||
"hashes": [
|
||||
"sha256:a1aa9b330b7610d8c946af3656455345750f729b6876f804c9505caedd4b8b7d",
|
||||
"sha256:ed014ffb345ac16c502923947f036cd4c2ef762abec2ffa1fa84f298d4b53552"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==1.2.0"
|
||||
}
|
||||
}
|
||||
}
|
26
image_convert.py
Normal file
26
image_convert.py
Normal file
@ -0,0 +1,26 @@
|
||||
from PIL import Image
|
||||
|
||||
class ImageShrink:
|
||||
"""Shrinks a given image (bytearray) to a given resolution (width, height)"""
|
||||
resolution = (480, 800)
|
||||
|
||||
def __init__(self) -> None:
|
||||
pass
|
||||
|
||||
def convert(self, image: bytearray) -> bytearray:
|
||||
image = self.shrink(image)
|
||||
image = self.convert_to_black_and_white(image)
|
||||
image.show()
|
||||
|
||||
|
||||
def shrink(self, image: bytearray) -> bytearray:
|
||||
""""Shrinks a given image (bytearray) to a given resolution (width, height)"""
|
||||
img = Image.frombytes()
|
||||
img = Image.open(image)
|
||||
img.thumbnail(self.resolution)
|
||||
return img
|
||||
|
||||
def convert_to_black_and_white(self, image: bytearray) -> bytearray:
|
||||
img = Image.open(image)
|
||||
img = img.convert("L")
|
||||
return img
|
56
image_get.py
Normal file
56
image_get.py
Normal file
@ -0,0 +1,56 @@
|
||||
import httpx as h
|
||||
import json
|
||||
import random
|
||||
|
||||
import keys
|
||||
|
||||
|
||||
class ImageGetException(Exception):
|
||||
pass
|
||||
|
||||
class ImageGetter:
|
||||
headers = {
|
||||
"x-api-key": keys.immich_api_key
|
||||
}
|
||||
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
|
||||
def get_random_image(self) -> bytearray:
|
||||
id = self.get_random_image_id()
|
||||
bytes = self.get_image_file(id)
|
||||
return bytes
|
||||
|
||||
|
||||
def get_random_image_id(self) -> str:
|
||||
url = keys.immich_api_root_url + "album/" + keys.immich_album_id
|
||||
headers = self.headers | {"Accept": "application/json"}
|
||||
|
||||
response = h.request("GET", url, headers=headers, data={})
|
||||
if response.status_code == 200:
|
||||
response = json.loads(response.text)
|
||||
else:
|
||||
raise ImageGetException("Error in step get_random_image_id: " + str(response.status_code))
|
||||
|
||||
images = response['assets']
|
||||
print(f"Picking random image out of {len(images)} album images")
|
||||
image = random.choice(images)
|
||||
return image["id"]
|
||||
|
||||
|
||||
def get_image_file(self, image_id: str) -> bytearray:
|
||||
|
||||
url = keys.immich_api_root_url + "asset/download/" + image_id
|
||||
|
||||
headers = self.headers | {"Accept": "application/octet-stream"}
|
||||
response = h.request("POST", url, headers=headers, data={})
|
||||
if not response.status_code == 200:
|
||||
raise ImageGetException("Error in step get_image_file: " + str(response.status_code))
|
||||
|
||||
return response.content
|
||||
|
||||
|
||||
T = ImageGetter()
|
||||
# print(T.get_random_image())
|
||||
T.get_random_image()
|
0
image_show.py
Normal file
0
image_show.py
Normal file
Loading…
x
Reference in New Issue
Block a user