PaqueteSemanal/src/PaqueteSemanal/PaqueteSemanal.class.st

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
]