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