I know how to add drivers to a cube rotation using an empty as a driver. Here's how I know:
import bpy
def add_driver(
source, target, prop, dataPath,
index = -1, negative = False, func = ''
):
''' Add driver to source prop (at index), driven by target dataPath '''
if index != -1:
d = source.driver_add( prop, index ).driver
else:
d = source.driver_add( prop ).driver
v = d.variables.new()
v.name = prop
v.targets[0].id = target
v.targets[0].data_path = dataPath
d.expression = func + "(" + v.name + ")" if func else v.name
d.expression = d.expression if not negative else "-1 * " + d.expression
empty = bpy.context.scene.objects['Empty']
add_driver( cube, empty, 'rotation_euler', 'rotation_euler.x', 0)
add_driver( cube, empty, 'rotation_euler', 'rotation_euler.y', 1)
add_driver( cube, empty, 'rotation_euler', 'rotation_euler.z', 2)
How do I use the same empty to add drivers to a "vector rotate(Euler)" node in rotation(x,y,z) in shader editor using python?