Skip to content

Commit

Permalink
Merge pull request #37 from mcilya/next
Browse files Browse the repository at this point in the history
Next
  • Loading branch information
ada-af committed Oct 26, 2020
2 parents 7cc8474 + e1aed31 commit 5a6e7d8
Show file tree
Hide file tree
Showing 15 changed files with 190 additions and 61 deletions.
27 changes: 26 additions & 1 deletion DBooru_web.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@
from dermod import input_parser as ip
from dermod import mime_types as mimes
from dermod import predict
from dermod.helpers import Option, Module_Options, ThumbFile
from dermod.imgloader import Loader
from dermod.helpers import Option, Module_Options, ThumbFile, DBImage

try:
import PIL.Image as Image
Expand Down Expand Up @@ -280,6 +281,30 @@ def first_run():
update_line("first_run", False)


@DBooru.route("/reload/<string:imgid>", methods=["PATCH"])
def image_reload(imgid):
if request.method != "PATCH":
return
image_data = DBImage(db.search_by_id(*reversed(imgid.split("_"))))
print(f"Reloading {image_data.prefix + image_data.no_p_fname}")
try:
os.remove(settings_file.images_path + "/" + image_data.prefix + image_data.no_p_fname)
except:
pass
l = Loader(image_data.link, image_data.prefix + image_data.no_p_fname)
l.start()
return Response(status=200)

@DBooru.route("/remove/<string:imgid>", methods=["DELETE"])
def remove_image(imgid):
image_data = DBImage(db.search_by_id(*reversed(imgid.split("_"))))
db.remove_entry(image_data.id, image_data.prefix)
try:
os.remove(settings_file.images_path + "/" + image_data.prefix + image_data.no_p_fname)
except:
pass
return Response(status=200)

@DBooru.route("/json/search")
def api_search():
page = request.args.get('page', default=1, type=int)
Expand Down
5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
- [Basic search rules](#basic-search-rules)
- [Special tags](#special-tags)
- [Syntax](#syntax)
- [Settings_file.py](#settingsfilepy)
- [Settings_file.py](#settings_filepy)
- [/settings autogeneration](#settings-autogeneration)
- [Keywords](#keywords)
- [Examples](#examples-1)
Expand Down Expand Up @@ -101,6 +101,7 @@
>- markupsafe
>- click
>- itsdangerous
>- termcolor
>
>Or you can just type `pip install --user -r requirements.txt` in terminal
Expand Down Expand Up @@ -286,6 +287,8 @@ Enter this commands if prompt starts with `Search@DB>`
| "/random" | GET | | Redirects to random image | Redirect (302) to /image/\* |
| "/random/**tags** | GET | | Redirects to random image tagged with **tags** | Redirect (302) to /image/\* |
| "/update" | GET | | Updates DB (Same as CLI: get images) | Returns 200 code when update started successfully or 409 in case when there's already update in progress |
| "/remove/**prefix_id**" | DELETE | | Used to remove image and its DB entry | |
| "/reload/**prefix_id**" | PATCH | | Triggers image redownloading | |
| "/settings" | GET | | Settings page | HTML-page |
| "/settings/\<option>" | POST | opt_type=**variable_type**&\<option>_new_opt=**value** | Endpoint for changing settings_file.py variables | Redirect (302) to /settings#\<option>\_form |
| "/settings/\<modulename>/\<option>" | POST | \<option>_new_opt=**value** | Endpoint for changing module's variables | Redirect (302) to /settings#\<modulename>\_form |
Expand Down
8 changes: 8 additions & 0 deletions dermod/db.py
Original file line number Diff line number Diff line change
Expand Up @@ -206,4 +206,12 @@ def tagged_get_next(id, tag):
result = list(cursor.execute("select * from temp1 where (id>{}) order by id asc limit 1".format(int(id))).fetchall())[0]
return result

def remove_entry(imgid, prefix):
init_db()
sql = f"delete from images where (id = {int(imgid)}) and (prefix = '{prefix}')"
print(sql)
cursor.execute(sql)
conn.commit()
conn.close()

precomp()
27 changes: 26 additions & 1 deletion dermod/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,4 +55,29 @@ def _disassemble(self, data):
else:
self.description.append(i[1:].strip())
self.name = data[-1].split('=')[0].strip()
self.value_now = data[-1].split('=', maxsplit=1)[1].strip()
self.value_now = data[-1].split('=', maxsplit=1)[1].strip()


class DBImage:
def __init__(self, data=None):
if isinstance(data, list) or isinstance(data, tuple):
self.no_p_fname = data[0]
self.tags = set(data[1].split(',,'))
self.width = data[2]
self.height = data[3]
self.ratio = data[4]
self.link = data[5]
self.prefix = data[6]
self.id = data[7]
else:
self.no_p_fname
self.tags
self.width
self.height
self.ratio
self.link
self.prefix
self.id

def __repr__(self):
return f"<Image {self.prefix}{self.id}>"
30 changes: 11 additions & 19 deletions dermod/imgloader.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,22 +18,24 @@


class Loader(Thread):
def __init__(self, url, fileid, fileform, is_proxy, proxy_ip, proxy_port):
def __init__(self, url, fileid, fileform=''):
Thread.__init__(self)
self.readiness = 0
self.url = url
self.id = fileid
self.format = fileform
self.raw_data = b''
self.proxy = is_proxy
self.ip = proxy_ip
self.port = proxy_port
self.proxy = settings_file.enable_proxy
self.ip = settings_file.proxy_ip
self.port = settings_file.proxy_port
self.tmp = None
if settings_file.suppress_errors is True:
logging.raiseExceptions = False

def run(self):
print(f"Receiving {self.id}") if self.format == '' else ''
self.get_raw_image()
print(f"Wiritng {self.id}") if self.format == '' else ''
self.writer()
self.readiness = 1
del self.raw_data
Expand All @@ -60,10 +62,9 @@ def get_raw_image(self):

def writer(self):
try:
open(settings_file.images_path + self.id +
'.' + self.format, 'rb').close()
open(settings_file.images_path + self.id + (('.' + self.format) if self.format != '' else ''), 'rb').close()
except FileNotFoundError:
with open(settings_file.images_path + self.id + '.' + self.format, 'wb') as file:
with open(settings_file.images_path + self.id + (('.' + self.format) if self.format != '' else ''), 'wb') as file:
file.write(self.raw_data)
file.flush()

Expand Down Expand Up @@ -99,10 +100,7 @@ def run(module, file, check_files=True, check_local=True, endwith="\r"):
break
t = Loader(parsed[i][2],
str(parsed[i][7] + parsed[i][0]),
parsed[i][1],
settings_file.enable_proxy,
settings_file.proxy_ip,
settings_file.proxy_port)
parsed[i][1])
t.start()
tc.threads.append(t)
time.sleep(slp)
Expand All @@ -112,18 +110,12 @@ def run(module, file, check_files=True, check_local=True, endwith="\r"):
time.sleep(settings_file.sleep_time)
else:
for i in range(chk):
print(
"Loading image {} of {} ({}% done) (Running threads {})".format(
i, chk, format(((i/chk)*100), '.4g'), len(tc.threads)) + " " * 32,
flush=True, end=endwith)
print(f"Loading image {i} of {chk} ({format(((i/chk)*100), '.4g')}% done) (Running threads {len(tc.threads)})" + " " * 32, flush=True, end=endwith)
if is_error_code == True:
break
t = Loader(parsed[i][2],
str(parsed[i][7] + parsed[i][0]),
parsed[i][1],
settings_file.enable_proxy,
settings_file.proxy_ip,
settings_file.proxy_port)
parsed[i][1])
t.start()
tc.threads.append(t)
time.sleep(module.slp)
Expand Down
8 changes: 7 additions & 1 deletion static/bootstrap-grid.min.css

Large diffs are not rendered by default.

9 changes: 8 additions & 1 deletion static/bootstrap-reboot.min.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions static/bootstrap.bundle.min.js

Large diffs are not rendered by default.

12 changes: 6 additions & 6 deletions static/bootstrap.min.css

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion static/bootstrap.min.css.map

Large diffs are not rendered by default.

12 changes: 6 additions & 6 deletions static/bootstrap.min.js

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions static/bootstrap.min.js.map

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions static/popper.min.js

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions templates/base.html
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

{% block scripts_head %}{% endblock scripts_head %}
<script src="{{ url_for('static', filename='jquery.min.js') }}"></script>
<script src="{{ url_for('static', filename='popper.min.js') }}"></script>
<script src="{{ url_for('static', filename='bootstrap.min.js') }}"></script>
<script>
function check_night() {
Expand Down
Loading

0 comments on commit 5a6e7d8

Please sign in to comment.