Parcourir la source

feat(immich): add video geolocation patch for metadata handling

Zander Hawke il y a 7 mois
Parent
commit
30d190a2e2
2 fichiers modifiés avec 22 ajouts et 4 suppressions
  1. 6 4
      overlays/default.nix
  2. 16 0
      overlays/video-geolocation.patch

+ 6 - 4
overlays/default.nix

@@ -11,11 +11,13 @@ rec {
     # ...
     # });
 
-    makeModulesClosure = x: prev.makeModulesClosure (x // { allowMissing = true; });
+    immich = prev.immich.overrideAttrs (oldAttrs: {
+      patches = (oldAttrs.patches or [ ]) ++ [
+        ./video-geolocation.patch
+      ];
+    });
 
-    kraft = prev.kraft.overrideAttrs (
-      old: inputs.nixpkgs.lib.recursiveUpdate old { meta.broken = false; }
-    );
+    makeModulesClosure = x: prev.makeModulesClosure (x // { allowMissing = true; });
 
     tmuxPlugins = prev.tmuxPlugins // {
       tmux-select-pane-no-wrap = prev.tmux-select-pane-no-wrap;

+ 16 - 0
overlays/video-geolocation.patch

@@ -0,0 +1,16 @@
+diff --git a/server/src/repositories/metadata.repository.ts b/server/src/repositories/metadata.repository.ts
+index 6073ddcb2..af431933e 100644
+--- a/server/src/repositories/metadata.repository.ts
++++ b/server/src/repositories/metadata.repository.ts
+@@ -103,7 +103,10 @@ export class MetadataRepository {
+   }
+ 
+   readTags(path: string): Promise<ImmichTags> {
+-    return this.exiftool.read(path).catch((error) => {
++    const isVideo = /\.(mp4|mov|avi|mkv)$/i.test(path);
++    const args = isVideo ? ['-ee'] : [];
++
++    return this.exiftool.read(path, args).catch((error) => {
+       this.logger.warn(`Error reading exif data (${path}): ${error}\n${error?.stack}`);
+       return {};
+     }) as Promise<ImmichTags>;