סקריפט רובי קצר לסידור תמונות בתיקיות
18/01/2016
את הסקריפט הבא לקח לי מעט מאוד זמן לכתוב, ואולי זה מה שמחזיר אותי שוב ושוב לרובי. הסיפור הוא כזה: יש לנו אוסף תמונות גדול וצריך לסדר בתיקיות לפי חודשים, כך שכל התמונות מכל חודש יישמרו יחד. הבעיה שתאריך יצירת הקובץ לא רלוונטי כאן אלא רק תאריך התמונה (מוטמע בקובץ כחלק מפורמט jpeg).
1. רובי להצלה
הקוד עבד כבר בהרצה הראשונה:
require 'exifr'
Dir.glob("**/*.{jpg,JPG}").each do |file|
dt = EXIFR::JPEG.new(file).date_time
month = (dt ? dt.month : 'Unknown').to_s
Dir.mkdir(month) unless Dir.exist?(month)
File.rename(file, File.join(month, file))
end
אהבתי ש glob של רובי יודע להתמודד עם הכוכבית הכפולה (לחיפוש בתתי התיקיות). בפייתון תצטרכו את גירסא 3.5 בשביל זה ופרל תשלח אתכם ל File::Find. אהבתי את התחביר של המודול EXIFR שלקח לי שניה וחצי להתקין והחזיר בדיוק את מה שרציתי לדעת על הקובץ, כתיב ה unless בסוף השורה שלקוח מפרל וכמובן File.join שחוסך לנו את חיבור המחרוזות ומוסיף לבד את הלוכסן שמפריד בין קובץ לתיקיה.
בקיצור יוסף כותב ברובי. תהיו יוסף.