@gannochenko/staticstripes 0.0.15 ā 0.0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/ai-music-api-ai/ai-music-api-ai-generation-strategy.d.ts +3 -4
- package/dist/cli/ai-music-api-ai/ai-music-api-ai-generation-strategy.d.ts.map +1 -1
- package/dist/cli/ai-music-api-ai/ai-music-api-ai-generation-strategy.js +22 -32
- package/dist/cli/ai-music-api-ai/ai-music-api-ai-generation-strategy.js.map +1 -1
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +8 -2
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/cli/credentials.d.ts +81 -0
- package/dist/cli/credentials.d.ts.map +1 -0
- package/dist/cli/credentials.js +109 -0
- package/dist/cli/credentials.js.map +1 -0
- package/dist/cli/instagram/instagram-upload-strategy.d.ts +3 -1
- package/dist/cli/instagram/instagram-upload-strategy.d.ts.map +1 -1
- package/dist/cli/instagram/instagram-upload-strategy.js +37 -26
- package/dist/cli/instagram/instagram-upload-strategy.js.map +1 -1
- package/dist/cli/s3/s3-upload-strategy.d.ts +7 -1
- package/dist/cli/s3/s3-upload-strategy.d.ts.map +1 -1
- package/dist/cli/s3/s3-upload-strategy.js +142 -43
- package/dist/cli/s3/s3-upload-strategy.js.map +1 -1
- package/dist/cli/youtube/youtube-upload-strategy.d.ts +3 -0
- package/dist/cli/youtube/youtube-upload-strategy.d.ts.map +1 -1
- package/dist/cli/youtube/youtube-upload-strategy.js +22 -20
- package/dist/cli/youtube/youtube-upload-strategy.js.map +1 -1
- package/dist/html-project-parser.d.ts +8 -0
- package/dist/html-project-parser.d.ts.map +1 -1
- package/dist/html-project-parser.js +86 -5
- package/dist/html-project-parser.js.map +1 -1
- package/dist/project.d.ts +3 -1
- package/dist/project.d.ts.map +1 -1
- package/dist/project.js +6 -1
- package/dist/project.js.map +1 -1
- package/dist/time-utils.d.ts +7 -0
- package/dist/time-utils.d.ts.map +1 -0
- package/dist/time-utils.js +17 -0
- package/dist/time-utils.js.map +1 -0
- package/dist/type.d.ts +1 -1
- package/dist/type.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/cli/ai-music-api-ai/ai-music-api-ai-generation-strategy.ts +24 -55
- package/src/cli/commands/generate.ts +10 -2
- package/src/cli/credentials.ts +171 -0
- package/src/cli/instagram/instagram-upload-strategy.ts +38 -39
- package/src/cli/s3/s3-upload-strategy.ts +178 -57
- package/src/cli/youtube/youtube-upload-strategy.ts +22 -23
- package/src/html-project-parser.ts +99 -4
- package/src/project.ts +5 -0
- package/src/time-utils.ts +15 -0
- package/src/type.ts +1 -1
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
import { AIGenerationStrategy, AIAssetConfig } from '../ai-generation-strategy';
|
|
2
|
+
import { CredentialsManager } from '../credentials';
|
|
2
3
|
/**
|
|
3
4
|
* AIMusicAPI.ai generation strategy
|
|
4
5
|
* Generates music using AIMusicAPI.ai's API (https://aimusicapi.ai)
|
|
5
6
|
*/
|
|
6
7
|
export declare class AIMusicAPIGenerationStrategy implements AIGenerationStrategy {
|
|
8
|
+
private credentialsManager?;
|
|
7
9
|
private readonly API_BASE_URL;
|
|
8
10
|
private readonly POLL_INTERVAL_MS;
|
|
9
11
|
private readonly MAX_POLL_ATTEMPTS;
|
|
10
12
|
private readonly DEFAULT_MODEL;
|
|
11
13
|
private readonly DEFAULT_DURATION;
|
|
14
|
+
constructor(credentialsManager?: CredentialsManager | undefined);
|
|
12
15
|
getTag(): string;
|
|
13
16
|
validate(): void;
|
|
14
17
|
generate(config: AIAssetConfig, projectPath: string): Promise<void>;
|
|
15
|
-
/**
|
|
16
|
-
* Loads credentials from .auth/<integrationName>.json
|
|
17
|
-
*/
|
|
18
|
-
private loadCredentials;
|
|
19
18
|
/**
|
|
20
19
|
* Creates a music generation task
|
|
21
20
|
* Returns the task ID
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-music-api-ai-generation-strategy.d.ts","sourceRoot":"","sources":["../../../src/cli/ai-music-api-ai/ai-music-api-ai-generation-strategy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"ai-music-api-ai-generation-strategy.d.ts","sourceRoot":"","sources":["../../../src/cli/ai-music-api-ai/ai-music-api-ai-generation-strategy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAIhF,OAAO,EAAE,kBAAkB,EAAuB,MAAM,gBAAgB,CAAC;AAWzE;;;GAGG;AACH,qBAAa,4BAA6B,YAAW,oBAAoB;IAO3D,OAAO,CAAC,kBAAkB,CAAC;IANvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsC;IACnE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAM;IACxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAM;gBAEnB,kBAAkB,CAAC,EAAE,kBAAkB,YAAA;IAE3D,MAAM,IAAI,MAAM;IAIhB,QAAQ,IAAI,IAAI;IAIV,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoEzE;;;OAGG;YACW,yBAAyB;IAkCvC;;;OAGG;YACW,iBAAiB;IAyE/B;;OAEG;YACW,aAAa;IAM3B;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd"}
|
|
@@ -2,19 +2,23 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AIMusicAPIGenerationStrategy = void 0;
|
|
4
4
|
const path_1 = require("path");
|
|
5
|
-
const fs_1 = require("fs");
|
|
6
5
|
const net_1 = require("../../lib/net");
|
|
7
6
|
const file_1 = require("../../lib/file");
|
|
7
|
+
const credentials_1 = require("../credentials");
|
|
8
8
|
/**
|
|
9
9
|
* AIMusicAPI.ai generation strategy
|
|
10
10
|
* Generates music using AIMusicAPI.ai's API (https://aimusicapi.ai)
|
|
11
11
|
*/
|
|
12
12
|
class AIMusicAPIGenerationStrategy {
|
|
13
|
+
credentialsManager;
|
|
13
14
|
API_BASE_URL = 'https://api.aimusicapi.ai/api/v1';
|
|
14
15
|
POLL_INTERVAL_MS = 20000; // 20 seconds
|
|
15
16
|
MAX_POLL_ATTEMPTS = 60; // 20 minutes max
|
|
16
17
|
DEFAULT_MODEL = 'sonic-v4-5'; // Default model if none specified
|
|
17
18
|
DEFAULT_DURATION = 30; // Default duration in seconds if none specified
|
|
19
|
+
constructor(credentialsManager) {
|
|
20
|
+
this.credentialsManager = credentialsManager;
|
|
21
|
+
}
|
|
18
22
|
getTag() {
|
|
19
23
|
return 'ai-music-api-ai';
|
|
20
24
|
}
|
|
@@ -22,7 +26,23 @@ class AIMusicAPIGenerationStrategy {
|
|
|
22
26
|
// Validation happens during generation when we load credentials
|
|
23
27
|
}
|
|
24
28
|
async generate(config, projectPath) {
|
|
25
|
-
|
|
29
|
+
// Load credentials from local .auth/<integration-name>.json or global ~/.staticstripes/auth/<integration-name>.json
|
|
30
|
+
const manager = this.credentialsManager ||
|
|
31
|
+
new credentials_1.CredentialsManager(projectPath, config.integrationName);
|
|
32
|
+
let credentials;
|
|
33
|
+
try {
|
|
34
|
+
credentials = manager.load(['apiKey']);
|
|
35
|
+
// Trim whitespace from API key
|
|
36
|
+
credentials.apiKey = credentials.apiKey.trim();
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
40
|
+
throw new Error(`${errorMessage}\n\n` +
|
|
41
|
+
`š” AI Music API credentials file should contain:\n` +
|
|
42
|
+
`{\n` +
|
|
43
|
+
` "apiKey": "your-api-key-here"\n` +
|
|
44
|
+
`}\n`);
|
|
45
|
+
}
|
|
26
46
|
const model = config.model || this.DEFAULT_MODEL;
|
|
27
47
|
const duration = config.duration || this.DEFAULT_DURATION;
|
|
28
48
|
console.log(` Submitting music generation request (model: ${model}, duration: ${duration}s)...`);
|
|
@@ -48,36 +68,6 @@ class AIMusicAPIGenerationStrategy {
|
|
|
48
68
|
}
|
|
49
69
|
}
|
|
50
70
|
}
|
|
51
|
-
/**
|
|
52
|
-
* Loads credentials from .auth/<integrationName>.json
|
|
53
|
-
*/
|
|
54
|
-
loadCredentials(integrationName, projectPath) {
|
|
55
|
-
const authFilePath = (0, path_1.resolve)(projectPath, '.auth', `${integrationName}.json`);
|
|
56
|
-
if (!(0, fs_1.existsSync)(authFilePath)) {
|
|
57
|
-
throw new Error(`Credentials file not found: ${authFilePath}\n` +
|
|
58
|
-
`Please create the file with the following format:\n` +
|
|
59
|
-
`{\n "apiKey": "your-api-key-here"\n}`);
|
|
60
|
-
}
|
|
61
|
-
try {
|
|
62
|
-
const fileContent = (0, fs_1.readFileSync)(authFilePath, 'utf-8');
|
|
63
|
-
const credentials = JSON.parse(fileContent);
|
|
64
|
-
if (!credentials.apiKey) {
|
|
65
|
-
throw new Error(`Invalid credentials file: ${authFilePath}\n` +
|
|
66
|
-
`Missing "apiKey" field`);
|
|
67
|
-
}
|
|
68
|
-
// Trim whitespace from API key
|
|
69
|
-
return {
|
|
70
|
-
apiKey: credentials.apiKey.trim(),
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
catch (error) {
|
|
74
|
-
if (error instanceof SyntaxError) {
|
|
75
|
-
throw new Error(`Invalid JSON in credentials file: ${authFilePath}\n` +
|
|
76
|
-
`${error.message}`);
|
|
77
|
-
}
|
|
78
|
-
throw error;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
71
|
/**
|
|
82
72
|
* Creates a music generation task
|
|
83
73
|
* Returns the task ID
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-music-api-ai-generation-strategy.js","sourceRoot":"","sources":["../../../src/cli/ai-music-api-ai/ai-music-api-ai-generation-strategy.ts"],"names":[],"mappings":";;;AACA,+BAA2D;AAC3D,
|
|
1
|
+
{"version":3,"file":"ai-music-api-ai-generation-strategy.js","sourceRoot":"","sources":["../../../src/cli/ai-music-api-ai/ai-music-api-ai-generation-strategy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,MAAM,OAAO,EAC1B,WAAW,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,GACnD,IAAI,CAuON"}
|
|
@@ -41,6 +41,7 @@ const html_project_parser_js_1 = require("../../html-project-parser.js");
|
|
|
41
41
|
const ffmpeg_js_1 = require("../../ffmpeg.js");
|
|
42
42
|
const ffprobe_js_1 = require("../../ffprobe.js");
|
|
43
43
|
const container_renderer_js_1 = require("../../container-renderer.js");
|
|
44
|
+
const time_utils_js_1 = require("../../time-utils.js");
|
|
44
45
|
function registerGenerateCommand(program, isDebugMode, handleError) {
|
|
45
46
|
program
|
|
46
47
|
.command('generate')
|
|
@@ -176,12 +177,17 @@ function registerGenerateCommand(program, isDebugMode, handleError) {
|
|
|
176
177
|
console.log('\n======================\n');
|
|
177
178
|
}
|
|
178
179
|
console.log('\n=== Starting Render ===\n');
|
|
180
|
+
// Track rendering duration
|
|
181
|
+
const renderStartTime = Date.now();
|
|
179
182
|
// Run FFmpeg
|
|
180
183
|
await (0, ffmpeg_js_1.runFFMpeg)(ffmpegCommand);
|
|
184
|
+
const renderEndTime = Date.now();
|
|
185
|
+
const renderingDuration = renderEndTime - renderStartTime;
|
|
181
186
|
const resultPath = output.path;
|
|
182
187
|
console.log(`\nā
Output file: ${resultPath}`);
|
|
183
|
-
const
|
|
184
|
-
console.log(
|
|
188
|
+
const videoDuration = await (0, ffprobe_js_1.getAssetDuration)(resultPath);
|
|
189
|
+
console.log(`š¹ Video duration: ${(0, time_utils_js_1.formatDuration)(videoDuration)}`);
|
|
190
|
+
console.log(`ā±ļø Rendering duration: ${(0, time_utils_js_1.formatDuration)(renderingDuration)}`);
|
|
185
191
|
}
|
|
186
192
|
// Clean up stale cache entries after all outputs are rendered
|
|
187
193
|
if (activeCacheKeys.size > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic credentials interface for upload services
|
|
3
|
+
*/
|
|
4
|
+
export interface Credentials {
|
|
5
|
+
[key: string]: any;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* S3-specific credentials format
|
|
9
|
+
*/
|
|
10
|
+
export interface S3Credentials extends Credentials {
|
|
11
|
+
accessKeyId: string;
|
|
12
|
+
secretAccessKey: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* YouTube-specific credentials format
|
|
16
|
+
*/
|
|
17
|
+
export interface YouTubeCredentials extends Credentials {
|
|
18
|
+
clientId: string;
|
|
19
|
+
clientSecret: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Instagram-specific credentials format
|
|
23
|
+
*/
|
|
24
|
+
export interface InstagramCredentials extends Credentials {
|
|
25
|
+
accessToken: string;
|
|
26
|
+
igUserId: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* AI Music API credentials format
|
|
30
|
+
*/
|
|
31
|
+
export interface MusicAPICredentials extends Credentials {
|
|
32
|
+
apiKey: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Credentials manager that handles loading credentials from local or global locations
|
|
36
|
+
*
|
|
37
|
+
* Search priority:
|
|
38
|
+
* 1. Local: <projectPath>/.auth/<credentialName>.json
|
|
39
|
+
* 2. Global: $HOME/.staticstripes/auth/<credentialName>.json
|
|
40
|
+
*/
|
|
41
|
+
export declare class CredentialsManager {
|
|
42
|
+
private projectPath;
|
|
43
|
+
private credentialName;
|
|
44
|
+
constructor(projectPath: string, credentialName: string);
|
|
45
|
+
/**
|
|
46
|
+
* Get the local credentials path
|
|
47
|
+
*/
|
|
48
|
+
private getLocalPath;
|
|
49
|
+
/**
|
|
50
|
+
* Get the global credentials path
|
|
51
|
+
* Works cross-platform (Windows, macOS, Linux)
|
|
52
|
+
*/
|
|
53
|
+
private getGlobalPath;
|
|
54
|
+
/**
|
|
55
|
+
* Find and return the credentials file path
|
|
56
|
+
* Returns the path and whether it was found locally or globally
|
|
57
|
+
*/
|
|
58
|
+
private findCredentialsPath;
|
|
59
|
+
/**
|
|
60
|
+
* Load credentials from local or global location
|
|
61
|
+
*
|
|
62
|
+
* @param requiredFields - Array of required field names to validate
|
|
63
|
+
* @returns The credentials object
|
|
64
|
+
* @throws Error if credentials not found or invalid
|
|
65
|
+
*/
|
|
66
|
+
load<T extends Credentials>(requiredFields?: string[]): T;
|
|
67
|
+
/**
|
|
68
|
+
* Check if credentials exist (locally or globally)
|
|
69
|
+
*/
|
|
70
|
+
exists(): boolean;
|
|
71
|
+
/**
|
|
72
|
+
* Get information about where credentials are stored
|
|
73
|
+
*/
|
|
74
|
+
getInfo(): {
|
|
75
|
+
localPath: string;
|
|
76
|
+
globalPath: string;
|
|
77
|
+
exists: boolean;
|
|
78
|
+
location?: 'local' | 'global';
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=credentials.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/cli/credentials.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,WAAW;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAS;gBAEnB,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;IAKvD;;OAEG;IACH,OAAO,CAAC,YAAY;IAKpB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAMrB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAc3B;;;;;;OAMG;IACH,IAAI,CAAC,CAAC,SAAS,WAAW,EAAE,cAAc,GAAE,MAAM,EAAO,GAAG,CAAC;IA6C7D;;OAEG;IACH,MAAM,IAAI,OAAO;IAIjB;;OAEG;IACH,OAAO,IAAI;QACT,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,OAAO,CAAC;QAChB,QAAQ,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;KAC/B;CASF"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CredentialsManager = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
const os_1 = require("os");
|
|
7
|
+
/**
|
|
8
|
+
* Credentials manager that handles loading credentials from local or global locations
|
|
9
|
+
*
|
|
10
|
+
* Search priority:
|
|
11
|
+
* 1. Local: <projectPath>/.auth/<credentialName>.json
|
|
12
|
+
* 2. Global: $HOME/.staticstripes/auth/<credentialName>.json
|
|
13
|
+
*/
|
|
14
|
+
class CredentialsManager {
|
|
15
|
+
projectPath;
|
|
16
|
+
credentialName;
|
|
17
|
+
constructor(projectPath, credentialName) {
|
|
18
|
+
this.projectPath = projectPath;
|
|
19
|
+
this.credentialName = credentialName;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Get the local credentials path
|
|
23
|
+
*/
|
|
24
|
+
getLocalPath() {
|
|
25
|
+
const authDir = (0, path_1.resolve)(this.projectPath, '.auth');
|
|
26
|
+
return (0, path_1.resolve)(authDir, `${this.credentialName}.json`);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Get the global credentials path
|
|
30
|
+
* Works cross-platform (Windows, macOS, Linux)
|
|
31
|
+
*/
|
|
32
|
+
getGlobalPath() {
|
|
33
|
+
const homeDir = (0, os_1.homedir)();
|
|
34
|
+
const globalAuthDir = (0, path_1.resolve)(homeDir, '.staticstripes', 'auth');
|
|
35
|
+
return (0, path_1.resolve)(globalAuthDir, `${this.credentialName}.json`);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Find and return the credentials file path
|
|
39
|
+
* Returns the path and whether it was found locally or globally
|
|
40
|
+
*/
|
|
41
|
+
findCredentialsPath() {
|
|
42
|
+
const localPath = this.getLocalPath();
|
|
43
|
+
if ((0, fs_1.existsSync)(localPath)) {
|
|
44
|
+
return { path: localPath, location: 'local' };
|
|
45
|
+
}
|
|
46
|
+
const globalPath = this.getGlobalPath();
|
|
47
|
+
if ((0, fs_1.existsSync)(globalPath)) {
|
|
48
|
+
return { path: globalPath, location: 'global' };
|
|
49
|
+
}
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Load credentials from local or global location
|
|
54
|
+
*
|
|
55
|
+
* @param requiredFields - Array of required field names to validate
|
|
56
|
+
* @returns The credentials object
|
|
57
|
+
* @throws Error if credentials not found or invalid
|
|
58
|
+
*/
|
|
59
|
+
load(requiredFields = []) {
|
|
60
|
+
const found = this.findCredentialsPath();
|
|
61
|
+
if (!found) {
|
|
62
|
+
const localPath = this.getLocalPath();
|
|
63
|
+
const globalPath = this.getGlobalPath();
|
|
64
|
+
throw new Error(`ā Error: Credentials not found for "${this.credentialName}"\n\n` +
|
|
65
|
+
`Searched in:\n` +
|
|
66
|
+
` 1. Local: ${localPath}\n` +
|
|
67
|
+
` 2. Global: ${globalPath}\n\n` +
|
|
68
|
+
`š” Create a JSON file in one of these locations with your credentials.\n` +
|
|
69
|
+
` The global location is useful for sharing credentials across projects.\n`);
|
|
70
|
+
}
|
|
71
|
+
const { path: credentialsPath, location } = found;
|
|
72
|
+
console.log(`š Loading credentials from ${location} storage: ${credentialsPath}`);
|
|
73
|
+
try {
|
|
74
|
+
const credentialsJson = (0, fs_1.readFileSync)(credentialsPath, 'utf-8');
|
|
75
|
+
const credentials = JSON.parse(credentialsJson);
|
|
76
|
+
// Validate required fields
|
|
77
|
+
const missingFields = requiredFields.filter((field) => !credentials[field]);
|
|
78
|
+
if (missingFields.length > 0) {
|
|
79
|
+
throw new Error(`Missing required fields: ${missingFields.join(', ')}`);
|
|
80
|
+
}
|
|
81
|
+
return credentials;
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
throw new Error(`ā Error: Failed to parse credentials from ${credentialsPath}\n` +
|
|
85
|
+
`Ensure the file contains valid JSON.\n` +
|
|
86
|
+
`Error: ${error instanceof Error ? error.message : String(error)}`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Check if credentials exist (locally or globally)
|
|
91
|
+
*/
|
|
92
|
+
exists() {
|
|
93
|
+
return this.findCredentialsPath() !== null;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Get information about where credentials are stored
|
|
97
|
+
*/
|
|
98
|
+
getInfo() {
|
|
99
|
+
const found = this.findCredentialsPath();
|
|
100
|
+
return {
|
|
101
|
+
localPath: this.getLocalPath(),
|
|
102
|
+
globalPath: this.getGlobalPath(),
|
|
103
|
+
exists: found !== null,
|
|
104
|
+
location: found?.location,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
exports.CredentialsManager = CredentialsManager;
|
|
109
|
+
//# sourceMappingURL=credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/cli/credentials.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { UploadStrategy } from '../upload-strategy';
|
|
2
2
|
import { Project } from '../../project';
|
|
3
3
|
import { Upload } from '../../type';
|
|
4
|
+
import { CredentialsManager } from '../credentials';
|
|
4
5
|
/**
|
|
5
6
|
* Instagram upload strategy implementation
|
|
6
7
|
* Uses Instagram Graph API to post Reels/Videos
|
|
7
8
|
*/
|
|
8
9
|
export declare class InstagramUploadStrategy implements UploadStrategy {
|
|
10
|
+
private credentialsManager?;
|
|
9
11
|
private readonly API_VERSION;
|
|
10
12
|
private readonly GRAPH_API_BASE;
|
|
11
|
-
constructor();
|
|
13
|
+
constructor(credentialsManager?: CredentialsManager | undefined);
|
|
12
14
|
getTag(): string;
|
|
13
15
|
validate(): void;
|
|
14
16
|
execute(project: Project, upload: Upload, projectPath: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instagram-upload-strategy.d.ts","sourceRoot":"","sources":["../../../src/cli/instagram/instagram-upload-strategy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"instagram-upload-strategy.d.ts","sourceRoot":"","sources":["../../../src/cli/instagram/instagram-upload-strategy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAGpC,OAAO,EAAE,kBAAkB,EAAwB,MAAM,gBAAgB,CAAC;AAE1E;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,cAAc;IAIhD,OAAO,CAAC,kBAAkB,CAAC;IAHvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAW;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiC;gBAE5C,kBAAkB,CAAC,EAAE,kBAAkB,YAAA;IAE3D,MAAM,IAAI,MAAM;IAIhB,QAAQ,IAAI,IAAI;IAIV,OAAO,CACX,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IA2HhB;;OAEG;YACW,oBAAoB;IAsDlC;;;OAGG;YACW,qBAAqB;IAiDnC;;OAEG;YACW,YAAY;IAgC1B;;OAEG;IACH,OAAO,CAAC,YAAY;IAcpB;;OAEG;IACH,OAAO,CAAC,cAAc;IAkCtB;;OAEG;IACH,OAAO,CAAC,OAAO;IAYf;;OAEG;YACW,YAAY;CA2B3B"}
|
|
@@ -4,18 +4,20 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.InstagramUploadStrategy = void 0;
|
|
7
|
-
const fs_1 = require("fs");
|
|
8
|
-
const path_1 = require("path");
|
|
9
7
|
const ejs_1 = __importDefault(require("ejs"));
|
|
10
8
|
const net_1 = require("../../lib/net");
|
|
9
|
+
const credentials_1 = require("../credentials");
|
|
11
10
|
/**
|
|
12
11
|
* Instagram upload strategy implementation
|
|
13
12
|
* Uses Instagram Graph API to post Reels/Videos
|
|
14
13
|
*/
|
|
15
14
|
class InstagramUploadStrategy {
|
|
15
|
+
credentialsManager;
|
|
16
16
|
API_VERSION = 'v21.0';
|
|
17
17
|
GRAPH_API_BASE = 'https://graph.instagram.com';
|
|
18
|
-
constructor() {
|
|
18
|
+
constructor(credentialsManager) {
|
|
19
|
+
this.credentialsManager = credentialsManager;
|
|
20
|
+
}
|
|
19
21
|
getTag() {
|
|
20
22
|
return 'instagram';
|
|
21
23
|
}
|
|
@@ -28,30 +30,29 @@ class InstagramUploadStrategy {
|
|
|
28
30
|
throw new Error(`ā Error: Instagram configuration missing for upload "${upload.name}"`);
|
|
29
31
|
}
|
|
30
32
|
const { caption, shareToFeed, thumbOffset, coverUrl, videoUrl } = upload.instagram;
|
|
31
|
-
// Load credentials from .auth/<upload-name>.json
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
if (!(0, fs_1.existsSync)(credentialsPath)) {
|
|
35
|
-
throw new Error(`ā Error: Instagram credentials not found\n\n` +
|
|
36
|
-
`Expected location: ${credentialsPath}\n\n` +
|
|
37
|
-
`š” Run authentication wizard:\n` +
|
|
38
|
-
` staticstripes auth --upload-name ${upload.name}\n\n` +
|
|
39
|
-
`š Or view detailed setup instructions:\n` +
|
|
40
|
-
` staticstripes auth-help instagram\n`);
|
|
41
|
-
}
|
|
42
|
-
console.log(`š Loading credentials from: ${credentialsPath}`);
|
|
33
|
+
// Load credentials from local .auth/<upload-name>.json or global ~/.staticstripes/auth/<upload-name>.json
|
|
34
|
+
const manager = this.credentialsManager ||
|
|
35
|
+
new credentials_1.CredentialsManager(projectPath, upload.name);
|
|
43
36
|
let credentials;
|
|
44
37
|
try {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}
|
|
38
|
+
credentials = manager.load([
|
|
39
|
+
'accessToken',
|
|
40
|
+
'igUserId',
|
|
41
|
+
]);
|
|
50
42
|
}
|
|
51
43
|
catch (error) {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
44
|
+
// Add helpful context about Instagram credentials
|
|
45
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
46
|
+
throw new Error(`${errorMessage}\n\n` +
|
|
47
|
+
`š” Instagram credentials file should contain:\n` +
|
|
48
|
+
`{\n` +
|
|
49
|
+
` "accessToken": "YOUR_LONG_LIVED_ACCESS_TOKEN",\n` +
|
|
50
|
+
` "igUserId": "YOUR_INSTAGRAM_USER_ID"\n` +
|
|
51
|
+
`}\n\n` +
|
|
52
|
+
`š Run authentication wizard:\n` +
|
|
53
|
+
` staticstripes auth --upload-name ${upload.name}\n\n` +
|
|
54
|
+
`Or view detailed setup instructions:\n` +
|
|
55
|
+
` staticstripes auth-help instagram\n`);
|
|
55
56
|
}
|
|
56
57
|
// Determine video URL
|
|
57
58
|
let publicVideoUrl;
|
|
@@ -76,12 +77,15 @@ class InstagramUploadStrategy {
|
|
|
76
77
|
}
|
|
77
78
|
// Determine title (use upload-specific title or fall back to project title)
|
|
78
79
|
const title = upload.title || project.getTitle();
|
|
80
|
+
// Get date from project
|
|
81
|
+
const date = project.getDate();
|
|
79
82
|
// Format tags with # and space-separated (Instagram style)
|
|
80
83
|
const formattedTags = upload.tags.map((tag) => `#${tag}`).join(' ');
|
|
81
84
|
// Convert ${variable} syntax to <%= variable %> for EJS compatibility
|
|
82
85
|
const ejsCaption = caption.replace(/\$\{(\w+)\}/g, '<%= $1 %>');
|
|
83
86
|
const processedCaption = ejs_1.default.render(ejsCaption, {
|
|
84
87
|
title,
|
|
88
|
+
date,
|
|
85
89
|
tags: formattedTags,
|
|
86
90
|
});
|
|
87
91
|
console.log(`\nšø Preparing Instagram Reel upload...`);
|
|
@@ -241,17 +245,24 @@ class InstagramUploadStrategy {
|
|
|
241
245
|
if (!s3Upload.s3) {
|
|
242
246
|
throw new Error('S3 configuration missing');
|
|
243
247
|
}
|
|
244
|
-
const { endpoint, region, bucket,
|
|
248
|
+
const { endpoint, region, bucket, paths } = s3Upload.s3;
|
|
245
249
|
const output = project.getOutput(s3Upload.outputName);
|
|
246
250
|
if (!output) {
|
|
247
251
|
throw new Error(`Output "${s3Upload.outputName}" not found`);
|
|
248
252
|
}
|
|
253
|
+
// Get the file path
|
|
254
|
+
const filePath = paths.get('file');
|
|
255
|
+
if (!filePath) {
|
|
256
|
+
throw new Error('S3 upload missing "file" path');
|
|
257
|
+
}
|
|
249
258
|
// Interpolate path variables
|
|
250
259
|
const slug = this.slugify(project.getTitle());
|
|
251
260
|
const outputName = output.name;
|
|
252
|
-
const
|
|
261
|
+
const date = project.getDate() || '';
|
|
262
|
+
const interpolatedPath = filePath
|
|
253
263
|
.replace(/\$\{slug\}/g, slug)
|
|
254
|
-
.replace(/\$\{output\}/g, outputName)
|
|
264
|
+
.replace(/\$\{output\}/g, outputName)
|
|
265
|
+
.replace(/\$\{date\}/g, date);
|
|
255
266
|
// Construct URL
|
|
256
267
|
if (endpoint) {
|
|
257
268
|
return `https://${bucket}.${region}.${endpoint}/${interpolatedPath}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instagram-upload-strategy.js","sourceRoot":"","sources":["../../../src/cli/instagram/instagram-upload-strategy.ts"],"names":[],"mappings":";;;;;;AAGA,
|
|
1
|
+
{"version":3,"file":"instagram-upload-strategy.js","sourceRoot":"","sources":["../../../src/cli/instagram/instagram-upload-strategy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { UploadStrategy } from '../upload-strategy';
|
|
2
2
|
import { Project } from '../../project';
|
|
3
3
|
import { Upload } from '../../type';
|
|
4
|
+
import { CredentialsManager } from '../credentials';
|
|
4
5
|
/**
|
|
5
6
|
* S3 upload strategy implementation
|
|
6
7
|
* Supports generic S3-compatible storage (AWS S3, DigitalOcean Spaces, etc.)
|
|
7
8
|
*/
|
|
8
9
|
export declare class S3UploadStrategy implements UploadStrategy {
|
|
9
|
-
|
|
10
|
+
private credentialsManager?;
|
|
11
|
+
constructor(credentialsManager?: CredentialsManager | undefined);
|
|
10
12
|
getTag(): string;
|
|
11
13
|
validate(): void;
|
|
12
14
|
execute(project: Project, upload: Upload, projectPath: string): Promise<void>;
|
|
@@ -14,5 +16,9 @@ export declare class S3UploadStrategy implements UploadStrategy {
|
|
|
14
16
|
* Converts a string to a URL-friendly slug
|
|
15
17
|
*/
|
|
16
18
|
private slugify;
|
|
19
|
+
/**
|
|
20
|
+
* Extracts a frame from video at specific timecode using ffmpeg
|
|
21
|
+
*/
|
|
22
|
+
private extractThumbnail;
|
|
17
23
|
}
|
|
18
24
|
//# sourceMappingURL=s3-upload-strategy.d.ts.map
|