119 lines
3.1 KiB
Smalltalk
119 lines
3.1 KiB
Smalltalk
"
|
|
I model information of the items published on Internet Archive (https://archive.org/).
|
|
"
|
|
Class {
|
|
#name : #ArchiveOrgItem,
|
|
#superclass : #Object,
|
|
#instVars : [
|
|
'id',
|
|
'metadata'
|
|
],
|
|
#category : #Brea
|
|
}
|
|
|
|
{ #category : #utility }
|
|
ArchiveOrgItem >> archive [
|
|
^ 'https://archive.org'
|
|
]
|
|
|
|
{ #category : #utilities }
|
|
ArchiveOrgItem >> createHtmlImageGalleryList [
|
|
"IMPORTANT: This is just a draft snipped. Should become a proper test o be deleted."
|
|
self metadata ifNil: [ self getMetadata ].
|
|
^ '
|
|
<div id="nanogallery2"
|
|
/* gallery settings */
|
|
data-nanogallery2 = ''{
|
|
"thumbnailHeight": 150,
|
|
"thumbnailWidth": 150,
|
|
"itemsBaseURL": "', self galleryItemsBaseUrl ,'"
|
|
}'' >
|
|
|
|
<!-- gallery content -->
|
|
<a href = "primera 3.jpg" data-ngThumb = "primera 3_thumb.jpg" > </a>
|
|
<a href = "segunda.jpg" data-ngThumb = "segunda_thumb.jpg" > </a>
|
|
</div>'
|
|
]
|
|
|
|
{ #category : #utilities }
|
|
ArchiveOrgItem >> embeddedUrl [
|
|
|
|
^ 'https://archive.org/embed/', self id.
|
|
]
|
|
|
|
{ #category : #utilities }
|
|
ArchiveOrgItem >> galleryItemsBaseUrl [
|
|
"I create the place where all image would be located for creating a custom image gallery,
|
|
according with the requirements for nanogallery2."
|
|
|
|
^ 'https://', (self metadata at: 'd2'), (self metadata at: 'dir'), '/'.
|
|
]
|
|
|
|
{ #category : #operation }
|
|
ArchiveOrgItem >> getMetadata [
|
|
self id ifNil: [ ^ self ].
|
|
self metadata: (NeoJSONReader fromString: (self archive, '/metadata/', self id) asUrl retrieveContents)
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
ArchiveOrgItem >> id [
|
|
^ id
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
ArchiveOrgItem >> id: anObject [
|
|
id := anObject
|
|
]
|
|
|
|
{ #category : #utilities }
|
|
ArchiveOrgItem >> imagesGalleryList [
|
|
self metadata ifNil: [ self getMetadata ].
|
|
^ (self metadata at: 'files') select: [ :file | (file at: 'format') = 'JPEG Thumb' ]
|
|
]
|
|
|
|
{ #category : #utilities }
|
|
ArchiveOrgItem >> imagesGalleryListAsDictionary [
|
|
| galleryImages result |
|
|
self imagesGalleryList ifNil: [ ^ self ].
|
|
galleryImages := OrderedCollection new.
|
|
self imagesGalleryList do: [ :imgMetadata |
|
|
galleryImages
|
|
add: (Dictionary new
|
|
at: 'imgOriginal' put: (imgMetadata at: 'original');
|
|
at: 'imgThumb' put: (imgMetadata at: 'name');
|
|
yourself) ].
|
|
result := { 'archiveItemImages' -> galleryImages } asDictionary.
|
|
^ result
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
ArchiveOrgItem >> metadata [
|
|
^ metadata
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
ArchiveOrgItem >> metadata: anObject [
|
|
metadata := anObject
|
|
]
|
|
|
|
{ #category : #utilities }
|
|
ArchiveOrgItem >> subjectTags [
|
|
self id ifNil: [ ^ self ].
|
|
self metadata ifNil: [ self getMetadata ].
|
|
^ (self metadata at: 'metadata') at: 'subject'
|
|
]
|
|
|
|
{ #category : #utilities }
|
|
ArchiveOrgItem >> subjectTagsAsDictionary [
|
|
| tagList result |
|
|
self imagesGalleryList ifNil: [ ^ self ].
|
|
tagList := OrderedCollection new.
|
|
self subjectTags do: [ :tag |
|
|
tagList
|
|
add: (Dictionary new
|
|
at: 'tag' put: tag;
|
|
yourself) ].
|
|
result := { 'tagList' -> tagList } asDictionary.
|
|
^ result
|
|
]
|