How to detect new image arriving to trigger my own pipeline?
Hi,
I just setup the server on my own ubuntu laptop to test it out and I have been trying to figure out how to detect the arrival of a new image with the Immich API but I do not think that's possible? It looks like all asset queries require an ID?
I saw there are external libraries scan but I want to do the opposite, scan the immich library itself for me to use it in my own python pipeline.
Please let me know if I'm missing something! Thanks again for such an amazing app!
14 Replies
:wave: Hey @Moonlight,
Thanks for reaching out to us. Please carefully read this message and follow the recommended actions. This will help us be more effective in our support effort and leave more time for building Immich :immich:.
References
- Container Logs:
docker compose logs
docs
- Container Status: docker ps -a
docs
- Reverse Proxy: https://immich.app/docs/administration/reverse-proxy
- Code Formatting https://support.discord.com/hc/en-us/articles/210298617-Markdown-Text-101-Chat-Formatting-Bold-Italic-Underline#h_01GY0DAKGXDEHE263BCAYEGFJA
Checklist
I have...
1. :blue_square: verified I'm on the latest release(note that mobile app releases may take some time).
2. :blue_square: read applicable release notes.
3. :blue_square: reviewed the FAQs for known issues.
4. :blue_square: reviewed Github for known issues.
5. :blue_square: tried accessing Immich via local ip (without a custom reverse proxy).
6. :blue_square: uploaded the relevant information (see below).
7. :blue_square: tried an incognito window, disabled extensions, cleared mobile app cache, logged out and back in, different browsers, etc. as applicable
(an item can be marked as "complete" by reacting with the appropriate number)
Information
In order to be able to effectively help you, we need you to provide clear information to show what the problem is. The exact details needed vary per case, but here is a list of things to consider:
- Your docker-compose.yml and .env files.
- Logs from all the containers and their status (see above).
- All the troubleshooting steps you've tried so far.
- Any recent changes you've made to Immich or your system.
- Details about your system (both software/OS and hardware).
- Details about your storage (filesystems, type of disks, output of commands like fdisk -l
and df -h
).
- The version of the Immich server, mobile app, and other relevant pieces.
- Any other information that you think might be relevant.
Please paste files and logs with proper code formatting, and especially avoid blurry screenshots.
Without the right information we can't work out what the problem is. Help us help you ;)
If this ticket can be closed you can use the /close
command, and re-open it later if needed.It's not really documented, but there are websocket events for new uploads
If you don't need it live, you can use the /search/metadata with a filter on
createdAfter
Live would be incredible ! I've never heard of websockets until today so lemme check how to grab those ! Is there any code, tutorial I should look for in particular?
There's no Immich specific documentation or guides for this
We use socket.io so using their client is probably the easiest
Here's how we connect from the web client https://github.com/immich-app/immich/blob/main/web/src/lib/stores/websocket.ts#L32-L38
The format of the messages isn't documented either, so I'd say just connect and set it up to debug log everything that comes through, then mess around in Immich to have it generate some messages
Trying to connect to the socket but no success:
Here's my simple python script:
Which returns:
I've checked with curl and wscat as well and it doesn't seem to connect to it?
The path is wrong
And you'll probably also need auth; I think on the web client that's automatically included in the cookie
Ah my bad yes it's ws not http
Yeah I was wondering, using the API key would auth?
That too, but I meant the path, not the URL
I'm not actually sure how we handle auth on the websocket, trying to figure that out now
Cause I tried
Ah you mean
/api/socket.io
yeah I fully missed that
AMAZING
Looks like I didn't need to auth, I just updated the path to /api/socket.io/
Interesting š¤
I believe you can connect without authenticating but won't actually receive anything
And you'll want to add an
x-api-key
header with the api keyYes ! The
docker logs immich_server
show unauthorized access when I don't use it and just Connect + Disconnect when I do so I expect it's fine !
ThxxxxxxxxxThis is very interesting.
Would assets added or removed from albums be noted here as well?
Does the debug log need to be on info or would everything come through without changing logging levels?
I don't think there's album events at the moment, but they should be easy enough to add
immich-server log level has no effect on websocket messages