95 lines
3.4 KiB
Python
95 lines
3.4 KiB
Python
import sys, json
|
|
|
|
sys.path.append("..") # Adds higher directory to python modules path.
|
|
import socket
|
|
import maya.cmds as cmds
|
|
import maya.mel as melc
|
|
|
|
# For Importing Requests package
|
|
import os
|
|
parent_dir = os.path.abspath(os.path.dirname(__file__))
|
|
package = os.path.join(parent_dir, 'RequestLibrary')
|
|
sys.path.append(package)
|
|
|
|
# For Handling all kinds of Logging
|
|
class Analytics:
|
|
def __init__(self,id, guid, export_type):
|
|
self.id = id
|
|
self.guid = guid
|
|
self.export_type = export_type
|
|
self.sendBridgeLog()
|
|
self.sendMetabase()
|
|
|
|
# Open Local Connection to get Port from Bridge
|
|
def GetActivePort(self):
|
|
HOST = '127.0.0.1' # Standard loopback interface address (localhost)
|
|
PORT = 28852 # Port to listen on (non-privileged ports are > 1023)
|
|
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
sock.connect((HOST, PORT))
|
|
activeport = sock.recv(32)
|
|
sock.close()
|
|
|
|
return activeport.decode("utf-8")
|
|
|
|
# Set the data which will be sent to metabase
|
|
def GetData(self):
|
|
# from Megascans.ImporterSetup import importerSetup
|
|
# instance = importerSetup.getInstance()
|
|
from LiveLink import MAYA_PLUGIN_VERSION
|
|
self.maya_version = cmds.about(version=True)
|
|
self.renderer = melc.eval("getAttr defaultRenderGlobals.currentRenderer;")
|
|
self.render_version = self.rendererVersion()
|
|
data = {
|
|
'event': "MAYA_ASSET_IMPORT",
|
|
'data':{
|
|
'guid': self.guid,
|
|
'plugin_version':MAYA_PLUGIN_VERSION,
|
|
'app_version': self.maya_version,
|
|
'renderer': self.renderer,
|
|
'renderer_version': self.render_version,
|
|
'asset_ID': self.id,
|
|
'export_type': self.export_type
|
|
}
|
|
}
|
|
return json.dumps(data)
|
|
|
|
# Gets the current active render engine and its version
|
|
def rendererVersion(self):
|
|
if(self.renderer == 'arnold'):
|
|
return cmds.pluginInfo('mtoa', query=True, version=True)
|
|
elif(self.renderer == 'redshift'):
|
|
return cmds.pluginInfo('redshift4maya', query=True, version=True)
|
|
elif(self.renderer == 'vray'):
|
|
return cmds.pluginInfo('vrayformaya', query=True, version=True)
|
|
elif(self.renderer == 'mayaSoftware'):
|
|
return '1.0'
|
|
elif(self.renderer == 'mayaHardware2'):
|
|
return '2.0'
|
|
elif(self.renderer == 'mayaVector'):
|
|
return '1.0'
|
|
else:
|
|
return "-"
|
|
|
|
|
|
# For Sending the data to Bridge Log File
|
|
def sendBridgeLog(self):
|
|
try:
|
|
from Megascans.RequestLibrary import requests
|
|
port = self.GetActivePort()
|
|
url = "http://localhost:" + port + "/log/"
|
|
response = requests.post(url, json=self.GetData())
|
|
#print("Logging Response : ", response)
|
|
except Exception as e:
|
|
print("Bridge Logging Exception", e)
|
|
|
|
# # For Sending the data to Metabase
|
|
def sendMetabase(self):
|
|
try:
|
|
from Megascans.RequestLibrary import requests
|
|
port = self.GetActivePort()
|
|
url = "http://localhost:" + port + "/analytics/"
|
|
response = requests.post(url, data=self.GetData())
|
|
#print("Metabase finished: ", response)
|
|
except Exception as e:
|
|
print("Metabase Exception : ", e)
|