From 55905704a60c393a88ef9d033605eb505b879ef9 Mon Sep 17 00:00:00 2001 From: Anatoly Date: Sun, 23 Jan 2022 02:22:11 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=B3=D1=80=D0=B5=D1=81=D1=81=20=D0=B1=D0=B0?= =?UTF-8?q?=D1=80=20=D0=B8=20=D0=B2=D1=8B=D0=B2=D0=B5=D0=BB=20id=20=D0=B2?= =?UTF-8?q?=20cli=20args?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 25 +++++++++++++++++++++---- getImages.js | 17 ++++++++++++++++- index.js | 4 +++- package-lock.json | 14 ++++++++++++++ package.json | 7 ++++--- 5 files changed, 58 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 6bbb26d..d19d330 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,24 @@ *Инструмент для создания коллекции NFT из постов сообщества или пользователя Вконтакте* -Использование: -1. Получить [сервисный ключ доступа]() и поместить его в .env файл. -2. `npm i` -3. `node index.js` +## Использование: + +**1. Получить [сервисный ключ доступа]() и поместить его в .env файл.** + +**2. Установить зависимости** +``` +$ npm i +``` + +**3. Запустить** +``` +$ node index.js [id] +``` +где `id` это `id` пользователя Вконтакте, или `id` +сообщества. Если используется `id` сообщества, то +необходимо добавить перед ним `-`. +Например, чтобы создать коллекцию NFT из постов группы +"ВКонтакте API" (id 1) используем команду: +``` +$ node index.js -1 +``` diff --git a/getImages.js b/getImages.js index 66ba008..a4b8e5e 100644 --- a/getImages.js +++ b/getImages.js @@ -1,3 +1,4 @@ +import ProgressBar from 'progress'; import getPosts from './getPosts.js'; import post2Svg from './post2Svg.js'; @@ -19,11 +20,25 @@ async function getAllPosts(owner_id) { let finished = false; let offset = 0; let posts = []; + let bar; while (!finished) { 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); - if (posts.length === response.count) { + if (posts.length === total) { finished = true; } else { offset += response.items.length; diff --git a/index.js b/index.js index 61378de..a0209da 100644 --- a/index.js +++ b/index.js @@ -4,11 +4,13 @@ dotenv.config(); import Rareterm from 'rareterm.node'; import getImages from './getImages.js'; +const entity = process.argv[2]; + (async () => { const rarepress = new Rareterm(); 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 token = await rarepress.token.create({ type: "ERC721", diff --git a/package-lock.json b/package-lock.json index 51f9e83..2259b4d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "@svgdotjs/svg.js": "^3.1.1", "axios": "^0.25.0", "dotenv": "^14.2.0", + "progress": "^2.0.3", "rareterm.node": "^0.0.10", "svgdom": "^0.1.10" } @@ -2027,6 +2028,14 @@ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "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": { "version": "6.0.2", "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", "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": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", diff --git a/package.json b/package.json index ecbd9f0..460ae24 100644 --- a/package.json +++ b/package.json @@ -1,18 +1,19 @@ { "name": "vk-wall-nft-collection", "version": "1.0.0", - "description": "", + "description": "A tool for minting an NFT collection from vkontakte feed", "main": "index.js", "type": "module", "scripts": { "start": "node index.js" }, - "author": "", - "license": "ISC", + "author": "Anatoly Kopyl", + "license": "GPL-3.0", "dependencies": { "@svgdotjs/svg.js": "^3.1.1", "axios": "^0.25.0", "dotenv": "^14.2.0", + "progress": "^2.0.3", "rareterm.node": "^0.0.10", "svgdom": "^0.1.10" }