In Animation Nodes, is it possible to make a node to translate position of the UV's of an instance? I've been trying to find if it is possible to, using some sort of code in animation nodes, translate the position of a texture or the UV mapping to create a bunch of objects with different textures to cut down the amount of work I have to do (at this point I probably would've been done by doing the copy object data method, but I would've had to manually make about 70 some odd materials and cut an object into the same number).

What I was hoping to do was create a list of textures (barring that, a list of coordinate offsets) that would change the texture inside of a shader node instance.  

In newnodes' Shader Node Controller I can't seem to control the mapping node (getting the data path of the x/y position of texture comes back as not existing). I also can't control what the name of the texture going into the shader is either.



I got silly and tried to use Texture Input node to send color to a node that had color as an input in some form, but that just got a single color rather than the whole image.

I assume I would need to make my own script node for this?  Or is there anything else I may have missed.  And is there any documentation about setting up a script node?  I probably need to read more into coding in blender python in general to work with this.

I realize the brute force method to do this simply is to either make my 70+ materials and 70+ objects and copy object data over the instances or even use the mix shader method of setting up the texture mapping for each image in my atlas and use a boolean for all of the values.  I'm just trying to find out if there is any way to make this process simpler and easier to update as needed.

As far as I've read Animation Nodes and Sverchok aren't exactly meant for working with textures specifically, but it was something I got curious about while undertaking this small side project.
Note: I have replaced the Shader Controller Node (no longer supported) by new Material Attribute Input/Output Nodes, so I have updated this answer.

=============================

Method-1: Offsetting the coordinate in Mapping Node of single texture for different materials:
Here, I have made a simple example to use Material Attribute Input/Output Nodes. These nodes are work similar to Object Attribute Input/Output Nodes,

A simple shader Node-tree:


AN Node-tree for one object:


Now, for multiple objects: I have instanced a cube (with deep copy) and a material then assign them to individual objects by using Object Material Output node in a Loop Node. Then use the same setup of Material Attribute Output Node (mentioned above) to offset coordinates of Mapping Node with Random float node. However, you can use own coordinate list to offset them:


Method-1 Blend File:



=============================

Method-2: Assigning different textures to different materials: In this method, we need a small script which loads a texture from the specified folder then assign to a material. Here is the script:

import bpy

try:
    bpy.data.materials[material.name].node_tree.nodes['Image Texture'].image = bpy.data.images[image]
except:
    filepath = path + image
    newImage = bpy.data.images.load(filepath)
    bpy.data.materials[material.name].node_tree.nodes['Image Texture'].image = newImage 


and in AN, I have used Script Node to use the script,


This script needs three inputs: material, the path to the image folder, and name of the image. Because, we have multiple images, so we going to use Loop Node, here is the setup:


Now, for multiple objects: I have instanced a cube (with deep copy) and a material then assign them to individual objects by using Object Material Output node in a Loop Node. Then use the above setup to assign different textures for different materials,


Method-2 Blend File:



=============================