Posted to tcl by zmoment at Wed Dec 24 12:21:05 GMT 2025view raw

  1. % [exec locale]
  2. invalid command name "LANG=en_US.UTF-8
  3. LANGUAGE=
  4. LC_CTYPE="en_US.UTF-8"
  5. LC_NUMERIC="en_US.UTF-8"
  6. LC_TIME="en_US.UTF-8"
  7. LC_COLLATE="en_US.UTF-8"
  8. LC_MONETARY="en_US.UTF-8"
  9. LC_MESSAGES="en_US.UTF-8"
  10. LC_PAPER="en_US.UTF-8"
  11. LC_NAME="en_US.UTF-8"
  12. LC_ADDRESS="en_US.UTF-8"
  13. LC_TELEPHONE="en_US.UTF-8"
  14. LC_MEASUREMENT="en_US.UTF-8"
  15. LC_IDENTIFICATION="en_US.UTF-8"
  16. LC_ALL="
  17. %

Comments

Posted by zmoment at Wed Dec 24 12:41:08 GMT 2025 [text] [code]

#!/usr/bin/env tclsh # # Compare media files in this and other directory. # Media files in both directories should have name that begins with 20251130_1200 and ends in .mp4 # Get all media files of this directory. set remote_dir /partilha_casa/FOTOS/sem_duplicados #set remote_dir ../teste\ 2 set remote_dir /home/lupe/Sync/fotos_teste_script_remote #set new_dir ../teste1 set new_dir /home/lupe/Sync/fotos_teste_script set patterns "*.jpg *.mp4" proc rglob { dirpath patterns {exclude_pats {}} } { set rlist {} set f_exclude [glob -nocomplain -types f -directory ${dirpath} {*}${exclude_pats}] #puts "f_exclude: $f_exclude" set d_exclude [glob -nocomplain -types d -directory ${dirpath} {*}${exclude_pats}] #puts "d_exclude: $d_exclude" foreach fpath [glob -nocomplain -types f -directory ${dirpath} {*}${patterns}] { if { ${fpath} ni ${f_exclude} } { lappend rlist ${fpath} } } foreach dir [glob -nocomplain -types d -directory ${dirpath} *] { if { ${dir} ni ${d_exclude} } { lappend rlist {*}[rglob ${dir} ${patterns} ${exclude_pats}] } } return ${rlist} } proc getFiles {dir patterns} { set d [dict create] set patterns_lst [split $patterns] foreach p $patterns_lst { set files_in_dir [rglob $dir $p] puts "files_in_dir $files_in_dir" #set files_in_dir [glob -directory $dir -types f -nocomplain $p] foreach f $files_in_dir { puts "f: $f [file size $f]" set dt [string range [file tail $f] 0 14] dict set d $dt [list name $f size [file size $f]] } } return $d } set n_files [getFiles $new_dir $patterns] #puts "n_files: $n_files" #set r_files [glob -directory $remote_dir -types f -nocomplain *.jpg] set r_files [getFiles $remote_dir $patterns] #puts $r_files set messages_deleted [list] set messages_problem [list] set messages_size_differ [list] dict for {dt d} $n_files { if {[dict exists $r_files $dt]} { set size_diff [expr {[dict get $n_files $dt size] - [dict get $r_files $dt size]}] set same_size [expr {$size_diff == 0 ? "same size" : "size differs by (bytes): $size_diff"}] if {$size_diff == 0} { file delete [dict get $n_files $dt name] if {! [file exists [dict get $n_files $dt name]]} { lappend messages_deleted "Repeated? [dict get $n_files $dt name] [dict get $r_files $dt name] $same_size DELETED." } else { lappend messages_problem "Repeated? [dict get $n_files $dt name] [dict get $r_files $dt name] $same_size PROBLEM, NOT DELETED." } } else { set extension [string range [dict get $n_files $dt name] end-2 end] if {$extension eq "jpg"} { exec viewnior [dict get $n_files $dt name] & exec viewnior [dict get $r_files $dt name] & } elseif {$extension eq "mp4"} { exec ffplay -autoexit -loglevel quiet -left 50 -top 400 -t 10 -x 800 -y 600 [dict get $n_files $dt name] & exec ffplay -autoexit -loglevel quiet -left 900 -top 400 -t 10 -x 800 -y 600 [dict get $r_files $dt name] & } puts "Delete file [dict get $n_files $dt name]? - press y or Y for yes, other key for no." set k [gets stdin] if {$k eq "y" || $k eq "Y"} { file delete [dict get $n_files $dt name] if {! [file exists [dict get $n_files $dt name]]} { lappend messages_deleted "Repeated? [dict get $n_files $dt name] [dict get $r_files $dt name] $same_size DELETED." continue } else { lappend messages_problem "Repeated? [dict get $n_files $dt name] [dict get $r_files $dt name] $same_size PROBLEM, NOT DELETED." continue } } else { lappend messages_size_differ "Repeated? [dict get $n_files $dt name] [dict get $r_files $dt name] $same_size SIZE DIFFERS BUT NOT DELETED." } } } } puts "\n\nFinal report DELETED ([llength $messages_deleted] files):" foreach m $messages_deleted { puts $m } puts "\n\nFinal report PROBLEM COULD NOT BE DELETED ([llength $messages_problem] files):" foreach m $messages_problem { puts $m } puts "\n\nFinal report NOT DELETED, SIZE DIFFERS ([llength $messages_size_differ] files):" foreach m $messages_size_differ { puts $m }

Add a comment

Please note that this site uses the meta tags nofollow,noindex for all pages that contain comments.
Items are closed for new comments after 1 week