search

Semantic image search using FastEmbed and sqlite-vec

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
import os
import sys
import tempfile
import xmlrpc.client
from unixsocket import UnixStreamTransport


sockpath = os.path.join(os.environ["XDG_RUNTIME_DIR"], "search.sock")
proxy = xmlrpc.client.ServerProxy(
    "http://localhost", transport=UnixStreamTransport(sockpath)
)
res = proxy.search(sys.argv[1], sys.argv[2])

if len(sys.argv) == 3:
    print("\n".join(res))
else:
    temp_dir = tempfile.TemporaryDirectory(delete=False)
    for i, path in enumerate(res):
        os.symlink(path, os.path.join(temp_dir.name, str(i)))
    print(temp_dir.name)
# Very slow
# elif sys.argv[3] == "sixel":
#     for imgpath in res:
#         print(imgpath)
#         c = converter.SixelConverter(imgpath, h=50, w=50)
#         c.write(sys.stdout)