How can I assign a new material to an object in the scene via Python?
Here you go, code with some safety checks:
import bpy ob = bpy.context.active_object # Get material mat = bpy.data.materials.get("Material") if mat is None: # create material mat = bpy.data.materials.new(name="Material") # Assign it to object if ob.data.materials: # assign to 1st material slot ob.data.materials = mat else: # no slots ob.data.materials.append(mat)
"Is it also possible to specify which material (glossy, glass, diffuse)" I don't think this is "another question" because if you do the code above you are working with the principled BSDF added by default but after several researches I found an answer working in blender 2.8 there Add Nodes to Material with Python. you have to work with nodes or you don't really see on what you are working.