In theory you can use the ReplyGIF to accomplish this goal.
If you didn’t want to utilize the GIFs from ReplyGIF the plugin already supports you changing it to use a different URL.
You would have to support the API that ReplyGIF already offers though, including the response structure.
So at a minimum you would have to have endpoints for
###example.com/replies
Provides a json array of strings
example: ["category
", “category2”, “category3”]
###example.com/tags
Provides a json array of strings
example: ["tag
", “tag2”, “tag3”]
###example.com/gifs
Provides a json array of images and their details
example:
[
{ file => "example.com/i/filename1", tags => "comma separated list of tags", caption => "caption of image1" },
{ file => "example.com/i/filename2", tags => "comma separated list of tags", caption => "caption of image2" }
]
###example.com/i/filename
Returns the image for filename
###example.com/thumbnail/filename
Returns the thumbnail for filename
###example.com/gifs?reply=category
Returns a list of images and their details (see above) in a given category
###example.com/gifs?tag-operator=and&tag=tags
Returns a list of images and their details (see above) that have each tag provided (comma separated)
###example.com/gifs?reply=category&tag-operator=and&tag=tags
Returns a list of images and their details (see above) that are in a specific category and have each tag provided (comma separated)
Granted, you could set it up so /replies
, /tags
return a single item, and thus the querystring parts become moot. So the only thing you’d have to do is ensure the /gifs
endpoint returns all of the GIFs you want to support.