| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 | 
							- from __future__ import print_function
 - 
 - class playInRV(KellerNukePlugin):
 -     def configurePlugin(self):
 -         menubar = nuke.menu('Nuke')
 -         self.m = menubar.addMenu('Workgroup')
 -         self.m.addCommand('Play in RV', 'playInRV.playInRV()')
 -         self.m.addCommand('Play in RV (append)', 'playInRV.playInRV(append=true)')
 - 
 -     def unconfigurePlugin(self):
 -         self.m.removeItem('Play in RV')
 -         self.m.removeItem('Play in RV (append)')
 - 
 - 
 - def playInRV(node, mode):
 -     """
 -     loads the file specified in the write node to a new or existing RV session
 -     rvlink:// -l -play /path/to/my/movie.mov
 -     attaches a tag to the rv instance which is used to append sources to the session
 -     TODO: Linux / MacOS Support
 -     TODO: Better logging
 -     """
 -     import os
 -     import subprocess
 -     import random
 -     import nuke
 - 
 -     file = node.knobs()['file'].getValue()
 -     useshotenv = node.knobs()['useshotenv'].getValue()
 -     my_env = os.environ.copy()
 - 
 -     if useshotenv == 0:
 -         try:
 -             del my_env['PREFIX']
 -             del my_env['SEQ']
 -             del my_env['SHOT']
 -         except:
 -             pass
 -     try:
 -         rvpush = my_env['RV'] + 'rvpush'
 -         print(('playInRV: Info. Using RV: %s') % rvpush)
 -     except:
 -         print('playInRV: Error. No env variable RV found. Exiting.')
 -         return
 - 
 -     try:
 -         rv_gen_workgroup = my_env['RV_GEN_WORKGROUP']
 -     except:
 -         print('playInRV: Error. No env variable RV_GEN_WORKGROUP found. Exiting.')
 -         return
 - 
 -     try:
 -         root3d = my_env['PROJECT_ROOT_3D']
 -         print(('playInRV: Info. Using JOB: %s') % root3d)
 -     except:
 -         print('playInRV: Warning. No env variable job found.')
 -         my_env['JOB'] = 'GEN'
 - 
 -     try:
 -         dev = my_env['DEV']
 -         print(('playInRV: Info. Using dev: %s') % dev)
 -     except:
 -         print('playInRV: Warning. No env variable dev found. Setting pub.')
 -         my_env['DEV'] = "0"
 - 
 -     # check with default project without dev/pub structure
 -     if my_env['JOB'] == 'GEN':
 -         pass
 -     if my_env['DEV'] == "0":
 -         my_env['RV_SUPPORT_PATH'] = rv_gen_workgroup.replace('"', '').replace('\\', '/') + ';' + root3d.replace('"', '').replace('\\', '/') + '/000_env/rv/'
 -     else:
 -         my_env['RV_SUPPORT_PATH'] = rv_gen_workgroup.replace('"', '').replace('\\', '/') + ';' + root3d.replace('"', '').replace('\\', '/') + '/000_dev/rv/'
 -     print(('playInRV: Info. Using RV Workgroup: %s') % my_env['RV_SUPPORT_PATH'])
 - 
 -     if nuke.root()['colorManagement'].value().lower() != 'ocio':
 -         pass
 -     else:
 -         if nuke.root()['OCIO_config'].value() == 'custom':
 -             if nuke.root()['customOCIOConfigPath'].value() != "":
 -                 my_env['OCIO'] = nuke.root()['customOCIOConfigPath'].value()
 -         else:
 -             my_env['OCIO'] = 'c:/Program Files/Nuke' + nuke.NUKE_VERSION_STRING + '/plugins/OCIOConfigs/configs/' + \
 -                              nuke.root()['OCIO_config'].value() + '/config.ocio'
 - 
 -         print(('playInRV: Info. Using OCIO config %s') % my_env['OCIO'])
 - 
 -     # check modes
 -     if mode == 0:
 -         # new RV
 -         # get a random string for a random rv id
 -         rnd = random.choice('abcdefghijklmnopqrstuvwxyz')
 -         subprocess.call([rvpush, '-tag', rnd, 'set', file], env=my_env)
 -         pass
 -     elif mode == 1:
 -         # sets / replaces the source of the connected rv
 -         subprocess.call([rvpush, '-tag', 'nukeKeller', 'set', file], env=my_env)
 -         pass
 -     elif mode == 2:
 -         # appends to the connected rv
 -         subprocess.call([rvpush, '-tag', 'nukeKeller', 'merge', file], env=my_env)
 -         pass
 -     return
 - 
 - 
 - # test in nuke
 - #file = nuke.toNode('Write1').knob('file').getValue()
 - #playInRV(file, 1)
 
 
  |