mirror of
https://github.com/anatolykopyl/vk-nft-feed.git
synced 2026-03-26 12:54:33 +00:00
Добавил прогресс бар и вывел id в cli args
This commit is contained in:
25
README.md
25
README.md
@@ -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
|
||||||
|
```
|
||||||
|
|||||||
17
getImages.js
17
getImages.js
@@ -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;
|
||||||
|
|||||||
4
index.js
4
index.js
@@ -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
14
package-lock.json
generated
@@ -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",
|
||||||
|
|||||||
@@ -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"
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user