def load_images(): while True: uid = self.image_queue.get(block = True) image = QImage(str(picture_file_for_uid(uid))).scaled( IMG_SIZE, IMG_SIZE, QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation) self.images[uid] = image self.update()
def download_or_show_similar(data: dict, threshold=0.9) -> List[SimilarImage]: file = get_cached_file(data["img"]) h = hash_img(file) similar = find_similar_images_hash(h, threshold) if similar: return [ SimilarImage(s[0], s[1], picture_file_for_uid(s[1]).name) for s in similar ] return download(data)
def main(ARGS): from uuid import UUID from cutespam.db import find_similar_images, picture_file_for_uid uuid = UUID(ARGS.uuid) result = find_similar_images(uuid, ARGS.threshold / 100, ARGS.limit) for r in result: uid = r[1] if ARGS.uri: uid = picture_file_for_uid(uid).absolute().as_uri() print(f"{r[0]:.1%}: {uid}")
def main(ARGS): from uuid import UUID from cutespam import open_file from cutespam.db import picture_file_for_uid, get_random_uid if ARGS.uid: uid = UUID(ARGS.uid) else: uid = get_random_uid() path = picture_file_for_uid(uid) if ARGS.uri: print(path.absolute().as_uri()) else: open_file(path)
def main(ARGS): from cutespam.db import query, picture_file_for_uid import json filtered = query(keyword=ARGS.keyword, not_keyword=ARGS.not_keyword, author=ARGS.author, caption=ARGS.caption, source=ARGS.source, rating=ARGS.rating, limit=ARGS.limit, random=ARGS.random) if ARGS.count: print(len(filtered)) else: l = [(picture_file_for_uid(uid).absolute().as_uri() if ARGS.uri else str(uid)) for uid in filtered] if ARGS.json: print(json.dumps(l, indent=4)) else: print("\n".join(l))
def html_output(duplicates): t_html = """ <html> <head> <style> table {{ table-layout: fixed; border-bottom: 1px solid black; width: 100%; padding: 5px; }} img {{ max-width: 100%; max-height: 500px; }} code {{ display: block; white-space: pre-wrap; word-wrap: break-word; }} </style> </head> <body> {tables} </body> </html> """ t_table = """ <table> <tr>{images}</tr> <tr>{links}</tr> <tr>{dimensions}</tr> <tr>{tags}</tr> </table> """ tables = "" for duplicate in duplicates: images = "" links = "" dimensions = "" tags = "" for uid in duplicate: d = picture_file_for_uid(uid) fsize = os.path.getsize(d.resolve()) / 1_000_000 with Image.open(d) as img_data: width, height = img_data.size fformat = img_data.format meta = CuteMeta.from_db(uid) path = str(d.resolve().absolute()) images += f"<td><img src='{path}'/></td>" links += f"<td><a href={path}><code>{path}</code></a></td>" dimensions += f"<td><code>Resolution: {width}x{height}\nFormat: {fformat}\nSize: {fsize:.2f} MB</code></td>" tags += f"<td><code>{meta.to_string()}</code></td>" tables += t_table.format(images=images, links=links, dimensions=dimensions, tags=tags) return t_html.format(tables=tables)
def set_image(self, uid): self.image = QImage(str(picture_file_for_uid(uid)))