Applescript: Getting week number from file name -
i have lots of pics smartphone. file name format of them yyyy-mm-dd hh:mm:ss.jpg
i need sort them folders according week number.
i have no problems moving files folders applescript :) have no problems defining week number given date. have problem (as think) syntax or data types cannot understand problem lies.
here's i'm using.
- i have function defining week number given date
- i scan through folder , names list
- i parse names yyyy, mm , dd variables
- then try call function these variables - , here's problem starts.
please take @ example of code:
property dbfolder : "macintosh hd:users:lyubovberezina:dropbox:db" property cufolder : "macintosh hd:users:lyubovberezina:dropbox:camera uploads" on weeknumber(_inputdate) script week_number_extras on dateoffirstweekofyear(_year) -- monday of first week number set _date current date set year of _date _year set month of _date 1 set day of _date 1 set time of _date 0 -- first thursday of year repeat until weekday of _date thursday set _date _date + (24 * 60 * 60) end repeat -- return monday before set _date _date - (3 * 24 * 60 * 60) return _date end dateoffirstweekofyear end script -- make copy of passed date object avoid changes original copy _inputdate _targetdate -- reset time , go monday set time of _targetdate 0 repeat until weekday of _targetdate monday set _targetdate _targetdate - (24 * 60 * 60) end repeat -- date of first week current year , next 1 tell week_number_extras set _matchdate dateoffirstweekofyear(year of _targetdate) set _nextyearsfirstweekdate dateoffirstweekofyear((year of _targetdate) + 1) end tell -- exit early, if current week first 1 of next year if _targetdate = _nextyearsfirstweekdate return 1 -- count until target date reached set _weeknumber 1 repeat until _targetdate = _matchdate set _matchdate _matchdate + (7 * 24 * 60 * 60) set _weeknumber _weeknumber + 1 end repeat return _weeknumber end weeknumber tell application "finder" set this_folder folder cufolder set this_list every file of this_folder repeat in this_list set filename name of set fileyear characters 1 thru 4 of filename string set filemonth characters 6 thru 7 of filename string set fileday characters 9 thru 10 of filename string end repeat end tell set thenewdate date (filemonth & "/" & fileday & "/" & fileyear) weeknumber(thenewdate) in case line
set thenewdate1 date (filemonth & "/" & fileday & "/" & fileyear) is working ok (i mean, no errors) it's outside loop gives result last image in loop only. if move loop gives error:
property dbfolder : "macintosh hd:users:lyubovberezina:dropbox:db" property cufolder : "macintosh hd:users:lyubovberezina:dropbox:camera uploads" on weeknumber(_inputdate) script week_number_extras on dateoffirstweekofyear(_year) -- monday of first week number set _date current date set year of _date _year set month of _date 1 set day of _date 1 set time of _date 0 -- first thursday of year repeat until weekday of _date thursday set _date _date + (24 * 60 * 60) end repeat -- return monday before set _date _date - (3 * 24 * 60 * 60) return _date end dateoffirstweekofyear end script -- make copy of passed date object avoid changes original copy _inputdate _targetdate -- reset time , go monday set time of _targetdate 0 repeat until weekday of _targetdate monday set _targetdate _targetdate - (24 * 60 * 60) end repeat -- date of first week current year , next 1 tell week_number_extras set _matchdate dateoffirstweekofyear(year of _targetdate) set _nextyearsfirstweekdate dateoffirstweekofyear((year of _targetdate) + 1) end tell -- exit early, if current week first 1 of next year if _targetdate = _nextyearsfirstweekdate return 1 -- count until target date reached set _weeknumber 1 repeat until _targetdate = _matchdate set _matchdate _matchdate + (7 * 24 * 60 * 60) set _weeknumber _weeknumber + 1 end repeat return _weeknumber end weeknumber tell application "finder" set this_folder folder cufolder set this_list every file of this_folder repeat in this_list set filename name of set fileyear characters 1 thru 4 of filename string set filemonth characters 6 thru 7 of filename string set fileday characters 9 thru 10 of filename string set thenewdate date (filemonth & "/" & fileday & "/" & fileyear) weeknumber(thenewdate) end repeat end tell the error given fight after first file taken:
get name of document file "2013-01-02 02.43.21.jpg" of folder "camera uploads" of folder "dropbox" of folder "lyubovberezina" of folder "users" of startup disk --> "2013-01-02 02.43.21.jpg" date "01/02/2013" --> error number -1728 date "01/02/2013" result: error "finder got error: can’t date \"01/02/2013\"." number -1728 date "wednesday, january 2, 2013 12:00:00 am" i total newbie in applescript cannot understand why code working outside loop , not working inside loop. appreciate matter.
thanks lot!
it might easier use shell script @ least week number part:
do shell script "date -jf %f 2013-07-19 +%v"
cd ~/dropbox/camera\ uploads; f in *; d=../db/$(date -jf %f ${f:0:10} +%y-%v "$f"); mkdir -p $d; mv "$f" $d; done
Comments
Post a Comment