90 lines
2.3 KiB
Smalltalk
90 lines
2.3 KiB
Smalltalk
Class {
|
|
#name : #PaqueteSemanal,
|
|
#superclass : #Object,
|
|
#instVars : [
|
|
'location',
|
|
'repository'
|
|
],
|
|
#classInstVars : [
|
|
'location'
|
|
],
|
|
#category : #PaqueteSemanal
|
|
}
|
|
|
|
{ #category : #accessing }
|
|
PaqueteSemanal class >> location: anObject [
|
|
location := anObject
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
PaqueteSemanal >> extractMetadataForAllFolders [
|
|
| subfolders |
|
|
subfolders := self location children reject: [:each | each basename = '.DS_Store'].
|
|
subfolders do: [:each |
|
|
self extractMetadataForFolder: each basename.
|
|
].
|
|
^ self metadataFolder
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
PaqueteSemanal >> extractMetadataForFolder: subfolder [
|
|
|
|
| subfolderFiles extractMetadatos subfolderRenamed |
|
|
subfolderRenamed := self sanitizeFolderNamed: subfolder.
|
|
subfolderFiles := (self location / subfolder) allChildren select: [:item | item isFile and: [(item basename = '.DS_Store') not ]].
|
|
subfolderFiles := subfolderFiles reject: [:each | each basename endsWith: '.ico'].
|
|
subfolderFiles do: [:archivoPruebas | | metadatosArchivo titulo metaTiddler |
|
|
extractMetadatos := GtSubprocessWithInMemoryOutput new
|
|
command: '/usr/local/bin/exiftool';
|
|
arguments: { '-j' . archivoPruebas fullName}.
|
|
extractMetadatos errorBlock: [ :proc | self error: 'Failed to run exiftool' ].
|
|
extractMetadatos runAndWait.
|
|
metadatosArchivo := extractMetadatos stdout.
|
|
"metadatosArchivo."
|
|
titulo := archivoPruebas basename.
|
|
metaTiddler := Tiddler new
|
|
title: titulo;
|
|
text: metadatosArchivo;
|
|
type: 'application/json'.
|
|
MarkupFile
|
|
exportAsFileOn: (self metadataFolder / subfolderRenamed / titulo, 'json')
|
|
containing: metaTiddler asJson
|
|
].
|
|
^ self metadataFolder / subfolderRenamed
|
|
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
PaqueteSemanal >> location [
|
|
^ location
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
PaqueteSemanal >> location: anObject [
|
|
location := anObject
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
PaqueteSemanal >> metadataFolder [
|
|
^ self repository / 'metadatos'
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
PaqueteSemanal >> repository [
|
|
^ repository
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
PaqueteSemanal >> repository: folder [
|
|
repository := folder
|
|
]
|
|
|
|
{ #category : #accessing }
|
|
PaqueteSemanal >> sanitizeFolderNamed: name [
|
|
| sanitized |
|
|
sanitized := name trimmed copyReplaceAll: '!' with: ''.
|
|
sanitized := sanitized copyReplaceAll: ' ' with: ''.
|
|
sanitized := sanitized romanizeAccents.
|
|
^ sanitized
|
|
]
|