open-nami 1.2.9 → 1.3.1
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.js +67 -26
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -9,7 +9,7 @@ var require_package = __commonJS({
|
|
|
9
9
|
"package.json"(exports, module) {
|
|
10
10
|
module.exports = {
|
|
11
11
|
name: "open-nami",
|
|
12
|
-
version: "1.
|
|
12
|
+
version: "1.3.1",
|
|
13
13
|
description: "Open Nami: terminal-first bulk social media profile downloader for Instagram, TikTok, Facebook & X.",
|
|
14
14
|
type: "module",
|
|
15
15
|
bin: {
|
|
@@ -4371,29 +4371,52 @@ async function dispatchDownload(options) {
|
|
|
4371
4371
|
import { jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
4372
4372
|
function ChoiceIndicator({ isSelected }) {
|
|
4373
4373
|
const theme = useTheme();
|
|
4374
|
-
return /* @__PURE__ */
|
|
4374
|
+
return /* @__PURE__ */ jsxs6(Box6, { children: [
|
|
4375
|
+
/* @__PURE__ */ jsx8(Text7, { color: theme.primary, children: "\u258E " }),
|
|
4376
|
+
/* @__PURE__ */ jsx8(Text7, { color: theme.primary, bold: true, children: isSelected ? "\u276F " : " " })
|
|
4377
|
+
] });
|
|
4375
4378
|
}
|
|
4376
|
-
function ChoiceItem({
|
|
4379
|
+
function ChoiceItem({
|
|
4380
|
+
isSelected,
|
|
4381
|
+
label,
|
|
4382
|
+
value,
|
|
4383
|
+
description
|
|
4384
|
+
}) {
|
|
4377
4385
|
const theme = useTheme();
|
|
4378
|
-
|
|
4386
|
+
const rawTag = `[${value === "all" ? "EVERYTHING" : String(value || label).toUpperCase()}]`;
|
|
4387
|
+
const paddedTag = rawTag.padEnd(12, " ");
|
|
4388
|
+
return /* @__PURE__ */ jsxs6(Box6, { children: [
|
|
4389
|
+
/* @__PURE__ */ jsx8(
|
|
4390
|
+
Text7,
|
|
4391
|
+
{
|
|
4392
|
+
color: isSelected ? theme.background : theme.primary,
|
|
4393
|
+
backgroundColor: isSelected ? theme.primary : void 0,
|
|
4394
|
+
bold: isSelected,
|
|
4395
|
+
children: paddedTag
|
|
4396
|
+
}
|
|
4397
|
+
),
|
|
4398
|
+
/* @__PURE__ */ jsx8(Text7, { color: theme.gray, children: " " }),
|
|
4399
|
+
/* @__PURE__ */ jsx8(Text7, { color: isSelected ? theme.primary : theme.gray, dimColor: !isSelected, bold: isSelected, children: description || label })
|
|
4400
|
+
] });
|
|
4379
4401
|
}
|
|
4380
4402
|
function getPickingOptions(platform) {
|
|
4381
4403
|
const items = [
|
|
4382
|
-
{ label: "Photos", value: "photos" },
|
|
4383
|
-
{ label: "Videos", value: "videos" }
|
|
4404
|
+
{ label: "Photos", value: "photos", description: "Feed images and carousels" },
|
|
4405
|
+
{ label: "Videos", value: "videos", description: "Reels and timeline clips" }
|
|
4384
4406
|
];
|
|
4385
4407
|
if (platform === "instagram") {
|
|
4386
|
-
items.push({ label: "Stories", value: "stories" });
|
|
4387
|
-
items.push({ label: "Highlights", value: "highlights" });
|
|
4408
|
+
items.push({ label: "Stories", value: "stories", description: "Active 24h stories" });
|
|
4409
|
+
items.push({ label: "Highlights", value: "highlights", description: "Saved story archive reels" });
|
|
4388
4410
|
}
|
|
4389
4411
|
items.push({
|
|
4390
4412
|
label: "Everything",
|
|
4391
|
-
value: "all"
|
|
4413
|
+
value: "all",
|
|
4414
|
+
description: "Complete profile download"
|
|
4392
4415
|
});
|
|
4393
4416
|
return items;
|
|
4394
4417
|
}
|
|
4395
4418
|
function PickingView({
|
|
4396
|
-
contentWidth
|
|
4419
|
+
contentWidth,
|
|
4397
4420
|
profile,
|
|
4398
4421
|
outputDir,
|
|
4399
4422
|
initialLimit,
|
|
@@ -4432,6 +4455,7 @@ function PickingView({
|
|
|
4432
4455
|
resume: initialResume
|
|
4433
4456
|
});
|
|
4434
4457
|
};
|
|
4458
|
+
const boxWidth = Math.min(48, Math.max(44, (contentWidth || 80) - 8));
|
|
4435
4459
|
return /* @__PURE__ */ jsxs6(Box6, { flexDirection: "column", alignItems: "center", width: "100%", children: [
|
|
4436
4460
|
/* @__PURE__ */ jsxs6(Box6, { flexDirection: "column", alignItems: "center", marginBottom: 1, children: [
|
|
4437
4461
|
/* @__PURE__ */ jsxs6(Text7, { bold: true, color: theme.primary, children: [
|
|
@@ -4445,23 +4469,29 @@ function PickingView({
|
|
|
4445
4469
|
profile.cleanUrl ? ` \xB7 ${profile.cleanUrl}` : ""
|
|
4446
4470
|
] }),
|
|
4447
4471
|
/* @__PURE__ */ jsx8(Gap2, {}),
|
|
4448
|
-
/* @__PURE__ */ jsx8(Text7, { color: theme.gray, dimColor: theme.dimSecondary, children: "Select
|
|
4449
|
-
hasCheckpoint ? /* @__PURE__ */ jsx8(Box6, { marginTop: 1, children: /* @__PURE__ */ jsx8(Text7, { color: theme.primary, bold: true, children: "\u26A1 Checkpoint found (cursor saved)" }) }) : null
|
|
4472
|
+
/* @__PURE__ */ jsx8(Text7, { color: theme.gray, dimColor: theme.dimSecondary, children: "Select target media:" })
|
|
4450
4473
|
] }),
|
|
4451
|
-
/* @__PURE__ */
|
|
4452
|
-
|
|
4453
|
-
|
|
4454
|
-
|
|
4455
|
-
|
|
4456
|
-
|
|
4457
|
-
|
|
4458
|
-
|
|
4459
|
-
|
|
4460
|
-
|
|
4461
|
-
|
|
4462
|
-
|
|
4463
|
-
|
|
4464
|
-
|
|
4474
|
+
/* @__PURE__ */ jsxs6(Box6, { flexDirection: "column", width: boxWidth, children: [
|
|
4475
|
+
/* @__PURE__ */ jsx8(
|
|
4476
|
+
SelectInput,
|
|
4477
|
+
{
|
|
4478
|
+
indicatorComponent: ChoiceIndicator,
|
|
4479
|
+
itemComponent: ChoiceItem,
|
|
4480
|
+
items: items.map((item, index) => ({
|
|
4481
|
+
key: String(index),
|
|
4482
|
+
label: item.label,
|
|
4483
|
+
value: item.value,
|
|
4484
|
+
description: item.description
|
|
4485
|
+
})),
|
|
4486
|
+
onSelect: (item) => handleItemSelect(item.value),
|
|
4487
|
+
onHighlight: (item) => onHighlight?.(item.value)
|
|
4488
|
+
}
|
|
4489
|
+
),
|
|
4490
|
+
hasCheckpoint ? /* @__PURE__ */ jsxs6(Box6, { marginTop: 1, children: [
|
|
4491
|
+
/* @__PURE__ */ jsx8(Text7, { color: theme.primary, children: "\u258E " }),
|
|
4492
|
+
/* @__PURE__ */ jsx8(Text7, { color: theme.primary, bold: true, children: "\u26A1 Checkpoint found (cursor saved)" })
|
|
4493
|
+
] }) : null
|
|
4494
|
+
] })
|
|
4465
4495
|
] });
|
|
4466
4496
|
}
|
|
4467
4497
|
|
|
@@ -7001,6 +7031,17 @@ function InnerApp({
|
|
|
7001
7031
|
match: item.label,
|
|
7002
7032
|
action: () => handleModeSelect(item.value, phase.profile)
|
|
7003
7033
|
});
|
|
7034
|
+
const tag = `[${item.value === "all" ? "EVERYTHING" : item.value.toUpperCase()}]`;
|
|
7035
|
+
targets.push({
|
|
7036
|
+
match: tag,
|
|
7037
|
+
action: () => handleModeSelect(item.value, phase.profile)
|
|
7038
|
+
});
|
|
7039
|
+
if (item.description) {
|
|
7040
|
+
targets.push({
|
|
7041
|
+
match: item.description,
|
|
7042
|
+
action: () => handleModeSelect(item.value, phase.profile)
|
|
7043
|
+
});
|
|
7044
|
+
}
|
|
7004
7045
|
}
|
|
7005
7046
|
}
|
|
7006
7047
|
if (phase.name === "done") {
|