diff --git a/Socialmetrica.package/NitterUser.class/instance/downloadProfileImage.st b/Socialmetrica.package/NitterUser.class/instance/downloadProfileImage.st index 0cae0dc..af43576 100644 --- a/Socialmetrica.package/NitterUser.class/instance/downloadProfileImage.st +++ b/Socialmetrica.package/NitterUser.class/instance/downloadProfileImage.st @@ -1,4 +1,4 @@ accessing downloadProfileImage - ^ self exportProfileImageOn: self folder / self userName, 'jpg' \ No newline at end of file + ^ self exportProfileImageOn: self folder / 'profile-image', 'jpg' \ No newline at end of file diff --git a/Socialmetrica.package/NitterUser.class/instance/exportProfileImageOn..st b/Socialmetrica.package/NitterUser.class/instance/exportProfileImageOn..st index fcd8fd9..a8427d5 100644 --- a/Socialmetrica.package/NitterUser.class/instance/exportProfileImageOn..st +++ b/Socialmetrica.package/NitterUser.class/instance/exportProfileImageOn..st @@ -1,11 +1,48 @@ accessing exportProfileImageOn: fileReference - | file | + | file tempFile tempFileHash fileHash | file := fileReference asFileReference. - file ensureDelete. - file exists ifFalse: [ file ensureCreateFile ]. - file binaryWriteStreamDo: [ :stream | - stream nextPutAll: profileImageUrl retrieveContents ]. - super class inform: 'Exported as: ', String cr, file fullName. - ^ file \ No newline at end of file + file exists + ifFalse: [ file ensureCreateFile. + file binaryWriteStreamDo: [ :stream | + stream nextPutAll: profileImageUrl retrieveContents ]. + super class inform: 'Exported as: ', String cr, file fullName. + ^ file] + + ifTrue: [ + tempFile := FileLocator temp / fileReference basename. + tempFile ensureCreateFile. + tempFile binaryWriteStreamDo: [ :stream | + stream nextPutAll: profileImageUrl retrieveContents. + super class + inform: 'Exported as: ', String cr, tempFile fullName. ]. + + OSSUnixSubprocess new + command: 'openssl'; + arguments: { 'dgst' . '-sha256' . file fullName}; + workingDirectory: (self folder)fullName; + redirectStdout; + redirectStderr; + runAndWaitOnExitDo: [ :process :outString | + fileHash := (outString splitOn: ' ' ) second trimmed]. + + OSSUnixSubprocess new + command: 'openssl'; + arguments: { 'dgst' . '-sha256' . tempFile fullName}; + workingDirectory: (self folder)fullName; + redirectStdout; + redirectStderr; + runAndWaitOnExitDo: [ :process :outString | + tempFileHash := (outString splitOn: ' ' ) second trimmed]. + + fileHash = tempFileHash + ifFalse: [ + file copyTo: self folder / + (file basenameWithoutExtension , '-', + ('-' join: + ((file creationTime asLocalStringYMDHM) splitOn: ' ')), '.jpg'). + file ensureDelete. + ^ { 'Profile image changed' -> + (tempFile moveTo: file)} asDictionary ]]. + ^ { 'Same Profile Image' -> file } asDictionary \ No newline at end of file