I had a similar problem way back ;)
I used this addon: http://blenderaddonlist.blogspot.com/2015/05/addon-quad-unwrap.html
What I did was to unwrap all my quads that should share the same texture at once, used the addon to make all lines straight and then scaled the resulting grid so that one cell occupies the whole uv space, forcing the other cells outside thus making them exact uv copies of the first cell.
EDIT: It seems the author did not update the link he posted on blenderaddonlist. However in his youtue tutorial he posted a downloadlink in the description that still works ;) https://www.youtube.com/watch?v=DcFEdK5TQv0 https://www.dropbox.com/s/li6nuop9c4omlih/wahooney_uv_quad_unwrap.py?dl=0
EDIT2: Triangles are a bitch. It does not work with them, since there is no way for the addon to know which way to follow to the next quad. So you would have to get rid of the triangles first. Unless the geometry is very complex the build in blender tri to quad function should be able to do it.
EDIT3: Feeling stupid right now ... using U -> Reset on the faces already does a per face mapping. Is that feature new ? I could swear the reset option was not there two years ago ;)