#1 : 25/09-22 15:28 trainenthusiast
Posts: 3
|
Example file names
Jan 6 2020 - something - somethingelse.mp4 Apr 1X 2021 - something - somethingelse.mp4 I want to convert this to the following filenames respectively 2020-01-06 - something - somethingelse.mp4 (note the added 0 to the 6th of the month) 2021-04-1X - something - somethingelse.mp4 (note the X placeholder) I thought the script method would be best applicable here. I have never used Javascript before so it's not good by any means. I first used another program and the following code to get the job done. Unfortunately I found out that that program requires a license to use Javascript renaming, hence why I use this program now. ---- function(index, item) { function getMonthFromString(mon){ return new Date(Date.parse(mon +" 1, 2012")).getMonth()+1 } function dateToYMD(date) { var fullstring = date.split(' '); var y = fullstring[2], mfull = fullstring[0], d = parseInt(fullstring[1]); var m = getMonthFromString(mfull) return '' + y + '-' + (m<=9 ? '0' + m : m) + '-' + (d <= 9 ? '0' + d : d); } function getThirdPart(str) { return str.split('-')[2]; } function getSecondPart(str) { return str.split('-')[1]; } function getFirstPart(str) { return str.split('-')[0]; } newdate = dateToYMD(getFirstPart(item.name)); newName = newdate + ' -' + getSecondPart(item.name) + '-' + getThirdPart(item.name); return newName; } ---- and hit Apply script. Unfortunately, the Filename and New Filename in the Rename Files window is the same., with Error saying "OK". At first I thought this may be due to you having to return the full filename including extension, so I added + '.mp4', but still the same. Then I thought it may be due to me using functions inside the function(index, item), so I tried the following ---- function(index, item) { var firstPart = item.name.split('-')[0]; var secondPart = item.name.split('-')[1]; var thirdPart = item.name.split('-')[2]; var fullstring = firstPart.split(' '); var y = fullstring[2], mfull = fullstring[0], d = parseInt(fullstring[1]); var m = new Date(Date.parse(mfull +" 1, 2012")).getMonth()+1; var test = '' + y + '-' + (m<=9 ? '0' + m : m) + '-' + (d <= 9 ? '0' + d : d); var newName = test + ' -' + secondPart + '-' + thirdPart; return newName; } ---- which also didn't work (Filename and New Filename are the same), and I tried with + '.mp4', which also did not work. What am I doing wrong? |
#2 : 25/09-22 16:21 trainenthusiast
Posts: 3
|
Ignore this reply, this code does not work if the exact date is unknown (e.g. Apr 1x 2020)
I have another piece of code that does what I want in another program, but in Advanced Renamer I get the error "Invalid script: Invalid post script: uncaught: 'Invalid Date'", even if I replace firstPart with something like "Jan 9 2020". ---- firstPart = item.name.split('-')[0]; secondPart = item.name.split('-')[1]; thirdPart = item.name.split('-')[2]; var aDate = new Date(firstPart); test = aDate.toISOString().slice(0,10); newName = test + ' -' + secondPart + '-' + thirdPart; return newName; ---- |
#3 : 28/09-22 14:06 David Lee
Posts: 1125
|
Reply to #1:
You don't need to use scripting - just build a Method list with four Methods as follows... 1. Renumber method - zero-pad the month: Number position: 1 Change to: Relative to existing number Number difference: 0 Zero padding: manual Number length: 2 2. Replace method - remove leading zero when the placeholder "X" is present: Replace: ^[^\d]*\K0(?=\dX) with: nothing Use regular expressions 3. List replace method - convert month abbreviations to numbers Add 12 lines: Replace: Jan with: 01 Replace: Feb with: 02 etc 4. Replace method - reorder date: Replace: ^([^ ]*) ([^ ]*) ([^ ]*) with:\3-\2-\1 Use regular expressions Note the space at the end of the regular expression. |
#4 : 30/09-22 16:51 trainenthusiast
Posts: 3
|
Reply to #3:
Thank you, I was thinking to complicated. It worked great! Step 4 I replaced with "\3-\1-\2 " to get the yyyy-mm-dd format |