diff --git a/cli/package-lock.json b/cli/package-lock.json index 372160121d..c64010a6c6 100644 --- a/cli/package-lock.json +++ b/cli/package-lock.json @@ -1,12 +1,12 @@ { "name": "@immich/cli", - "version": "2.0.3", + "version": "2.0.4", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@immich/cli", - "version": "2.0.3", + "version": "2.0.4", "license": "MIT", "dependencies": { "axios": "^1.6.2", diff --git a/cli/package.json b/cli/package.json index b42da01018..c1fe546d73 100644 --- a/cli/package.json +++ b/cli/package.json @@ -1,12 +1,16 @@ { "name": "@immich/cli", - "version": "2.0.3", + "version": "2.0.4", "description": "Command Line Interface (CLI) for Immich", "main": "dist/index.js", "bin": { "immich": "./dist/src/index.js" }, "license": "MIT", + "keywords": [ + "immich", + "cli" + ], "dependencies": { "axios": "^1.6.2", "byte-size": "^8.1.1", @@ -77,7 +81,7 @@ }, "repository": { "type": "git", - "url": "git+https://github.com/immich-app/immich.git", + "url": "github:immich-app/immich", "directory": "cli" } } diff --git a/cli/src/api/client.ts b/cli/src/api/client.ts index 713a6ee574..392e824b69 100644 --- a/cli/src/api/client.ts +++ b/cli/src/api/client.ts @@ -11,6 +11,7 @@ import { UserApi, } from './open-api'; import { ApiConfiguration } from '../cores/api-configuration'; +import FormData from 'form-data'; export class ImmichApi { public userApi: UserApi; @@ -35,6 +36,7 @@ export class ImmichApi { 'x-api-key': apiKey, }, }, + formDataCtor: FormData, }); this.userApi = new UserApi(this.config); diff --git a/cli/src/cores/models/asset.ts b/cli/src/cores/models/asset.ts index 69dc1a813e..6322e56085 100644 --- a/cli/src/cores/models/asset.ts +++ b/cli/src/cores/models/asset.ts @@ -8,11 +8,11 @@ export class Asset { readonly path: string; readonly deviceId!: string; - assetData?: File; + assetData?: fs.ReadStream; deviceAssetId?: string; fileCreatedAt?: string; fileModifiedAt?: string; - sidecarData?: File; + sidecarData?: fs.ReadStream; sidecarPath?: string; fileSize!: number; albumName?: string; @@ -30,13 +30,13 @@ export class Asset { this.fileSize = stats.size; this.albumName = this.extractAlbumName(); - this.assetData = await this.getFileObject(this.path); + this.assetData = this.getReadStream(this.path); // TODO: doesn't xmp replace the file extension? Will need investigation const sideCarPath = `${this.path}.xmp`; try { fs.accessSync(sideCarPath, fs.constants.R_OK); - this.sidecarData = await this.getFileObject(sideCarPath); + this.sidecarData = this.getReadStream(sideCarPath); } catch (error) {} } @@ -48,19 +48,18 @@ export class Asset { if (!this.deviceId) throw new Error('Device id not set'); return { - assetData: this.assetData, + assetData: this.assetData as any, deviceAssetId: this.deviceAssetId, deviceId: this.deviceId, fileCreatedAt: this.fileCreatedAt, fileModifiedAt: this.fileModifiedAt, isFavorite: false, - sidecarData: this.sidecarData, + sidecarData: this.sidecarData as any, }; } - private async getFileObject(path: string): Promise { - const buffer = await fs.promises.readFile(path); - return new File([buffer], basename(path)); + private getReadStream(path: string): fs.ReadStream { + return fs.createReadStream(path); } async delete(): Promise {