[PYTHON] Temps trié par REAPER et étiqueté

introduction

J'ai utilisé un script qui change les noms des éléments dans un lot avec REAPER car il était à l'origine là.

image.png

Lorsque les pistes étaient séparées, c'était comme si le nom était versé dans chaque piste. Cela aurait été bien s'il était divisé en une seule piste ...

Quand j'ai remarqué, j'avais séparé les pistes.

Alors J'ai écrit un script qui met les noms par ordre chronologique.

(De plus, s'il y a trop de personnages, il semble que les personnages soient terminés, donc cela n'a fonctionné qu'à moitié)

Flux global

  1. Obtenez le nombre d'éléments sélectionnés
  2. Obtenez l'élément sélectionné
  3. Obtenez la prise actuelle
  4. Obtenez l'heure de début et prenez la prise actuelle
  5. Trier par heure (trier)
  6. Dans la boîte de dialogue, récupérez les caractères à renommer
  7. Renommer lorsque vous appuyez sur le bouton

Boîte de dialogue d'entrée

J'ai utilisé Python tkinter. Un écran comme celui-ci apparaît.

image.png

La source

tatLable.py


RPR_ClearConsole()

#Get Selected Items
itemNum = RPR_CountSelectedMediaItems(0)

itemList = []

for itemidx in range(itemNum):
  mediaItem = RPR_GetSelectedMediaItem(0,itemidx)
  itemList.append(mediaItem)
  
# Sort Items
dict = {}  
 
for item in itemList:
  currentTakeId = RPR_GetMediaItemInfo_Value(item, "I_CURTAKE")
  startTime = RPR_GetMediaItemInfo_Value(item, "D_POSITION")
  currentTake = RPR_GetMediaItemTake(item,int(currentTakeId))
  
  retval, tk, parmname, stringNeedBig,setnewvalue = RPR_GetSetMediaItemTakeInfo_String(currentTake, "P_NAME", "", False)
 
  dict[startTime] = currentTake
  #RPR_ShowConsoleMsg(str(startTime) + ",")
#RPR_ShowConsoleMsg(str(startTime) + "\n")
  
# Sort Start Time    
sortedList = sorted(dict.items(), key=lambda x: x[0], reverse=False)

for item in sortedList:
  retval, tk, parmname, stringNeedBig,setnewvalue = RPR_GetSetMediaItemTakeInfo_String(item[1], "P_NAME", "", False)
  RPR_ShowConsoleMsg(stringNeedBig + ",")
  
# Dialog
import tkinter
root = tkinter.Tk()
root.title("Rename Item with CSV")
root.geometry("400x200")

label = tkinter.Label(root, text="Names(separated by \",\")")
label.grid()

txtbox = tkinter.Entry()
txtbox.grid()

def clicked():
  nameList = txtbox.get().split(',')
  
  index = 0
  length = len(nameList)
  for item in sortedList:
    
    if index <= length :
      newName = nameList[index]
      retval, tk, parmname, stringNeedBig,setnewvalue = RPR_GetSetMediaItemTakeInfo_String(item[1], "P_NAME", newName, True) 
      index += 1
     
  root.destroy()

button = tkinter.Button(root, text = "OK", command= clicked)
button.grid()

root.mainloop()

Résumé

J'ai trouvé que je pouvais gérer le tri du temps. J'ai découvert que je peux utiliser une interface graphique simple, donc je pense que je peux faire différentes choses.

Recommended Posts

Temps trié par REAPER et étiqueté
Python> Trier par nombre et trier par alphabet> Utiliser trié ()
Date et heure ⇔ chaîne de caractères
Fonctions de tri et de comparaison Python 3