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 ]