diff --git a/.gitignore b/.gitignore index 0ff8dbc..3eef71b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,11 @@ -.idea -image/dzi -image/original -image/script image/image.txt -.venv +image/dzi +image/dzi_edited +image/original +image/script/bin +image/script/include +image/script/lib +image/script/lib64 +image/script/pyvenv.cfg +upload.sh +annotations diff --git a/annotations/annotations.w3c.json b/annotations/annotations.w3c.json index d4e4fe9..239fa69 100644 --- a/annotations/annotations.w3c.json +++ b/annotations/annotations.w3c.json @@ -1,72 +1,2002 @@ -[{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "#a88b22d0-6106-4872-9435-c78b5e890000", - "type": "Annotation", - "body": [{ - "type": "TextualBody", - "value": "ruler by @username", - "format" : "text/html", - "language" : "en" - }], - "target": { - "selector": { - "type": "FragmentSelector", - "conformsTo": "http://www.w3.org/TR/media-frags/", - "value": "xywh=pixel:0,0,1000,1000" +[ + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#96f1b457-bea7-400e-b071-65087b462a3b", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUcollab
\ud83d\udc64 @SakuraStrawberry", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:9000,0,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#9d49fcd2-ecea-430c-b181-9c92ded47041", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f GRIENEISNEI
\ud83d\udc64 @MASOCHIST_", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:10000,0,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#7d706411-b6ff-4e3d-bdb1-99d22122ff99", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUcollab
\ud83d\udc64 @Fizzmire", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:11000,0,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#1c845c29-1415-4f5e-8d7c-15be8dec39fd", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f Bank Heist
\ud83d\udc64 @ex0ticdreamers", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:5000,1000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#573477ef-9edd-4ec5-8120-5140005fc095", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUcollab !!
\ud83d\udc64 @PHEONIIX_", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:6000,1000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#0bd35177-512f-42bc-b921-a70d630b1373", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f 735th post-SUCollab
\ud83d\udc64 @juicy_cream357", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:7000,1000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#30b9e7e0-3a39-49f0-b09f-aafce02fdf82", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f \ud83c\udf4eRed skelly\ud83d\udc80
\ud83d\udc64 @soulskull", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:8000,1000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#886841ee-73c2-4387-96fa-2f0b7c408ad7", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f TERENCE\u203c\ufe0f\u203c\ufe0f\u203c\ufe0f\ud83c\udf08
\ud83d\udc64 @segasaturnsonic", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:9000,1000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#911f4ab0-91c8-482a-8f73-804d01e23371", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUcollab
\ud83d\udc64 @Zoe_the_weirdo", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:10000,1000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#4cfec64e-f825-41e5-ac0a-7cc640fcf036", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f Violetta baked a cake for Sketchers United \ud83c\udf82
\ud83d\udc64 @VioletGem", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:11000,1000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#95971746-75eb-4b66-8474-6f06f92221b1", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f my entry for the #SUcollab
\ud83d\udc64 @itsjustfaz", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:12000,1000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#878fc8c3-bb9c-4822-bcd2-bab1a0c875ee", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f My entry for the new SU collab!
\ud83d\udc64 @RayManiaPlus897", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:13000,1000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#9594e37f-53b9-45a1-b86d-c6e7485a5c89", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f \ud83e\udea9
\ud83d\udc64 @NotSoEdibleFruit", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:2000,2000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#dc9d29bf-4fbb-4706-a4e1-24476d788715", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f \u2728\ufe0f
\ud83d\udc64 @Zarzi", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:3000,2000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#cffe5132-70b2-46da-aab8-01d677a40159", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUcollab
\ud83d\udc64 @Tr3v0r", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:4000,2000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#85fcc6b2-d134-4ced-b720-f055efd552cb", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f Human glockenspiel. Bottom text
\ud83d\udc64 @Meowtown", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:5000,2000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#3bf63e1e-67e1-4835-ae83-53cd92d22844", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f something before I go to art class
\ud83d\udc64 @9funkt", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:6000,2000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#7bdd5832-30c6-4c1b-9441-5f64a2921615", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUcollab
\ud83d\udc64 @_HeadlessMoron", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:7000,2000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#23b35c64-063e-40f6-bd27-99ca83eb6578", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f sillies
\ud83d\udc64 @devon", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:8000,2000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#214b90ab-1386-48a6-a657-5ef833cb186a", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f whoa #SUcollab
\ud83d\udc64 @scrae", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:9000,2000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#e5ae39f3-de1e-4181-ae1d-77e5e6d945dc", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f Josey! He\u2019s back! Happy birthday SU! 4 years!
\ud83d\udc64 @EnchantedKing", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:2000,3000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#99c66e36-e7ad-4f97-875e-e68c806eb113", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUcollab
\ud83d\udc64 @Worsethansoap", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:3000,3000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#95b0b4ce-de06-42d8-926e-e63db46f4e04", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f IM BLUE
\ud83d\udc64 @Tv_kid", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:4000,3000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#39aff65d-b79b-46ac-9e7e-13a6ad1746f1", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUcollab
\ud83d\udc64 @QuackAlt", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:5000,3000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#62507269-b865-4bf1-bfd2-9a7ff27ae764", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f I didn't rly know what to draw for this lol
\ud83d\udc64 @Fl0wer1235", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:6000,3000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#03f60773-99d6-4bd1-b990-efe1328e30ae", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUcollab
\ud83d\udc64 @Sanity", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:1000,4000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#89d22688-ed59-4fc4-b4f1-ae453e3c73fa", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f Colorful\ud83d\udc7e
\ud83d\udc64 @SkyHeartbreaking", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:2000,4000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#a15e9241-d062-4e47-a6f4-0383b2cec284", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f Happy birthday, SU #SUcollab
\ud83d\udc64 @GH00000000TLYBUN", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:3000,4000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#97112f51-3e6a-4fc9-8b12-3b87a7d19a2c", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUcollab !!!!!!!!! \ud83d\udca5\ud83d\udca5\ud83d\udca5\ud83d\udca5\ud83d\udca5\ud83d\udca5
\ud83d\udc64 @alxft", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:4000,4000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#ce538fef-1bae-40f6-9a4f-c88855c7a929", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUcollab
\ud83d\udc64 @SpongeIsANerd", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:5000,4000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#9bb0f711-9a0f-4b5b-82b1-b47bfd9b47ff", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f Weee
\ud83d\udc64 @godofbots", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:6000,4000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#33294eca-37bd-4f8f-aad6-debbad29b275", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUcollab
\ud83d\udc64 @Typicalmoth581", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:15000,4000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#58e71eec-f5b6-4253-b275-98a450ae5ab0", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUcollab
\ud83d\udc64 @_AutumnMushroom_", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:16000,4000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#197ba862-4a0f-4772-a003-bdad0971206f", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f Me
\ud83d\udc64 @Amidot1", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:17000,4000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#5ee14a48-1810-4240-860b-3476025e12fa", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUcollab !!!!!!
\ud83d\udc64 @makronen", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:18000,4000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#5b0027b1-a4f3-4034-9525-ebfa017697a1", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUcollab \ud83d\udc40
\ud83d\udc64 @ThatLonelyArtist", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:19000,4000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#e2731bc7-cc03-4f35-8f5c-362a6d432fcc", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUcollab
\ud83d\udc64 @mole", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:20000,4000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#9ae8419a-013e-4379-883d-ec484c906b33", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUCollab
\ud83d\udc64 @Blue_", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:21000,4000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#a15c7a73-e7c3-4ee5-bb09-4800080f7801", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUcollab
\ud83d\udc64 @DaSonicBoi", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:22000,4000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#846d605f-43b9-460e-8c74-b18658c03d48", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUCollab
\ud83d\udc64 @urlocalthing", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:23000,4000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#0760545e-418d-4cfe-a7e5-d58f97c6eb97", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUcollab
\ud83d\udc64 @__s0m3p3rs0n__", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:24000,4000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#93e7fd1e-3d03-47a4-8140-11c0b20540a3", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUcollab
\ud83d\udc64 @doomkittyzero", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:0,5000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#90c8d5fb-4bca-4645-980b-431e79dac5bc", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUcollab
\ud83d\udc64 @Axolotl564", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:1000,5000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#7486232b-ce31-4b38-ae57-3884777cbc8e", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f I missed everything [but happy 4th year su
\ud83d\udc64 @catteboi", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:2000,5000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#a689922a-2156-414e-bd8b-1cf8c47cb41b", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f Yay #SUcollab
\ud83d\udc64 @Cresent_StarMoon", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:3000,5000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#f5b84431-bc5b-4a74-87e5-87e5aae31f2c", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f Saur!1!1!
\ud83d\udc64 @Goose_", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:4000,5000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#c05ff0de-b795-4d97-bc39-1b236f0c84f8", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f silly
\ud83d\udc64 @spookychip", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:5000,5000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#40601a84-470e-4ab3-bb13-4828f5d0baec", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f Happy 4th Bday to SU!!! \ud83e\udd73
\ud83d\udc64 @That1FoxThing", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:6000,5000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#c3a1e550-4347-4e5f-bab6-8d6ddacd4352", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUcollab (eye strain)
\ud83d\udc64 @TheNerve", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:7000,5000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#b9d519e1-8213-42dc-9c41-7271ae68fde0", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f Idk
\ud83d\udc64 @Alphyy", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:8000,5000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#25640cad-2379-4ceb-b1c2-42094ad884c3", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f \u2728Happy Four Years Of SU!!\u2728
\ud83d\udc64 @DerpyAxolotl", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:9000,5000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#aba7c7ba-755e-4aaa-a606-b5eebf502010", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f THE CAKE IS A TRUTH!??!?!? \ud83d\ude28\ud83d\ude28
\ud83d\udc64 @Ai_Is_Here", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:10000,5000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#0303a9a1-4664-4a46-bf28-551d2e2ae292", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f Feeling stupid rn
\ud83d\udc64 @Imstilldead", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:11000,5000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#fc46bfd6-90ec-4811-8d79-8ad9d30cd3ea", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f Simple Celebration draw
\ud83d\udc64 @Ontos", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:12000,5000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#aeae9411-eb35-4d02-875d-44defda7c597", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f 4 YEARS OF SKETCHERS UNITED
\ud83d\udc64 @MLG_Doggo", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:13000,5000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#261936a2-3272-483b-9ed2-41138926e8de", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUcollab LIGHTNING
\ud83d\udc64 @pancake_lover73", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:14000,5000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#6db9fd84-4ea9-40fa-9a4f-43c468a1d361", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f SU is 4 years??? #SUCollab
\ud83d\udc64 @kittipaw", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:15000,5000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#7a747aa4-1ac9-443b-a498-5a1058922b9f", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f \ud83c\udf89HAPPY ANNIVERSARY SU\ud83c\udf0c
\ud83d\udc64 @SCP_lover123", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:16000,5000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#03bcb31d-0e39-4786-b3ee-c39518c66f28", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f Happy 4th year SU!!!
\ud83d\udc64 @Michael1997", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:17000,5000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#475870b3-8494-42ef-b1cf-a4388c4faca5", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f Where does the time go?
\ud83d\udc64 @DarlynFlame", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:18000,5000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#8e4e2700-e6dc-4d37-988e-0fa470108285", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f Hi.
\ud83d\udc64 @TotallyAHuman_", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:19000,5000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#71402690-0a85-4def-b5bd-19d03bbd2f6a", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f HAPPY 4TH ANNIVERSARY
\ud83d\udc64 @soulskull", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:20000,5000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#2c4e50cd-44f7-4dd0-ab28-df4a37b4699d", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUcollab
\ud83d\udc64 @glitchyLion", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:21000,5000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#ac974b09-9b2d-4d2b-87e8-9d10dfc56a03", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f Repost
\ud83d\udc64 @ObjectSupremacy", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:22000,5000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#c1020ac6-5b7a-4771-9803-162906e9d606", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUcollab
\ud83d\udc64 @craftghoul", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:23000,5000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#6ae88234-7a74-470f-a962-0bf10fc2937a", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUCollab
\ud83d\udc64 @ElmoInSpace", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:1000,6000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#73cd1e6a-c65b-407b-b507-5b97588d893d", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f a mascot
\ud83d\udc64 @puftdank", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:2000,6000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#589665a5-629a-498e-a0df-483e9c7cdb93", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUcollab
\ud83d\udc64 @pipsqueakk", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:3000,6000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#b7727d6f-be7e-46e7-bfce-3773ebb62141", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUCollab
\ud83d\udc64 @smoggy", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:4000,6000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#a5ee2be6-6de8-45dd-a410-4e84b56235cb", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f am I late to the party?
\ud83d\udc64 @kazthespooder", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:5000,6000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#30636c72-f25a-4d45-b287-a8688c2662a3", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f \ud83c\udf8a
\ud83d\udc64 @undefined", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:6000,6000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#19d506f2-23b9-482c-8838-7fd70f7333ce", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUcollab
\ud83d\udc64 @boligomaboi", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:7000,6000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#163eafb0-02af-4b64-ab67-39211e001b67", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUcollab
\ud83d\udc64 @emmatwn3", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:8000,6000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#1f64b7dd-e3cc-4649-8497-e438ef22a9fc", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f Filbert (submission)
\ud83d\udc64 @Quackidee_", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:9000,6000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#102a8833-9aad-48e0-8cd2-28c1d9fc8d24", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f Happy 4 years Sketchers United!
\ud83d\udc64 @DeathMuffinProd", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:10000,6000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#4ecdc68f-b896-4afe-83cc-b4a14df3a92b", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f Joined the #SUcollab !
\ud83d\udc64 @NotADino", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:11000,6000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#872a84a7-22fc-4e0f-aaca-5ddb01ed5741", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUcollab \ud83e\udd14
\ud83d\udc64 @UNIQUEUSERNAME_", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:12000,6000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#aed4b835-e188-4959-be0c-5f24cf2521ec", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f Fixed
\ud83d\udc64 @dabbing_goose", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:13000,6000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#cd2121f4-91c6-449c-86b6-431542c7360a", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUcollab \ud83c\udf82\u2728
\ud83d\udc64 @Goldie_Exotic", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:14000,6000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#12a537c4-0688-4752-b9b6-76e33fded949", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUcollab
\ud83d\udc64 @AlexLikesTon", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:15000,6000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#d71f4460-7569-405b-aece-d3698eee6cba", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f SUcollab submission!
\ud83d\udc64 @Jazzers", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:1000,7000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#6960dad1-0c96-45e2-a842-e8d19cd5407e", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f Ver 2 for #SUcollab
\ud83d\udc64 @txi", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:2000,7000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#68a87630-8d43-4150-a209-5afc835b88d8", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUcollab
\ud83d\udc64 @Electr0", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:3000,7000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#ae82e6b2-8797-44d2-8221-61fc02854fd2", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUcollab
\ud83d\udc64 @Mathlet_foox", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:4000,7000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#7eb2e0d4-b324-4c28-9e7e-a7f17456e69a", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUcollab
\ud83d\udc64 @selfryed", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:5000,7000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#a269b166-7053-4d42-a846-fa6fab6e8fd3", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUcollab
\ud83d\udc64 @Glue", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:6000,7000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#618e5fa0-ba66-4ae0-8ff4-afa05ce5b280", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f SYLVIA GREETS SU!!
\ud83d\udc64 @_Golden_Bow_", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:7000,7000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#79c774f1-9b48-460a-9332-44f0bbbbf51e", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUcollab
\ud83d\udc64 @AverageGameMemer", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:8000,7000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#223d3dca-19a2-4bfd-a2b9-2bfc31e27aff", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f Yay finished the art for the #SUcollab !!
\ud83d\udc64 @CarmelTheDoggo", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:9000,7000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#a2ee02a4-5be0-4422-9ec7-3fe2c6bacfab", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f Title
\ud83d\udc64 @adam_is_emo", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:10000,7000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#cdeee299-d62e-4f77-9869-799fb0ffff28", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #Sucollab
\ud83d\udc64 @Hi_im_tori", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:1000,8000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#9e9bdb6c-2f0b-49fa-bdef-22d5db4dc6fa", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f #SUcollab
\ud83d\udc64 @AlexDoesStuff", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:2000,8000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#f557ca44-f3ce-4642-b759-c8287c36054b", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f Happy birthday su!
\ud83d\udc64 @Gooberman", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:3000,8000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#f82ba59a-28b4-4c5f-be0e-52b693c0368b", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f COLLAB!
\ud83d\udc64 @Wolf_pro", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:4000,8000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#0303e1c3-ad83-4e14-ba5a-a1f440ad8843", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f happy late anniversary, Sketch!
\ud83d\udc64 @aqelle", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:5000,8000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#1cb61e73-fdc9-4235-a24c-7037a32fb8d6", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f Happy late birthday SU!\ud83c\udf1f
\ud83d\udc64 @ChaiTea", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:6000,8000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#af2dfd36-9691-4746-a3d1-97b7a3f2cb7f", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f SU COLLAB
\ud83d\udc64 @Royalapplecat", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:7000,8000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#8bc2328a-a768-4519-9f9c-67adb4eb68e3", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f Happy birthday SU!!
\ud83d\udc64 @lily_star_KnyFan", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:8000,8000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#3bca695e-8722-4ae5-b54b-740f3a8028e8", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f HAPPY 4TH SU ANNIVERSARY!!
\ud83d\udc64 @_tsuki_yomi_2003", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:0,9000,1000,1000" + } + } + }, + { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": "#3bf114b4-7ebe-40bc-923d-00088bb6ad05", + "type": "Annotation", + "body": [ + { + "type": "TextualBody", + "value": "\ud83d\uddbc\ufe0f My submission for the SU collab
\ud83d\udc64 @Oliverhetheringt", + "format": "text/html", + "language": "en" + } + ], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": "xywh=pixel:1000,9000,1000,1000" + } } } -}, - { - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "#a88b22d0-6106-4872-9435-c78b5e890001", - "type": "Annotation", - "body": [{ - "type": "TextualBody", - "value": "screwdriver by @username", - "format" : "text/html", - "language" : "en" - }], - "target": { - "selector": { - "type": "FragmentSelector", - "conformsTo": "http://www.w3.org/TR/media-frags/", - "value": "xywh=pixel:0,1000,1000,1000" - } - } - }, - { - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "#a88b22d0-6106-4872-9435-c78b5e890002", - "type": "Annotation", - "body": [{ - "type": "TextualBody", - "value": "hammer by @username", - "format" : "text/html", - "language" : "en" - }], - "target": { - "selector": { - "type": "FragmentSelector", - "conformsTo": "http://www.w3.org/TR/media-frags/", - "value": "xywh=pixel:1000,0,1000,1000" - } - } - }, - { - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "#a88b22d0-6106-4872-9435-c78b5e890003", - "type": "Annotation", - "body": [{ - "type": "TextualBody", - "value": "drill by @username", - "format" : "text/html", - "language" : "en" - }], - "target": { - "selector": { - "type": "FragmentSelector", - "conformsTo": "http://www.w3.org/TR/media-frags/", - "value": "xywh=pixel:1000,1000,1000,1000" - } - } - }] +] \ No newline at end of file diff --git a/annotations/initial.w3c.json b/annotations/initial.w3c.json deleted file mode 100644 index 30343c5..0000000 --- a/annotations/initial.w3c.json +++ /dev/null @@ -1,18 +0,0 @@ -[{ - "@context": "http://www.w3.org/ns/anno.jsonld", - "id": "#a88b22d0-6106-4872-9435-c78b5e890000", - "type": "Annotation", - "body": [{ - "type": "TextualBody", - "value": "Nothing here yet!", - "format" : "text/html", - "language" : "en" - }], - "target": { - "selector": { - "type": "FragmentSelector", - "conformsTo": "http://www.w3.org/TR/media-frags/", - "value": "xywh=pixel:0,0,1000,1000" - } - } -}] diff --git a/image/run_gen.sh b/image/run_gen.sh new file mode 100644 index 0000000..9ae4ddb --- /dev/null +++ b/image/run_gen.sh @@ -0,0 +1,13 @@ +#!/bin/bash +source script/bin/activate + +# Xvfb :99 -screen 0 1280x1024x24 & +# export DISPLAY=:99 + +python3 script/generate_dzi_files.py +python3 script/generate_images_txt.py +python3 script/generate_filtered_photos.py +python3 script/generate_annotations.py + +sudo chmod -R 775 . +sudo chown -R opc . diff --git a/image/script/generate_annotations.py b/image/script/generate_annotations.py new file mode 100644 index 0000000..5bc49a0 --- /dev/null +++ b/image/script/generate_annotations.py @@ -0,0 +1,53 @@ +import json +import uuid +import requests + +def get_post_data(folder_name): + url = f"https://sketchersunited.org/posts/{folder_name.split('by')[0]}" + headers = {"Accept": "text/json"} + response = requests.get(url, headers=headers) + if response.status_code == 200: + return response.json() + return None + +with open('image.txt', 'r') as file: + lines = file.readlines() + +annotations = [] + +for line in lines: + folder_name, x, y, _, _, _ = line.strip().split() + annotation_id = str(uuid.uuid4()) + + post_data = get_post_data(folder_name) + if post_data: + annotation_text = f'đŸ–ŧī¸ {post_data["post"]["title"]}
👤 @{post_data["post"]["profile"]["username"]}' + else: + annotation_text = "Data not available" + + annotation = { + "@context": "http://www.w3.org/ns/anno.jsonld", + "id": f"#{annotation_id}", + "type": "Annotation", + "body": [{ + "type": "TextualBody", + "value": annotation_text, + "format": "text/html", + "language": "en" + }], + "target": { + "selector": { + "type": "FragmentSelector", + "conformsTo": "http://www.w3.org/TR/media-frags/", + "value": f"xywh=pixel:{int(x)*1000},{int(y)*1000},1000,1000" + } + } + } + + annotations.append(annotation) + print(f"Appended annotation for {folder_name}") + +with open('../annotations/annotations.w3c.json', 'w') as output_file: + json.dump(annotations, output_file, indent=2) + +print("Annotations JSON file created.") diff --git a/image/run_batch.py b/image/script/generate_dzi_files.py similarity index 56% rename from image/run_batch.py rename to image/script/generate_dzi_files.py index 38e4235..4f75ceb 100644 --- a/image/run_batch.py +++ b/image/script/generate_dzi_files.py @@ -12,7 +12,6 @@ def convert_to_jpg(input_file, output_dir): convert_command = ["convert", input_file, "-quality", "100", output_file] subprocess.run(convert_command) - print(f"Converted {input_file} to JPG") process_image(output_file, output_dir) except Exception as e: @@ -23,35 +22,27 @@ def process_image(input_file, output_dir): file_name_without_extension = os.path.splitext(os.path.basename(input_file))[0] output_file = os.path.join(output_dir, file_name_without_extension, f"{file_name_without_extension}") - command = ["./magick-slicer.sh", input_file, output_file] - - print(command) - print(output_file) - print(os.getcwd()) + command = ["./script/magick-slicer.sh", input_file, output_file] subprocess.run(command) print(f"Processed {input_file}") except Exception as e: print(f"Error processing {input_file}: {e}") -def main(): +input_dir = "original" +output_dir = "dzi" - input_dir = "original" - output_dir = "dzi" +os.makedirs(output_dir, exist_ok=True) +os.makedirs(os.path.join(input_dir, "jpg"), exist_ok=True) - os.makedirs(output_dir, exist_ok=True) - os.makedirs(os.path.join(input_dir, "jpg"), exist_ok=True) +image_files = [] +for root, _, files in os.walk(input_dir): + for filename in files: + if filename.lower().endswith((".jpg", ".jpeg", ".png", ".gif")): + image_files.append(os.path.join(root, filename)) - image_files = [] - for root, _, files in os.walk(input_dir): - for filename in files: - if filename.lower().endswith((".jpg", ".jpeg", ".png", ".gif")): - image_files.append(os.path.join(root, filename)) +for input_file in image_files: + convert_to_jpg(input_file, output_dir) - for input_file in image_files: - convert_to_jpg(input_file, output_dir) - - shutil.rmtree(os.path.join(input_dir, "jpg")) - -if __name__ == "__main__": - main() +shutil.rmtree(os.path.join(input_dir, "jpg")) +print("Sliced all photos.") diff --git a/image/script/generate_filtered_photos.py b/image/script/generate_filtered_photos.py new file mode 100644 index 0000000..1721215 --- /dev/null +++ b/image/script/generate_filtered_photos.py @@ -0,0 +1,36 @@ +from PIL import Image, ImageOps, ImageEnhance +import os +import shutil + +with open('image.txt', 'r') as file: + lines = file.readlines() + +for line, folder_name in zip(lines, os.listdir('dzi')): + folder_name, x, y, red, green, blue = line.strip().split() + + original_folder_path = os.path.join('dzi', folder_name, folder_name + '_files') + + edited_folder_path = os.path.join('dzi_edited', folder_name, folder_name + '_files') + os.makedirs(edited_folder_path, exist_ok=True) + + original_dzi_file_path = os.path.join('dzi', folder_name, f'{folder_name}.dzi') + edited_dzi_file_path = os.path.join('dzi_edited', folder_name, f'{folder_name}.dzi') + shutil.copy(original_dzi_file_path, edited_dzi_file_path) + + for folder in os.listdir(original_folder_path): + for filename in os.listdir(os.path.join(original_folder_path, folder)): + original_image_path = os.path.join(original_folder_path, folder, filename) + grayscale_image = ImageOps.grayscale(Image.open(original_image_path)) + + colormap = ImageOps.colorize(grayscale_image, black=(0, 0, 0), white=(int(red), int(green), int(blue))) + + enhancer = ImageEnhance.Brightness(colormap) + bright_colormap = enhancer.enhance(1.5) + + edited_image_path = os.path.join(edited_folder_path, folder, filename) + + os.makedirs(os.path.join(edited_folder_path, folder), exist_ok=True) + bright_colormap.save(edited_image_path, quality=100) + print("Processing " + folder_name) + +print("Image processing completed.") diff --git a/image/script/generate_images_txt.py b/image/script/generate_images_txt.py new file mode 100644 index 0000000..04405eb --- /dev/null +++ b/image/script/generate_images_txt.py @@ -0,0 +1,23 @@ +from PIL import Image +import os + +if os.path.exists("image.txt"): + os.remove("image.txt") + +su_image = Image.open("sureal25x25.png").convert("RGBA") +su_pixels = su_image.load() + +subfolder_names = sorted(os.listdir("dzi")) + +with open("image.txt", "w") as output_file: + for y in range(su_image.height): + for x in range(su_image.width): + r, g, b, a = su_pixels[x, y] + + if a == 255: + if subfolder_names: + folder_name = subfolder_names.pop(0) + output_file.write(f"{folder_name} {x} {y} {r} {g} {b}\n") + else: + print("Finished generating images txt") + exit() diff --git a/image/magick-slicer.sh b/image/script/magick-slicer.sh similarity index 100% rename from image/magick-slicer.sh rename to image/script/magick-slicer.sh diff --git a/image/script/requirements.txt b/image/script/requirements.txt new file mode 100644 index 0000000..0fce876 --- /dev/null +++ b/image/script/requirements.txt @@ -0,0 +1,2 @@ +pillow +requests diff --git a/image/sureal.png b/image/sureal.png new file mode 100644 index 0000000..8f79f27 Binary files /dev/null and b/image/sureal.png differ diff --git a/image/sureal25x25.png b/image/sureal25x25.png new file mode 100644 index 0000000..bcf4759 Binary files /dev/null and b/image/sureal25x25.png differ diff --git a/image/sureal40x40.png b/image/sureal40x40.png new file mode 100644 index 0000000..31bb331 Binary files /dev/null and b/image/sureal40x40.png differ diff --git a/index.html b/index.html index ff13a8a..0d175e9 100644 --- a/index.html +++ b/index.html @@ -60,7 +60,7 @@

🌐 How do I use this page?

Use either the mouse wheel or your fingers to zoom in and out of the view. -
You can tap on the image to see who drew it and get a link to the post. +
(Not yet implemented) You can tap on the image to see who drew it and get a link to the post.

â„šī¸ The view may get somewhat laggy on a mobile device. For the best experience use a desktop computer.
This is unavoidable due to the number of images downloaded and shown. diff --git a/script/annotations.js b/script/annotations.js index d74f51e..cbadca0 100644 --- a/script/annotations.js +++ b/script/annotations.js @@ -1,6 +1,7 @@ const anno = OpenSeadragon.Annotorious(viewer); -anno.readOnly = true -anno.loadAnnotations('annotations/initial.w3c.json'); +anno.readOnly = true; +anno.escape = false; +anno.loadAnnotations('annotations/annotations.w3c.json'); let annotationText = "" function renderHTML() @@ -25,4 +26,5 @@ anno.on('clickAnnotation', function(annotation, element) viewer.addHandler('update-viewport', function(event) { renderHTML() -}); \ No newline at end of file +}); + diff --git a/script/image_load.js b/script/image_load.js index 8825844..e6b9020 100644 --- a/script/image_load.js +++ b/script/image_load.js @@ -2,8 +2,6 @@ let dictionaries = [] const imagePromises = []; let image_count = 0 -Caman.Store.put = function() {}; - function load_image(image) { return new Promise((resolve, reject) => { viewer.addTiledImage({ @@ -31,17 +29,17 @@ fetch('image/image.txt') .then(text => { const lines = text.split('\n'); lines.forEach(line => { - if (!line.startsWith('#')) { + if (!line.startsWith('#') && line.length > 0) { const parts = line.split(' '); const dictionary = { imageCount: image_count, - tileSource: 'image/dzi/' + parts[0] + '/' + parts[0] + '.dzi', + tileSource: 'image/dzi_edited/' + parts[0] + '/' + parts[0] + '.dzi', x: parseInt(parts[1]), y: parseInt(parts[2]), red: parseInt(parts[3]), - blue: parseInt(parts[4]), - green: parseInt(parts[5]), + green: parseInt(parts[4]), + blue: parseInt(parts[5]), }; const promise = load_image(dictionary); @@ -62,14 +60,13 @@ fetch('image/image.txt') processors: [ function (context, callback) { Caman(context.canvas, function () { - this.colorize(image.red, image.green, image.blue, 50); + this.colorize(image.red, image.green, image.blue, 80); this.render(callback); }); - } - // }, + }, // function (context, callback) { // Caman(context.canvas, function () { - // this.contrast(10); + // this.contrast(100); // this.render(callback); // }); // } @@ -79,9 +76,9 @@ fetch('image/image.txt') all_filters.push(filter) }); - viewer.setFilterOptions({ - filters: all_filters - }); + // viewer.setFilterOptions({ + // filters: all_filters + // }); }) diff --git a/script/live.js b/script/live.js index 12d21af..24388e2 100644 --- a/script/live.js +++ b/script/live.js @@ -1,11 +1,14 @@ const clientCountElement = document.getElementById('clientCount'); -const socket = new WebSocket('ws://localhost:8080/funsocket'); +const socket = new WebSocket('wss://sketchersunitedcollab.com/funsocket'); socket.addEventListener('message', (event) => { - const clientCount = parseInt(event.data); - let append = " people" - if (clientCount === 1) { - append = " person" + if(event.data.toString().length < 5) { + const clientCount = parseInt(event.data); + + let append = " people" + if (clientCount === 1) { + append = " person" + } + clientCountElement.textContent = clientCount.toString() + append; } - clientCountElement.textContent = clientCount.toString() + append; }); diff --git a/script/viewer.js b/script/viewer.js index 449d314..645d05c 100644 --- a/script/viewer.js +++ b/script/viewer.js @@ -1,3 +1,5 @@ +Caman.Store.put = function() {}; + const viewer = OpenSeadragon({ id: "viewer", showZoomControl: false, @@ -12,9 +14,9 @@ viewer.smartScrollZoom({ zoomIncrement: 1000 }); -viewer.viewport.minZoomLevel = 0.0125; -viewer.viewport.maxZoomLevel = 100; -viewer.viewport.defaultZoomLevel = 0.0125; +viewer.viewport.minZoomLevel = 0.001; +viewer.viewport.maxZoomLevel = 2; +viewer.viewport.defaultZoomLevel = 0.05; viewer.viewport.scrollHandlerSpeed = 1000; viewer.drawer.context.imageSmoothingEnabled = false; viewer.gestureSettingsMouse.clickToZoom = false; diff --git a/style.css b/style.css index a9c7d05..26e7742 100644 --- a/style.css +++ b/style.css @@ -12,7 +12,7 @@ body { background-color: #222; background-image: url("image/su.png"); background-repeat: no-repeat; - background-size: 1000px; + background-size: 400px; background-position: center; image-rendering: pixelated; } @@ -170,10 +170,10 @@ a { cursor: pointer; } -@media screen and (max-width: 1081px) { +@media screen and (max-width: 1081px) and (-webkit-min-device-pixel-ratio: 2) { #viewer { width: 100vw; - height: 100vh; + height: 66vh; } #modal-content { font-size: 20pt; diff --git a/websocket/websocket.py b/websocket/websocket.py index 49bd587..f6afe5b 100644 --- a/websocket/websocket.py +++ b/websocket/websocket.py @@ -15,7 +15,6 @@ class WebSocketHandler(tornado.websocket.WebSocketHandler): self.send_client_count() def check_origin(self, origin): - # Allow all connections regardless of the origin return True def send_client_count(self): @@ -27,35 +26,26 @@ class WebSocketHandler(tornado.websocket.WebSocketHandler): print(f"Error sending message to client: {e}") async def handle_message(self, message): - if message.startswith("post"): - # Extract post_id_var and author_id_var from the message - try: - _, post_id_var, _, author_id_var = message.split("{") - post_id = int(post_id_var.split("}")[0]) - author_id = int(author_id_var.split("}")[0]) + try: + post, user = message.split('by') + post = int(post) + user = int(user) - # Construct the URL - post_url = f"https://post.com/{post_id}" + post_url = f"https://sketchersunited.org/posts/{post}" + headers = { + "Accept": "application/json", + } - # Create HTTP request headers with Accept: application/json - headers = { - "Accept": "application/json", - } + request = HTTPRequest(post_url, method="GET", headers=headers) - # Create an HTTP request - request = HTTPRequest(post_url, method="GET", headers=headers) + http_client = AsyncHTTPClient() + response = await http_client.fetch(request) + self.write_message(response.body) - # Fetch the URL asynchronously - http_client = AsyncHTTPClient() - response = await http_client.fetch(request) - - # Send the JSON response back to the WebSocket client - self.write_message(response.body) - except Exception as e: - print(f"Error handling message: {e}") + except Exception as e: + print(f"Error handling message: {e}") def on_message(self, message): - # Handle incoming messages tornado.ioloop.IOLoop.current().add_callback(self.handle_message, message) app = tornado.web.Application([