Brea/repository/Brea/ArchiveOrgItem.class.st

119 lines
3.0 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
]