What you're looking for is maya python interpreter: https://knowledge.autodesk.com/support/maya/learn-explore/caas/CloudHelp/cloudhelp/2015/ENU/Maya/files/Python-Python-from-an-external-interpreter-htm.html
Are you looking to create a new shader through openGL or just apply a current shader from hypershade? Here is the code to create a shading node and attach it:
`
attach_shader.py
class Shader():
shader = ''
selectedObject = ''
shadingFileNode = {}
fileNode = ''
def __init__(self, shaderType, _fileNode, createNewShader = False):
self.fileNode = _fileNode
self.selectedObject = cmds.ls(selection=True)
if createNewShader:
self.CreateShadingNode(shaderType)
def CreateShadingNode(self, shaderType):
self.shader = cmds.shadingNode(shaderType, asShader=True)
shading_group = cmds.sets(renderable=True,noSurfaceShader=True,empty=True)
cmds.connectAttr('%s.outColor' % self.shader ,'%s.surfaceShader' % shading_group)
self.CreateShadingFileNode()
self.AttachFile()
def CreateShadingFileNode(self):
for node in self.fileNode:
self.shadingFileNode[node] = cmds.shadingNode('file', asTexture=True)
cmds.connectAttr('%s.outColor' % self.shadingFileNode[node], '%s.%s' % (self.shader, node))
if self.fileNode != '':
self.SetFileTexture(node)
def SetFileTexture(self, node):
cmds.setAttr('%s.fileTextureName' % self.shadingFileNode[node], self.fileNode[node], type = "string")
def AttachFile(self, fileNodeName = 'albedo'):
name = cmds.rename(self.shader, os.path.splitext(os.path.basename(self.fileNode[fileNodeName]))[0])
cmds.select(self.selectedObject)
cmds.hyperShade(assign= name)
`
You should be able to understand what all that's doing but there is 3 processes 1, you have to create the shading node. 2, you have to attach a filenode. 3, attach file to object.