Добавил прогресс бар и вывел id в cli args

This commit is contained in:
2022-01-23 02:22:11 +03:00
parent 7f4c9bcd79
commit 55905704a6
5 changed files with 58 additions and 9 deletions

View File

@@ -3,7 +3,24 @@
*Инструмент для создания коллекции NFT из постов сообщества или пользователя Вконтакте* *Инструмент для создания коллекции NFT из постов сообщества или пользователя Вконтакте*
Использование: ## Использование:
1. Получить [сервисный ключ доступа]() и поместить его в .env файл.
2. `npm i` **1. Получить [сервисный ключ доступа]() и поместить его в .env файл.**
3. `node index.js`
**2. Установить зависимости**
```
$ npm i
```
**3. Запустить**
```
$ node index.js [id]
```
где `id` это `id` пользователя Вконтакте, или `id`
сообщества. Если используется `id` сообщества, то
необходимо добавить перед ним `-`.
Например, чтобы создать коллекцию NFT из постов группы
"ВКонтакте API" (id 1) используем команду:
```
$ node index.js -1
```

View File

@@ -1,3 +1,4 @@
import ProgressBar from 'progress';
import getPosts from './getPosts.js'; import getPosts from './getPosts.js';
import post2Svg from './post2Svg.js'; import post2Svg from './post2Svg.js';
@@ -19,11 +20,25 @@ async function getAllPosts(owner_id) {
let finished = false; let finished = false;
let offset = 0; let offset = 0;
let posts = []; let posts = [];
let bar;
while (!finished) { while (!finished) {
const response = await getPosts(owner_id, offset); const response = await getPosts(owner_id, offset);
const total = response.count;
if (!bar) {
bar = new ProgressBar(
'Getting posts [:bar] :current/:total :percent',
{
total,
width: 30,
}
);
}
bar.tick(response.items.length);
posts = posts.concat(response.items); posts = posts.concat(response.items);
if (posts.length === response.count) { if (posts.length === total) {
finished = true; finished = true;
} else { } else {
offset += response.items.length; offset += response.items.length;

View File

@@ -4,11 +4,13 @@ dotenv.config();
import Rareterm from 'rareterm.node'; import Rareterm from 'rareterm.node';
import getImages from './getImages.js'; import getImages from './getImages.js';
const entity = process.argv[2];
(async () => { (async () => {
const rarepress = new Rareterm(); const rarepress = new Rareterm();
await rarepress.init({ host: "https://rinkeby-beta.rarepress.org/v1" }); await rarepress.init({ host: "https://rinkeby-beta.rarepress.org/v1" });
(await getImages(-1)).forEach(async (image, index) => { (await getImages(entity)).forEach(async (image, index) => {
const cid = await rarepress.fs.add(Buffer.from(image)); const cid = await rarepress.fs.add(Buffer.from(image));
const token = await rarepress.token.create({ const token = await rarepress.token.create({
type: "ERC721", type: "ERC721",

14
package-lock.json generated
View File

@@ -11,6 +11,7 @@
"@svgdotjs/svg.js": "^3.1.1", "@svgdotjs/svg.js": "^3.1.1",
"axios": "^0.25.0", "axios": "^0.25.0",
"dotenv": "^14.2.0", "dotenv": "^14.2.0",
"progress": "^2.0.3",
"rareterm.node": "^0.0.10", "rareterm.node": "^0.0.10",
"svgdom": "^0.1.10" "svgdom": "^0.1.10"
} }
@@ -2027,6 +2028,14 @@
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
}, },
"node_modules/progress": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
"integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
"engines": {
"node": ">=0.4.0"
}
},
"node_modules/queue": { "node_modules/queue": {
"version": "6.0.2", "version": "6.0.2",
"resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz",
@@ -4478,6 +4487,11 @@
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
}, },
"progress": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
"integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA=="
},
"queue": { "queue": {
"version": "6.0.2", "version": "6.0.2",
"resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz",

View File

@@ -1,18 +1,19 @@
{ {
"name": "vk-wall-nft-collection", "name": "vk-wall-nft-collection",
"version": "1.0.0", "version": "1.0.0",
"description": "", "description": "A tool for minting an NFT collection from vkontakte feed",
"main": "index.js", "main": "index.js",
"type": "module", "type": "module",
"scripts": { "scripts": {
"start": "node index.js" "start": "node index.js"
}, },
"author": "", "author": "Anatoly Kopyl",
"license": "ISC", "license": "GPL-3.0",
"dependencies": { "dependencies": {
"@svgdotjs/svg.js": "^3.1.1", "@svgdotjs/svg.js": "^3.1.1",
"axios": "^0.25.0", "axios": "^0.25.0",
"dotenv": "^14.2.0", "dotenv": "^14.2.0",
"progress": "^2.0.3",
"rareterm.node": "^0.0.10", "rareterm.node": "^0.0.10",
"svgdom": "^0.1.10" "svgdom": "^0.1.10"
} }