diff options
-rw-r--r-- | tagit/apps/port-schema.nt | 5 | ||||
-rw-r--r-- | tagit/apps/port_data.py | 22 | ||||
-rw-r--r-- | tagit/widgets/browser.py | 10 |
3 files changed, 22 insertions, 15 deletions
diff --git a/tagit/apps/port-schema.nt b/tagit/apps/port-schema.nt index 2b354e5..7569052 100644 --- a/tagit/apps/port-schema.nt +++ b/tagit/apps/port-schema.nt @@ -19,10 +19,11 @@ bsfs:Tag rdfs:subClassOf bsfs:Node . bsfs:Group rdfs:subClassOf bsfs:Node . # common definitions -bsfs:Blob rdfs:subClassOf bsfs:Literal . +bsfs:BinaryBlob rdfs:subClassOf bsfs:Literal . bsfs:URI rdfs:subClassOf bsfs:Literal . bsfs:Number rdfs:subClassOf bsfs:Literal . bsfs:Time rdfs:subClassOf bsfs:Literal . +bsfs:JPEG rdfs:subClassOf bsfs:BinaryBlob . xsd:string rdfs:subClassOf bsfs:Literal . xsd:integer rdfs:subClassOf bsfs:Number . @@ -101,7 +102,7 @@ bsp:orientation rdfs:subClassOf bsfs:Predicate ; bsp:asset rdfs:subClassOf bsfs:Predicate ; rdfs:domain bsfs:Preview ; - rdfs:range xsd:string ; # FIXME: mb/port + rdfs:range bsfs:JPEG ; bsfs:unique "true"^^xsd:boolean . diff --git a/tagit/apps/port_data.py b/tagit/apps/port_data.py index 56fb522..cda2d63 100644 --- a/tagit/apps/port_data.py +++ b/tagit/apps/port_data.py @@ -52,76 +52,76 @@ def add_port_data(store): .set(ns.bsp.width, 100) \ .set(ns.bsp.height, 100) \ .set(ns.bsp.orientation, 1) \ - .set(ns.bsp.asset, str(os.path.join(base, 'ent01_w100_h100.jpg'))) + .set(ns.bsp.asset, open(os.path.join(base, 'ent01_w100_h100.jpg'), 'rb').read()) ) n0.set(ns.bse.preview, store.node(ns.bsfs.Preview, str('http://example.com/me/preview#ent01_w400_h200')) \ .set(ns.bsp.width, 200) \ .set(ns.bsp.height, 400) \ .set(ns.bsp.orientation, 1) \ - .set(ns.bsp.asset, str(os.path.join(base, 'ent01_w400_h200.jpg'))) + .set(ns.bsp.asset, open(os.path.join(base, 'ent01_w400_h200.jpg'), 'rb').read()) ) n0.set(ns.bse.preview, store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent01_w400_h400')) \ .set(ns.bsp.width, 400) \ .set(ns.bsp.height, 400) \ .set(ns.bsp.orientation, 1) \ - .set(ns.bsp.asset, str(os.path.join(base, 'ent01_w400_h400.jpg'))) + .set(ns.bsp.asset, open(os.path.join(base, 'ent01_w400_h400.jpg'), 'rb').read()) ) n1.set(ns.bse.preview, store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent02_w100_h100')) \ .set(ns.bsp.width, 100) \ .set(ns.bsp.height, 100) \ .set(ns.bsp.orientation, 1) \ - .set(ns.bsp.asset, str(os.path.join(base, 'ent02_w100_h100.jpg'))) + .set(ns.bsp.asset, open(os.path.join(base, 'ent02_w100_h100.jpg'), 'rb').read()) ) n1.set(ns.bse.preview, store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent02_w400_h200')) \ .set(ns.bsp.width, 200) \ .set(ns.bsp.height, 400) \ .set(ns.bsp.orientation, 1) \ - .set(ns.bsp.asset, str(os.path.join(base, 'ent02_w400_h200.jpg'))) + .set(ns.bsp.asset, open(os.path.join(base, 'ent02_w400_h200.jpg'), 'rb').read()) ) n2.set(ns.bse.preview, store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent03_w100_h100')) \ .set(ns.bsp.width, 100) \ .set(ns.bsp.height, 100) \ .set(ns.bsp.orientation, 1) \ - .set(ns.bsp.asset, str(os.path.join(base, 'ent03_w100_h100.jpg'))) + .set(ns.bsp.asset, open(os.path.join(base, 'ent03_w100_h100.jpg'), 'rb').read()) ) n2.set(ns.bse.preview, store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent03_w400_h200')) \ .set(ns.bsp.width, 200) \ .set(ns.bsp.height, 400) \ .set(ns.bsp.orientation, 1) \ - .set(ns.bsp.asset, str(os.path.join(base, 'ent03_w400_h200.jpg'))) + .set(ns.bsp.asset, open(os.path.join(base, 'ent03_w400_h200.jpg'), 'rb').read()) ) n3.set(ns.bse.preview, store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent04_w100_h100')) \ .set(ns.bsp.width, 100) \ .set(ns.bsp.height, 100) \ .set(ns.bsp.orientation, 1) \ - .set(ns.bsp.asset, str(os.path.join(base, 'ent04_w100_h100.png'))) + .set(ns.bsp.asset, open(os.path.join(base, 'ent04_w100_h100.png'), 'rb').read()) ) n3.set(ns.bse.preview, store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent04_w400_h200')) \ .set(ns.bsp.width, 200) \ .set(ns.bsp.height, 400) \ .set(ns.bsp.orientation, 1) \ - .set(ns.bsp.asset, str(os.path.join(base, 'ent04_w400_h200.png'))) + .set(ns.bsp.asset, open(os.path.join(base, 'ent04_w400_h200.png'), 'rb').read()) ) n4.set(ns.bse.preview, store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent05_w100_h100')) \ .set(ns.bsp.width, 100) \ .set(ns.bsp.height, 100) \ .set(ns.bsp.orientation, 1) \ - .set(ns.bsp.asset, str(os.path.join(base, 'ent05_w100_h100.jpg'))) + .set(ns.bsp.asset, open(os.path.join(base, 'ent05_w100_h100.jpg'), 'rb').read()) ) n4.set(ns.bse.preview, store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent05_w400_h200')) \ .set(ns.bsp.width, 200) \ .set(ns.bsp.height, 400) \ .set(ns.bsp.orientation, 1) \ - .set(ns.bsp.asset, str(os.path.join(base, 'ent05_w400_h200.jpg'))) + .set(ns.bsp.asset, open(os.path.join(base, 'ent05_w400_h200.jpg'), 'rb').read()) ) diff --git a/tagit/widgets/browser.py b/tagit/widgets/browser.py index 4a254ee..1e42c9c 100644 --- a/tagit/widgets/browser.py +++ b/tagit/widgets/browser.py @@ -7,6 +7,7 @@ Author: Matthias Baumgartner, 2022 # standard imports from collections import defaultdict from functools import reduce, partial +import io import logging import math import operator @@ -421,8 +422,13 @@ class Browser(GridLayout, StorageAwareMixin, ConfigAwareMixin): # select the best fitting preview chosen = rmatcher.by_area_min(resolution, options) # open the preview file, default if no asset is available - thumb = open(chosen.get(ns.bsp.asset, default=default), 'rb') # FIXME: mb/port: asset storage - except IndexError: + thumb_data = chosen.asset(default=None) # FIXME: get all assets in one call + if thumb_data is None: + raise KeyError() + thumb = io.BytesIO(thumb_data) + + except (KeyError, IndexError): + # KeyError: # no viable resolution found thumb = open(default, 'rb') # update the image in the child widget |