-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRemoveStemTracksPrefixes.py
45 lines (36 loc) · 1.64 KB
/
RemoveStemTracksPrefixes.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
from reaper_python import *
# get selected tracks count
nbSelectedTracks = RPR_CountSelectedTracks(0)
if nbSelectedTracks < 2:
RPR_ShowConsoleMsg("Please select multiple tracks first")
else:
# get selected tracks names
trackNames = []
for trackidx in range(0, nbSelectedTracks):
curSelectedTrack = RPR_GetSelectedTrack(0, trackidx)
trackNames.append(RPR_GetSetMediaTrackInfo_String(curSelectedTrack, "P_NAME", "", False)[3])
# find out length of similar prefix
letterIndex = 0
sameLetterAcrossAllNames = True
similarPrefix = ""
# iterate over tracks names characters as long as they're similar across all selected tracks
while sameLetterAcrossAllNames and letterIndex < len(trackNames[0]):
curLetter = trackNames[0][letterIndex]
for trackidx in range(1, len(trackNames)):
if trackNames[trackidx][letterIndex] != curLetter:
sameLetterAcrossAllNames = False
if sameLetterAcrossAllNames:
similarPrefix += curLetter
letterIndex += 1
similarPrefixLength = letterIndex - 1
RPR_ShowConsoleMsg("Removing prefix: " + similarPrefix + " (length: " + str(similarPrefixLength) + ")")
RPR_PreventUIRefresh(1)
RPR_Undo_BeginBlock()
# set selected tracks names
for trackidx in range(0, nbSelectedTracks):
curSelectedTrack = RPR_GetSelectedTrack(0, trackidx)
newTrackName = trackNames[trackidx][similarPrefixLength:]
RPR_GetSetMediaTrackInfo_String(curSelectedTrack, "P_NAME", newTrackName, True)
RPR_Undo_EndBlock("Remove common tracks prefixes", -1)
RPR_UpdateArrange()
RPR_PreventUIRefresh(-1)