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.

  1. i have function defining week number given date
  2. i scan through folder , names list
  3. i parse names yyyy, mm , dd variables
  4. 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

Popular posts from this blog

How to mention the localhost in android -

php - Calling a template part from a post -