Swap words in jumbled filenames
I have a folder that has following type of filenames
Waifu-Character_Megumin-Copyrights_Konosuba-Author_Mossi
Waifu-Author_Sciamano240-Character_TifaLockhart-Copyrights_FinalFantasy
I want all my filenames to be like this.
Waifu-Konosuba-Megumin-Mossi
Waifu-FinalFantasy-TifaLockhart-Sciamano
Ive been trying to use some sort of regex for a long time but couldnt figure out what to do. Any help will be very appreciated.
Waifu-Character_Megumin-Copyrights_Konosuba-Author_Mossi
Waifu-Author_Sciamano240-Character_TifaLockhart-Copyrights_FinalFantasy
I want all my filenames to be like this.
Waifu-Konosuba-Megumin-Mossi
Waifu-FinalFantasy-TifaLockhart-Sciamano
Ive been trying to use some sort of regex for a long time but couldnt figure out what to do. Any help will be very appreciated.
It will be easiest to use a script method:
name=item.name;
genre = name.match(/^[^-]*/);
copyrights = name.match(/Copyrights_([^-]*)/)[1];
character = name.match(/Character_([^-]*)/)[1];
author = name.match(/Author_([^-\d]*)/)[1];
return genre + "-" + copyrights + "-" +character + "-" + author;
name=item.name;
genre = name.match(/^[^-]*/);
copyrights = name.match(/Copyrights_([^-]*)/)[1];
character = name.match(/Character_([^-]*)/)[1];
author = name.match(/Author_([^-\d]*)/)[1];
return genre + "-" + copyrights + "-" +character + "-" + author;
Reply to #2:
Thanks for the reply. I was able to write my own script too if someone else is also looking for something similar (Hard coded to my case tho)
name = item.newBasename;
result = name.split("-");
fin='Waifu';
for (index = 0; index < result.length; ++index) {
value = result[index];
if (value.substring(0, 3) === "Man") {
fin = fin + "-" + value;
break;
}
}
for (index = 0; index < result.length; ++index) {
value = result[index];
if (value.substring(0, 3) === "Cop") {
value = value.substring(11);
fin = fin + "-" + value;
break;
}
}
for (index = 0; index < result.length; ++index) {
value = result[index];
if (value.substring(0, 3) === "Cha") {
value = value.substring(10);
fin = fin + "-" + value;
break;
}
}
for (index = 0; index < result.length; ++index) {
value = result[index];
if (value.substring(0, 3) === "Aut") {
value = value.substring(7);
fin = fin + "-" + value;
break;
}
}
return fin
Thanks for the reply. I was able to write my own script too if someone else is also looking for something similar (Hard coded to my case tho)
name = item.newBasename;
result = name.split("-");
fin='Waifu';
for (index = 0; index < result.length; ++index) {
value = result[index];
if (value.substring(0, 3) === "Man") {
fin = fin + "-" + value;
break;
}
}
for (index = 0; index < result.length; ++index) {
value = result[index];
if (value.substring(0, 3) === "Cop") {
value = value.substring(11);
fin = fin + "-" + value;
break;
}
}
for (index = 0; index < result.length; ++index) {
value = result[index];
if (value.substring(0, 3) === "Cha") {
value = value.substring(10);
fin = fin + "-" + value;
break;
}
}
for (index = 0; index < result.length; ++index) {
value = result[index];
if (value.substring(0, 3) === "Aut") {
value = value.substring(7);
fin = fin + "-" + value;
break;
}
}
return fin
Reply to #3:
This is unnecessarily complicated!
Your script suggests that all the tags are optional and there is a fourth possibility with tag name starting with "Man" (I'm calling it "ManXXX" in the following).
The following script will achieve the same as yours, based on the match method using regular expressions:
name=item.newBasename;
newName = item.name.match(/^[^-]*/);
if (match=name.match(/ManXXX_([^-]*)/)) newName += ('-' + match[1]);
if (match=name.match(/Copyrights_([^-]*)/)) newName += ('-' + match[1]);
if (match=name.match(/Character_([^-]*)/)) newName += ('-' + match[1]);
if (match=name.match(/Author_([^-]*)/)) newName += ('-' + match[1]);
return newName;
This is unnecessarily complicated!
Your script suggests that all the tags are optional and there is a fourth possibility with tag name starting with "Man" (I'm calling it "ManXXX" in the following).
The following script will achieve the same as yours, based on the match method using regular expressions:
name=item.newBasename;
newName = item.name.match(/^[^-]*/);
if (match=name.match(/ManXXX_([^-]*)/)) newName += ('-' + match[1]);
if (match=name.match(/Copyrights_([^-]*)/)) newName += ('-' + match[1]);
if (match=name.match(/Character_([^-]*)/)) newName += ('-' + match[1]);
if (match=name.match(/Author_([^-]*)/)) newName += ('-' + match[1]);
return newName;