From 25789243a832c60524bb28c815f48914697a3506 Mon Sep 17 00:00:00 2001 From: jwansek Date: Sat, 6 Mar 2021 23:28:49 +0000 Subject: updated the random image to download it --- app.py | 10 +++++++++- services.py | 17 +++++++++++++++++ static/images/random.jpg | Bin 0 -> 624236 bytes templates/random.html | 2 +- 4 files changed, 27 insertions(+), 2 deletions(-) create mode 100755 static/images/random.jpg diff --git a/app.py b/app.py index a7784dd..c77d55f 100644 --- a/app.py +++ b/app.py @@ -6,6 +6,7 @@ import webbrowser import datetime import database import services +import urllib import random import parser import flask @@ -143,11 +144,18 @@ def serve_random(): except KeyError: flask.abort(400) + sbi = services.get_random_image(tags) + req = urllib.request.Request(sbi.imurl) + mediaContent = urllib.request.urlopen(req).read() + with open(os.path.join("static", "images", "random.jpg"), "wb") as f: + f.write(mediaContent) + with database.Database() as db: return flask.render_template( "random.html", **get_template_items("random image", db), - sbi = services.get_random_image(tags) + sbi = sbi, + localimg = "/img/random.jpg?seed=%i" % random.randint(0, 9999) ) @app.route("/api/") diff --git a/services.py b/services.py index 0423a3e..8531c6b 100644 --- a/services.py +++ b/services.py @@ -14,6 +14,7 @@ import queue import json import time import app +import os theLastId = 0 @@ -129,6 +130,22 @@ class SafebooruImage: def remove_tag(self, tag): return list(set(self.searchTags).difference(set([tag]))) +@dataclass +class DownloadedImage: + imurl: str + + def __enter__(self): + self.filename = os.path.join("static", "images", "random.jpg") + + req = urllib.request.Request(self.imurl, headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_5_8) AppleWebKit/534.50.2 (KHTML, like Gecko) Version/5.0.6 Safari/533.22.3'}) + mediaContent = urllib.request.urlopen(req).read() + with open(self.filename, "wb") as f: + f.write(mediaContent) + return self.filename + + def __exit__(self, type, value, traceback): + os.remove(self.filename) + def get_num_pages(tags): pages_url = "https://safebooru.org/index.php?page=post&s=list&tags=%s" % "+".join(tags) tree = html.fromstring(requests.get(pages_url).content) diff --git a/static/images/random.jpg b/static/images/random.jpg new file mode 100755 index 0000000..5654cca Binary files /dev/null and b/static/images/random.jpg differ diff --git a/templates/random.html b/templates/random.html index e36bb87..b6e7f64 100644 --- a/templates/random.html +++ b/templates/random.html @@ -15,7 +15,7 @@
- +

generate another

artist link

-- cgit v1.2.3