@skillful-ai/piece-skai-gen-image 0.0.2 → 0.0.4
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/package.json +1 -1
- package/src/index.js +6 -0
- package/src/index.js.map +1 -1
- package/src/lib/actions/add-watermark.d.ts +15 -0
- package/src/lib/actions/add-watermark.js +134 -0
- package/src/lib/actions/add-watermark.js.map +1 -0
- package/src/lib/actions/generate-meme-from-template.js +12 -17
- package/src/lib/actions/generate-meme-from-template.js.map +1 -1
- package/src/lib/actions/generate-meme-with-ai.js +8 -13
- package/src/lib/actions/generate-meme-with-ai.js.map +1 -1
- package/src/lib/actions/get-trending-templates.d.ts +4 -1
- package/src/lib/actions/get-trending-templates.js +27 -5
- package/src/lib/actions/get-trending-templates.js.map +1 -1
- package/src/lib/actions/random-template.d.ts +8 -0
- package/src/lib/actions/random-template.js +96 -0
- package/src/lib/actions/random-template.js.map +1 -0
package/package.json
CHANGED
package/src/index.js
CHANGED
|
@@ -9,6 +9,9 @@ const generate_image_1 = require("./lib/actions/generate-image");
|
|
|
9
9
|
const get_trending_templates_1 = require("./lib/actions/get-trending-templates");
|
|
10
10
|
const generate_meme_from_template_1 = require("./lib/actions/generate-meme-from-template");
|
|
11
11
|
const generate_meme_with_ai_1 = require("./lib/actions/generate-meme-with-ai");
|
|
12
|
+
const random_template_1 = require("./lib/actions/random-template");
|
|
13
|
+
// Actions - Image Utilities
|
|
14
|
+
const add_watermark_1 = require("./lib/actions/add-watermark");
|
|
12
15
|
const markdownDescription = `
|
|
13
16
|
## SKAI Gen Image
|
|
14
17
|
|
|
@@ -67,10 +70,13 @@ exports.skaiGenImage = (0, pieces_framework_1.createPiece)({
|
|
|
67
70
|
actions: [
|
|
68
71
|
// Imgflip - Real Memes
|
|
69
72
|
get_trending_templates_1.getTrendingTemplates,
|
|
73
|
+
random_template_1.randomTemplate,
|
|
70
74
|
generate_meme_from_template_1.generateMemeFromTemplate,
|
|
71
75
|
generate_meme_with_ai_1.generateMemeWithAI,
|
|
72
76
|
// DALL-E - Original Images
|
|
73
77
|
generate_image_1.generateImage,
|
|
78
|
+
// Image Utilities
|
|
79
|
+
add_watermark_1.addWatermark,
|
|
74
80
|
],
|
|
75
81
|
triggers: [],
|
|
76
82
|
});
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/pieces/custom/skai-gen-image/src/index.ts"],"names":[],"mappings":";;;AAAA,qEAAkF;AAClF,iDAAqD;AAErD,mBAAmB;AACnB,iEAA6D;AAE7D,iCAAiC;AACjC,iFAA4E;AAC5E,2FAAqF;AACrF,+EAAyE;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/pieces/custom/skai-gen-image/src/index.ts"],"names":[],"mappings":";;;AAAA,qEAAkF;AAClF,iDAAqD;AAErD,mBAAmB;AACnB,iEAA6D;AAE7D,iCAAiC;AACjC,iFAA4E;AAC5E,2FAAqF;AACrF,+EAAyE;AACzE,mEAA+D;AAE/D,4BAA4B;AAC5B,+DAA2D;AAE3D,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CAyB3B,CAAC;AAEW,QAAA,gBAAgB,GAAG,4BAAS,CAAC,UAAU,CAAC;IACjD,WAAW,EAAE,mBAAmB;IAChC,QAAQ,EAAE,IAAI;IACd,KAAK,EAAE;QACH,YAAY,EAAE,4BAAS,CAAC,UAAU,CAAC;YAC/B,WAAW,EAAE,gBAAgB;YAC7B,WAAW,EAAE,4DAA4D;YACzE,QAAQ,EAAE,KAAK;SAClB,CAAC;QACF,eAAe,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAChC,WAAW,EAAE,kBAAkB;YAC/B,WAAW,EAAE,+BAA+B;YAC5C,QAAQ,EAAE,IAAI;SACjB,CAAC;QACF,eAAe,EAAE,4BAAS,CAAC,UAAU,CAAC;YAClC,WAAW,EAAE,kBAAkB;YAC/B,WAAW,EAAE,+BAA+B;YAC5C,QAAQ,EAAE,IAAI;SACjB,CAAC;KACL;CACJ,CAAC,CAAC;AAQU,QAAA,YAAY,GAAG,IAAA,8BAAW,EAAC;IACpC,WAAW,EAAE,gBAAgB;IAC7B,WAAW,EAAE,yCAAyC;IACtD,IAAI,EAAE,wBAAgB;IACtB,uBAAuB,EAAE,QAAQ;IACjC,OAAO,EAAE,+CAA+C;IACxD,OAAO,EAAE,CAAC,aAAa,CAAC;IACxB,UAAU,EAAE,CAAC,sBAAa,CAAC,uBAAuB,EAAE,sBAAa,CAAC,SAAS,CAAC;IAC5E,OAAO,EAAE;QACL,uBAAuB;QACvB,6CAAoB;QACpB,gCAAc;QACd,sDAAwB;QACxB,0CAAkB;QAClB,2BAA2B;QAC3B,8BAAa;QACb,kBAAkB;QAClB,4BAAY;KACf;IACD,QAAQ,EAAE,EAAE;CACf,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const addWatermark: import("@activepieces/pieces-framework").IAction<import("@activepieces/pieces-framework").CustomAuthProperty<{
|
|
2
|
+
openaiApiKey: import("@activepieces/pieces-framework").SecretTextProperty<false>;
|
|
3
|
+
imgflipUsername: import("@activepieces/pieces-framework").ShortTextProperty<true>;
|
|
4
|
+
imgflipPassword: import("@activepieces/pieces-framework").SecretTextProperty<true>;
|
|
5
|
+
}>, {
|
|
6
|
+
imageUrl: import("@activepieces/pieces-framework").ShortTextProperty<true>;
|
|
7
|
+
watermarkType: import("@activepieces/pieces-framework").StaticDropdownProperty<string, true>;
|
|
8
|
+
watermarkText: import("@activepieces/pieces-framework").ShortTextProperty<false>;
|
|
9
|
+
logoUrl: import("@activepieces/pieces-framework").ShortTextProperty<false>;
|
|
10
|
+
position: import("@activepieces/pieces-framework").StaticDropdownProperty<string, false>;
|
|
11
|
+
opacity: import("@activepieces/pieces-framework").NumberProperty<false>;
|
|
12
|
+
fontSize: import("@activepieces/pieces-framework").NumberProperty<false>;
|
|
13
|
+
textColor: import("@activepieces/pieces-framework").StaticDropdownProperty<string, false>;
|
|
14
|
+
logoSize: import("@activepieces/pieces-framework").NumberProperty<false>;
|
|
15
|
+
}>;
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.addWatermark = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const pieces_framework_1 = require("@activepieces/pieces-framework");
|
|
6
|
+
const index_1 = require("../../index");
|
|
7
|
+
// Cloudinary's fetch URL allows transformations on any public image without API keys
|
|
8
|
+
const CLOUDINARY_FETCH_BASE = 'https://res.cloudinary.com/demo/image/fetch';
|
|
9
|
+
exports.addWatermark = (0, pieces_framework_1.createAction)({
|
|
10
|
+
auth: index_1.skaiGenImageAuth,
|
|
11
|
+
name: 'add_watermark',
|
|
12
|
+
displayName: 'Add Watermark/Logo',
|
|
13
|
+
description: 'Add a text watermark or logo overlay to an image',
|
|
14
|
+
props: {
|
|
15
|
+
imageUrl: pieces_framework_1.Property.ShortText({
|
|
16
|
+
displayName: 'Image URL',
|
|
17
|
+
description: 'URL of the image to watermark',
|
|
18
|
+
required: true,
|
|
19
|
+
}),
|
|
20
|
+
watermarkType: pieces_framework_1.Property.StaticDropdown({
|
|
21
|
+
displayName: 'Watermark Type',
|
|
22
|
+
description: 'Choose between text watermark or image logo overlay',
|
|
23
|
+
required: true,
|
|
24
|
+
defaultValue: 'text',
|
|
25
|
+
options: {
|
|
26
|
+
options: [
|
|
27
|
+
{ label: 'Text Watermark', value: 'text' },
|
|
28
|
+
{ label: 'Image Logo', value: 'image' },
|
|
29
|
+
],
|
|
30
|
+
},
|
|
31
|
+
}),
|
|
32
|
+
watermarkText: pieces_framework_1.Property.ShortText({
|
|
33
|
+
displayName: 'Watermark Text',
|
|
34
|
+
description: 'Text to display as watermark (for text watermark type)',
|
|
35
|
+
required: false,
|
|
36
|
+
}),
|
|
37
|
+
logoUrl: pieces_framework_1.Property.ShortText({
|
|
38
|
+
displayName: 'Logo URL',
|
|
39
|
+
description: 'URL of logo image to overlay (for image logo type)',
|
|
40
|
+
required: false,
|
|
41
|
+
}),
|
|
42
|
+
position: pieces_framework_1.Property.StaticDropdown({
|
|
43
|
+
displayName: 'Position',
|
|
44
|
+
description: 'Where to place the watermark',
|
|
45
|
+
required: false,
|
|
46
|
+
defaultValue: 'south_east',
|
|
47
|
+
options: {
|
|
48
|
+
options: [
|
|
49
|
+
{ label: 'Bottom Right', value: 'south_east' },
|
|
50
|
+
{ label: 'Bottom Left', value: 'south_west' },
|
|
51
|
+
{ label: 'Top Right', value: 'north_east' },
|
|
52
|
+
{ label: 'Top Left', value: 'north_west' },
|
|
53
|
+
{ label: 'Center', value: 'center' },
|
|
54
|
+
{ label: 'Bottom Center', value: 'south' },
|
|
55
|
+
{ label: 'Top Center', value: 'north' },
|
|
56
|
+
],
|
|
57
|
+
},
|
|
58
|
+
}),
|
|
59
|
+
opacity: pieces_framework_1.Property.Number({
|
|
60
|
+
displayName: 'Opacity',
|
|
61
|
+
description: 'Watermark opacity (0-100, default: 70)',
|
|
62
|
+
required: false,
|
|
63
|
+
defaultValue: 70,
|
|
64
|
+
}),
|
|
65
|
+
fontSize: pieces_framework_1.Property.Number({
|
|
66
|
+
displayName: 'Font Size',
|
|
67
|
+
description: 'Text size for text watermark (default: 24)',
|
|
68
|
+
required: false,
|
|
69
|
+
defaultValue: 24,
|
|
70
|
+
}),
|
|
71
|
+
textColor: pieces_framework_1.Property.StaticDropdown({
|
|
72
|
+
displayName: 'Text Color',
|
|
73
|
+
description: 'Color for text watermark',
|
|
74
|
+
required: false,
|
|
75
|
+
defaultValue: 'white',
|
|
76
|
+
options: {
|
|
77
|
+
options: [
|
|
78
|
+
{ label: 'White', value: 'white' },
|
|
79
|
+
{ label: 'Black', value: 'black' },
|
|
80
|
+
{ label: 'Gray', value: 'gray' },
|
|
81
|
+
{ label: 'Red', value: 'red' },
|
|
82
|
+
{ label: 'Blue', value: 'blue' },
|
|
83
|
+
],
|
|
84
|
+
},
|
|
85
|
+
}),
|
|
86
|
+
logoSize: pieces_framework_1.Property.Number({
|
|
87
|
+
displayName: 'Logo Size',
|
|
88
|
+
description: 'Logo width in pixels (default: 100)',
|
|
89
|
+
required: false,
|
|
90
|
+
defaultValue: 100,
|
|
91
|
+
}),
|
|
92
|
+
},
|
|
93
|
+
run(context) {
|
|
94
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
95
|
+
const { imageUrl, watermarkType, watermarkText, logoUrl, position, opacity, fontSize, textColor, logoSize, } = context.propsValue;
|
|
96
|
+
// Validate inputs
|
|
97
|
+
if (watermarkType === 'text' && !watermarkText) {
|
|
98
|
+
throw new Error('Watermark text is required when using text watermark type');
|
|
99
|
+
}
|
|
100
|
+
if (watermarkType === 'image' && !logoUrl) {
|
|
101
|
+
throw new Error('Logo URL is required when using image logo type');
|
|
102
|
+
}
|
|
103
|
+
const opacityValue = Math.min(100, Math.max(0, opacity || 70));
|
|
104
|
+
const gravityPosition = position || 'south_east';
|
|
105
|
+
let transformation;
|
|
106
|
+
if (watermarkType === 'text') {
|
|
107
|
+
// Text watermark transformation
|
|
108
|
+
const fontSizeValue = fontSize || 24;
|
|
109
|
+
const colorValue = textColor || 'white';
|
|
110
|
+
// Encode text for URL (replace spaces with %20)
|
|
111
|
+
const encodedText = encodeURIComponent(watermarkText || '');
|
|
112
|
+
transformation = `l_text:Arial_${fontSizeValue}_bold:${encodedText},co_${colorValue},o_${opacityValue},g_${gravityPosition},x_10,y_10`;
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
// Image logo overlay transformation
|
|
116
|
+
const logoSizeValue = logoSize || 100;
|
|
117
|
+
// Encode logo URL for Cloudinary fetch
|
|
118
|
+
const encodedLogoUrl = encodeURIComponent(logoUrl || '');
|
|
119
|
+
transformation = `l_fetch:${Buffer.from(logoUrl || '').toString('base64')},w_${logoSizeValue},o_${opacityValue},g_${gravityPosition},x_10,y_10`;
|
|
120
|
+
}
|
|
121
|
+
// Build the final URL
|
|
122
|
+
const watermarkedUrl = `${CLOUDINARY_FETCH_BASE}/${transformation}/${encodeURIComponent(imageUrl)}`;
|
|
123
|
+
return {
|
|
124
|
+
success: true,
|
|
125
|
+
originalUrl: imageUrl,
|
|
126
|
+
watermarkedUrl: watermarkedUrl,
|
|
127
|
+
watermarkType: watermarkType,
|
|
128
|
+
position: gravityPosition,
|
|
129
|
+
opacity: opacityValue,
|
|
130
|
+
};
|
|
131
|
+
});
|
|
132
|
+
},
|
|
133
|
+
});
|
|
134
|
+
//# sourceMappingURL=add-watermark.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-watermark.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/custom/skai-gen-image/src/lib/actions/add-watermark.ts"],"names":[],"mappings":"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"}
|
|
@@ -63,34 +63,29 @@ exports.generateMemeFromTemplate = (0, pieces_framework_1.createAction)({
|
|
|
63
63
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
64
64
|
const { templateId, text0, text1, text2, text3, font, maxFontSize } = context.propsValue;
|
|
65
65
|
const auth = context.auth;
|
|
66
|
-
// Build
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
};
|
|
66
|
+
// Build form data using URLSearchParams
|
|
67
|
+
const params = new URLSearchParams();
|
|
68
|
+
params.append('template_id', templateId);
|
|
69
|
+
params.append('username', auth.imgflipUsername);
|
|
70
|
+
params.append('password', auth.imgflipPassword);
|
|
71
|
+
params.append('text0', text0);
|
|
73
72
|
if (text1)
|
|
74
|
-
|
|
73
|
+
params.append('text1', text1);
|
|
75
74
|
if (text2)
|
|
76
|
-
|
|
75
|
+
params.append('boxes[2][text]', text2);
|
|
77
76
|
if (text3)
|
|
78
|
-
|
|
77
|
+
params.append('boxes[3][text]', text3);
|
|
79
78
|
if (font)
|
|
80
|
-
|
|
79
|
+
params.append('font', font);
|
|
81
80
|
if (maxFontSize)
|
|
82
|
-
|
|
83
|
-
// Convert to URL-encoded form data
|
|
84
|
-
const body = Object.entries(formData)
|
|
85
|
-
.map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)
|
|
86
|
-
.join('&');
|
|
81
|
+
params.append('max_font_size', String(maxFontSize));
|
|
87
82
|
const response = yield pieces_common_1.httpClient.sendRequest({
|
|
88
83
|
method: pieces_common_1.HttpMethod.POST,
|
|
89
84
|
url: `${IMGFLIP_API_URL}/caption_image`,
|
|
90
85
|
headers: {
|
|
91
86
|
'Content-Type': 'application/x-www-form-urlencoded',
|
|
92
87
|
},
|
|
93
|
-
body,
|
|
88
|
+
body: params.toString(),
|
|
94
89
|
});
|
|
95
90
|
if (!response.body.success) {
|
|
96
91
|
throw new Error(`Failed to generate meme: ${response.body.error_message || 'Unknown error'}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-meme-from-template.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/custom/skai-gen-image/src/lib/actions/generate-meme-from-template.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AACxE,+DAAqE;AACrE,uCAAsE;AAEtE,MAAM,eAAe,GAAG,yBAAyB,CAAC;AAErC,QAAA,wBAAwB,GAAG,IAAA,+BAAY,EAAC;IACjD,IAAI,EAAE,wBAAgB;IACtB,IAAI,EAAE,6BAA6B;IACnC,WAAW,EAAE,6BAA6B;IAC1C,WAAW,EAAE,mFAAmF;IAChG,KAAK,EAAE;QACH,UAAU,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC3B,WAAW,EAAE,aAAa;YAC1B,WAAW,EAAE,iIAAiI;YAC9I,QAAQ,EAAE,IAAI;SACjB,CAAC;QACF,KAAK,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACtB,WAAW,EAAE,sBAAsB;YACnC,WAAW,EAAE,iCAAiC;YAC9C,QAAQ,EAAE,IAAI;SACjB,CAAC;QACF,KAAK,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACtB,WAAW,EAAE,0BAA0B;YACvC,WAAW,EAAE,qCAAqC;YAClD,QAAQ,EAAE,KAAK;SAClB,CAAC;QACF,KAAK,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACtB,WAAW,EAAE,gBAAgB;YAC7B,WAAW,EAAE,kDAAkD;YAC/D,QAAQ,EAAE,KAAK;SAClB,CAAC;QACF,KAAK,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACtB,WAAW,EAAE,iBAAiB;YAC9B,WAAW,EAAE,mDAAmD;YAChE,QAAQ,EAAE,KAAK;SAClB,CAAC;QACF,IAAI,EAAE,2BAAQ,CAAC,cAAc,CAAC;YAC1B,WAAW,EAAE,MAAM;YACnB,WAAW,EAAE,8BAA8B;YAC3C,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,QAAQ;YACtB,OAAO,EAAE;gBACL,OAAO,EAAE;oBACL,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,QAAQ,EAAE;oBACxD,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;oBAClC,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE;oBAClD,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;oBACpC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;iBAC7C;aACJ;SACJ,CAAC;QACF,WAAW,EAAE,2BAAQ,CAAC,MAAM,CAAC;YACzB,WAAW,EAAE,eAAe;YAC5B,WAAW,EAAE,2CAA2C;YACxD,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,EAAE;SACnB,CAAC;KACL;IACK,GAAG,CAAC,OAAO;;YACb,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;YACzF,MAAM,IAAI,GAAG,OAAO,CAAC,IAA6B,CAAC;YAEnD,
|
|
1
|
+
{"version":3,"file":"generate-meme-from-template.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/custom/skai-gen-image/src/lib/actions/generate-meme-from-template.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,27 +40,22 @@ exports.generateMemeWithAI = (0, pieces_framework_1.createAction)({
|
|
|
40
40
|
var _a, _b;
|
|
41
41
|
const { topic, model, prefixText } = context.propsValue;
|
|
42
42
|
const auth = context.auth;
|
|
43
|
-
// Build
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
};
|
|
43
|
+
// Build form data using URLSearchParams
|
|
44
|
+
const params = new URLSearchParams();
|
|
45
|
+
params.append('username', auth.imgflipUsername);
|
|
46
|
+
params.append('password', auth.imgflipPassword);
|
|
47
|
+
params.append('text', topic);
|
|
49
48
|
if (model)
|
|
50
|
-
|
|
49
|
+
params.append('model', model);
|
|
51
50
|
if (prefixText)
|
|
52
|
-
|
|
53
|
-
// Convert to URL-encoded form data
|
|
54
|
-
const body = Object.entries(formData)
|
|
55
|
-
.map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)
|
|
56
|
-
.join('&');
|
|
51
|
+
params.append('prefix_text', prefixText);
|
|
57
52
|
const response = yield pieces_common_1.httpClient.sendRequest({
|
|
58
53
|
method: pieces_common_1.HttpMethod.POST,
|
|
59
54
|
url: `${IMGFLIP_API_URL}/ai_meme`,
|
|
60
55
|
headers: {
|
|
61
56
|
'Content-Type': 'application/x-www-form-urlencoded',
|
|
62
57
|
},
|
|
63
|
-
body,
|
|
58
|
+
body: params.toString(),
|
|
64
59
|
});
|
|
65
60
|
if (!response.body.success) {
|
|
66
61
|
// Check if it's a premium required error
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-meme-with-ai.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/custom/skai-gen-image/src/lib/actions/generate-meme-with-ai.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AACxE,+DAAqE;AACrE,uCAAsE;AAEtE,MAAM,eAAe,GAAG,yBAAyB,CAAC;AAErC,QAAA,kBAAkB,GAAG,IAAA,+BAAY,EAAC;IAC3C,IAAI,EAAE,wBAAgB;IACtB,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EAAE,uBAAuB;IACpC,WAAW,EAAE,oGAAoG;IACjH,KAAK,EAAE;QACH,KAAK,EAAE,2BAAQ,CAAC,QAAQ,CAAC;YACrB,WAAW,EAAE,eAAe;YAC5B,WAAW,EAAE,oGAAoG;YACjH,QAAQ,EAAE,IAAI;SACjB,CAAC;QACF,KAAK,EAAE,2BAAQ,CAAC,cAAc,CAAC;YAC3B,WAAW,EAAE,UAAU;YACvB,WAAW,EAAE,8CAA8C;YAC3D,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,QAAQ;YACtB,OAAO,EAAE;gBACL,OAAO,EAAE;oBACL,EAAE,KAAK,EAAE,oCAAoC,EAAE,KAAK,EAAE,QAAQ,EAAE;oBAChE,EAAE,KAAK,EAAE,kCAAkC,EAAE,KAAK,EAAE,SAAS,EAAE;iBAClE;aACJ;SACJ,CAAC;QACF,UAAU,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC3B,WAAW,EAAE,aAAa;YAC1B,WAAW,EAAE,sEAAsE;YACnF,QAAQ,EAAE,KAAK;SAClB,CAAC;KACL;IACK,GAAG,CAAC,OAAO;;;YACb,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;YACxD,MAAM,IAAI,GAAG,OAAO,CAAC,IAA6B,CAAC;YAEnD,
|
|
1
|
+
{"version":3,"file":"generate-meme-with-ai.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/custom/skai-gen-image/src/lib/actions/generate-meme-with-ai.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,4 +2,7 @@ export declare const getTrendingTemplates: import("@activepieces/pieces-framewor
|
|
|
2
2
|
openaiApiKey: import("@activepieces/pieces-framework").SecretTextProperty<false>;
|
|
3
3
|
imgflipUsername: import("@activepieces/pieces-framework").ShortTextProperty<true>;
|
|
4
4
|
imgflipPassword: import("@activepieces/pieces-framework").SecretTextProperty<true>;
|
|
5
|
-
}>, {
|
|
5
|
+
}>, {
|
|
6
|
+
searchText: import("@activepieces/pieces-framework").ShortTextProperty<false>;
|
|
7
|
+
maxItems: import("@activepieces/pieces-framework").NumberProperty<false>;
|
|
8
|
+
}>;
|
|
@@ -34,9 +34,21 @@ exports.getTrendingTemplates = (0, pieces_framework_1.createAction)({
|
|
|
34
34
|
name: 'get_trending_templates',
|
|
35
35
|
displayName: 'Get Trending Meme Templates',
|
|
36
36
|
description: 'Get the most popular meme templates from Imgflip (Drake, Distracted Boyfriend, etc.)',
|
|
37
|
-
props: {
|
|
38
|
-
|
|
37
|
+
props: {
|
|
38
|
+
searchText: pieces_framework_1.Property.ShortText({
|
|
39
|
+
displayName: 'Search Text',
|
|
40
|
+
description: 'Filter templates by name (case-insensitive, partial match). E.g., "drake", "dog", "button"',
|
|
41
|
+
required: false,
|
|
42
|
+
}),
|
|
43
|
+
maxItems: pieces_framework_1.Property.Number({
|
|
44
|
+
displayName: 'Max Items',
|
|
45
|
+
description: 'Maximum number of templates to retrieve (default: all available)',
|
|
46
|
+
required: false,
|
|
47
|
+
}),
|
|
48
|
+
},
|
|
49
|
+
run(context) {
|
|
39
50
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
51
|
+
const { searchText, maxItems } = context.propsValue;
|
|
40
52
|
const response = yield pieces_common_1.httpClient.sendRequest({
|
|
41
53
|
method: pieces_common_1.HttpMethod.GET,
|
|
42
54
|
url: `${IMGFLIP_API_URL}/get_memes`,
|
|
@@ -46,7 +58,7 @@ exports.getTrendingTemplates = (0, pieces_framework_1.createAction)({
|
|
|
46
58
|
}
|
|
47
59
|
const memes = response.body.data.memes;
|
|
48
60
|
// Enrich templates with descriptions
|
|
49
|
-
|
|
61
|
+
let enrichedMemes = memes.map((meme) => ({
|
|
50
62
|
id: meme.id,
|
|
51
63
|
name: meme.name,
|
|
52
64
|
url: meme.url,
|
|
@@ -55,12 +67,22 @@ exports.getTrendingTemplates = (0, pieces_framework_1.createAction)({
|
|
|
55
67
|
boxCount: meme.box_count,
|
|
56
68
|
description: TEMPLATE_DESCRIPTIONS[meme.id] || `${meme.name} - ${meme.box_count} text boxes`,
|
|
57
69
|
}));
|
|
70
|
+
// Apply search filter if specified (case-insensitive partial match)
|
|
71
|
+
if (searchText && searchText.trim()) {
|
|
72
|
+
const searchLower = searchText.toLowerCase().trim();
|
|
73
|
+
enrichedMemes = enrichedMemes.filter((meme) => meme.name.toLowerCase().includes(searchLower) ||
|
|
74
|
+
meme.description.toLowerCase().includes(searchLower));
|
|
75
|
+
}
|
|
76
|
+
// Apply maxItems limit if specified
|
|
77
|
+
if (maxItems && maxItems > 0) {
|
|
78
|
+
enrichedMemes = enrichedMemes.slice(0, maxItems);
|
|
79
|
+
}
|
|
58
80
|
return {
|
|
59
81
|
success: true,
|
|
60
82
|
templates: enrichedMemes,
|
|
61
83
|
totalCount: enrichedMemes.length,
|
|
62
|
-
// Top
|
|
63
|
-
topTemplates: enrichedMemes.slice(0, 20).map((m) => ({
|
|
84
|
+
// Top templates for quick reference (up to 20 or maxItems if smaller)
|
|
85
|
+
topTemplates: enrichedMemes.slice(0, Math.min(20, enrichedMemes.length)).map((m) => ({
|
|
64
86
|
id: m.id,
|
|
65
87
|
name: m.name,
|
|
66
88
|
description: m.description,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-trending-templates.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/custom/skai-gen-image/src/lib/actions/get-trending-templates.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"get-trending-templates.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/custom/skai-gen-image/src/lib/actions/get-trending-templates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const randomTemplate: import("@activepieces/pieces-framework").IAction<import("@activepieces/pieces-framework").CustomAuthProperty<{
|
|
2
|
+
openaiApiKey: import("@activepieces/pieces-framework").SecretTextProperty<false>;
|
|
3
|
+
imgflipUsername: import("@activepieces/pieces-framework").ShortTextProperty<true>;
|
|
4
|
+
imgflipPassword: import("@activepieces/pieces-framework").SecretTextProperty<true>;
|
|
5
|
+
}>, {
|
|
6
|
+
searchText: import("@activepieces/pieces-framework").ShortTextProperty<false>;
|
|
7
|
+
topOnly: import("@activepieces/pieces-framework").CheckboxProperty<false>;
|
|
8
|
+
}>;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.randomTemplate = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const pieces_framework_1 = require("@activepieces/pieces-framework");
|
|
6
|
+
const pieces_common_1 = require("@activepieces/pieces-common");
|
|
7
|
+
const index_1 = require("../../index");
|
|
8
|
+
const IMGFLIP_API_URL = 'https://api.imgflip.com';
|
|
9
|
+
// Popular meme templates with descriptions
|
|
10
|
+
const TEMPLATE_DESCRIPTIONS = {
|
|
11
|
+
'181913649': 'Drake Hotline Bling - Two panel, top shows rejection/dislike, bottom shows approval/preference',
|
|
12
|
+
'87743020': 'Two Buttons - Person sweating while choosing between two difficult options',
|
|
13
|
+
'112126428': 'Distracted Boyfriend - Person looking at something new while partner looks disapprovingly',
|
|
14
|
+
'131087935': 'Running Away Balloon - Person chasing after something while ignoring what they have',
|
|
15
|
+
'97984': 'Disaster Girl - Girl smiling deviously in front of burning house',
|
|
16
|
+
'438680': 'Batman Slapping Robin - Batman slapping Robin mid-sentence to correct him',
|
|
17
|
+
'61579': 'One Does Not Simply - Boromir explaining something is not easy',
|
|
18
|
+
'101470': 'Ancient Aliens - Guy suggesting aliens as explanation',
|
|
19
|
+
'61532': 'The Rock Driving - Rock driving car, reaction to something said',
|
|
20
|
+
'91538330': 'X X Everywhere - Buzz Lightyear showing Woody something is everywhere',
|
|
21
|
+
'124822590': 'Left Exit 12 Off Ramp - Car swerving to take exit at last moment',
|
|
22
|
+
'217743513': 'UNO Draw 25 - Choice between doing something or drawing 25 cards',
|
|
23
|
+
'252600902': 'Always Has Been - Two astronauts, one realizing truth, other says always has been',
|
|
24
|
+
'188390779': 'Woman Yelling at Cat - Woman yelling at confused cat at dinner table',
|
|
25
|
+
'119139145': 'Blank Nut Button - Person eagerly pressing a button',
|
|
26
|
+
'135256802': 'Epic Handshake - Two arms meeting in agreement on common ground',
|
|
27
|
+
'129242436': 'Change My Mind - Person at table challenging others to change their mind',
|
|
28
|
+
'222403160': 'Bernie I Am Once Again Asking - Bernie Sanders asking for something',
|
|
29
|
+
'247375501': 'Buff Doge vs Cheems - Strong dog vs weak dog comparison',
|
|
30
|
+
'259237855': 'Laughing Leo - Leonardo DiCaprio laughing and pointing',
|
|
31
|
+
};
|
|
32
|
+
exports.randomTemplate = (0, pieces_framework_1.createAction)({
|
|
33
|
+
auth: index_1.skaiGenImageAuth,
|
|
34
|
+
name: 'random_template',
|
|
35
|
+
displayName: 'Random Template Picker',
|
|
36
|
+
description: 'Get a random meme template, optionally filtered by search text',
|
|
37
|
+
props: {
|
|
38
|
+
searchText: pieces_framework_1.Property.ShortText({
|
|
39
|
+
displayName: 'Search Text (Optional)',
|
|
40
|
+
description: 'Filter templates before picking random. E.g., "dog", "button", "choice"',
|
|
41
|
+
required: false,
|
|
42
|
+
}),
|
|
43
|
+
topOnly: pieces_framework_1.Property.Checkbox({
|
|
44
|
+
displayName: 'Top Templates Only',
|
|
45
|
+
description: 'Only pick from top 50 most popular templates',
|
|
46
|
+
required: false,
|
|
47
|
+
defaultValue: true,
|
|
48
|
+
}),
|
|
49
|
+
},
|
|
50
|
+
run(context) {
|
|
51
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
52
|
+
const { searchText, topOnly } = context.propsValue;
|
|
53
|
+
const response = yield pieces_common_1.httpClient.sendRequest({
|
|
54
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
55
|
+
url: `${IMGFLIP_API_URL}/get_memes`,
|
|
56
|
+
});
|
|
57
|
+
if (!response.body.success) {
|
|
58
|
+
throw new Error(`Failed to get meme templates: ${response.body.error_message || 'Unknown error'}`);
|
|
59
|
+
}
|
|
60
|
+
let memes = response.body.data.memes;
|
|
61
|
+
// Limit to top 50 if requested
|
|
62
|
+
if (topOnly) {
|
|
63
|
+
memes = memes.slice(0, 50);
|
|
64
|
+
}
|
|
65
|
+
// Enrich with descriptions
|
|
66
|
+
let enrichedMemes = memes.map((meme) => ({
|
|
67
|
+
id: meme.id,
|
|
68
|
+
name: meme.name,
|
|
69
|
+
url: meme.url,
|
|
70
|
+
width: meme.width,
|
|
71
|
+
height: meme.height,
|
|
72
|
+
boxCount: meme.box_count,
|
|
73
|
+
description: TEMPLATE_DESCRIPTIONS[meme.id] || `${meme.name} - ${meme.box_count} text boxes`,
|
|
74
|
+
}));
|
|
75
|
+
// Apply search filter if specified
|
|
76
|
+
if (searchText && searchText.trim()) {
|
|
77
|
+
const searchLower = searchText.toLowerCase().trim();
|
|
78
|
+
enrichedMemes = enrichedMemes.filter((meme) => meme.name.toLowerCase().includes(searchLower) ||
|
|
79
|
+
meme.description.toLowerCase().includes(searchLower));
|
|
80
|
+
}
|
|
81
|
+
if (enrichedMemes.length === 0) {
|
|
82
|
+
throw new Error(`No templates found${searchText ? ` matching "${searchText}"` : ''}`);
|
|
83
|
+
}
|
|
84
|
+
// Pick a random template
|
|
85
|
+
const randomIndex = Math.floor(Math.random() * enrichedMemes.length);
|
|
86
|
+
const selectedTemplate = enrichedMemes[randomIndex];
|
|
87
|
+
return {
|
|
88
|
+
success: true,
|
|
89
|
+
template: selectedTemplate,
|
|
90
|
+
poolSize: enrichedMemes.length,
|
|
91
|
+
message: `Randomly selected "${selectedTemplate.name}" from ${enrichedMemes.length} templates`,
|
|
92
|
+
};
|
|
93
|
+
});
|
|
94
|
+
},
|
|
95
|
+
});
|
|
96
|
+
//# sourceMappingURL=random-template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"random-template.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/custom/skai-gen-image/src/lib/actions/random-template.ts"],"names":[],"mappings":"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"}
|