#How to detect new image arriving to trigger my own pipeline?

1 messages · Page 1 of 1 (latest)

hushed abyss
#

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!

tame peakBOT
#

:wave: Hey @hushed abyss,

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

#

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.

pseudo gate
#

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

hushed abyss
#

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?

pseudo gate
#

We use socket.io so using their client is probably the easiest

#

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

hushed abyss
#

Trying to connect to the socket but no success:

Here's my simple python script:

import socketio

sio = socketio.Client(logger=True, engineio_logger=True)

IMMICH_WS_URL = "http://10.0.0.164:2283"

try:
    sio.connect(IMMICH_WS_URL, transports=["websocket"], socketio_path="/socket.io/")
    print("✅ Connected to Immich WebSocket")
except Exception as e:
    print("❌ WebSocket Connection Failed:", e)

Which returns:

Attempting WebSocket connection to ws://10.0.0.164:2283/socket.io/?transport=websocket&EIO=4
:x: WebSocket Connection Failed: Connection error

I've checked with curl and wscat as well and it doesn't seem to connect to it?

pseudo gate
#

The path is wrong

#

And you'll probably also need auth; I think on the web client that's automatically included in the cookie

hushed abyss
#

Ah my bad yes it's ws not http

#

Yeah I was wondering, using the API key would auth?

pseudo gate
pseudo gate
hushed abyss
#

Cause I tried

(.env) poro@poro-P65-P67RGRERA:~/recipe-flow$ npx wscat -c "ws://10.0.0.164:2283/socket.io/?EIO=4&transport=websocket" -H "Authorization: Bearer <my-api-key>"
error: socket hang up
#

Ah you mean /api/socket.io yeah I fully missed that

#
(.env) poro@poro-P65-P67RGRERA:~/recipe-flow$ python3 test_socket.py 
Attempting WebSocket connection to ws://10.0.0.164:2283/api/socket.io/?transport=websocket&EIO=4
WebSocket connection accepted with {'sid': 'uDQqb1wcR_bMlvHeAAAG', 'upgrades': [], 'pingInterval': 25000, 'pingTimeout': 20000, 'maxPayload': 1000000}
Engine.IO connection established
Sending packet MESSAGE data 0{}
Received packet MESSAGE data 0{"sid":"t0f54-CROVZ3dIQkAAAH"}
Namespace / is connected
✅ Connected to Immich WebSocket
#

AMAZING

#

Looks like I didn't need to auth, I just updated the path to /api/socket.io/

pseudo gate
#

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 key

hushed abyss
#

Yes ! 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 !

#

Thxxxxxxxxx

left torrent
#

This 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?

pseudo gate
#

I don't think there's album events at the moment, but they should be easy enough to add