Ant Landscape Upgrade Troubles (and workarounds)

I’m NRK the author of the cloud generator and I have a few python issues.

Ok, I am going to announce this in a thread later (if I make it far enough). But I am working on an upgrade to Ant Landscape that includes Cycles Materials and possibly tree insertion etc. This is a completely unsolicited illegal upgrade, but I’m just doing it for fun. I have run into several gotchas that have workaround, but they are total hacks and before I post any bug reports I need someone to tell me I’m doing it all wrong.

Major Problem:
I cannot link two(or multiple nodes) to a single output in python. I use a command like:
SnowNodes.links.new(MathDProduct3.inputs[0],Geometry3.outputs[1])
and then if I run this command again with the same output to be linked to another input IT DELETES the original link and I am therefor limited to NEVER using a set of nodes in two places. The ONLY work around is to make two completely identical groups of nodes.:spin:

Secondary difficulty:
So I spent an hour or two trying to make group nodes in python and the only way to create group nodes in python is to use bpy.ops.node.group_make() which gives me a poll error with no work around.

Another annoyance:
The Mapping node has three numbers called location as well rotation and scale. A generic node of any type has another property called location that places it’s position inside the node tree on the screen. Unfortunately the Mapping node’s location OVERRIDES the screen position so THERE IS NO WAY to set the location of a mapping node on the screen. If I have more than one mapping node in a node tree they sit on top of each other at 0,0.

If you would like I can post some example code to show my issues, but I wanted to get any feedback before I went to the trouble.