itd-sdk-js 1.0.0 → 1.0.2

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/API_REFERENCE.md CHANGED
@@ -2,6 +2,20 @@
2
2
 
3
3
  Техническое руководство по методам и настройке библиотеки для работы с API сайта `итд.com`.
4
4
 
5
+ ## Установка
6
+
7
+ ### Через npm
8
+
9
+ ```bash
10
+ npm install itd-sdk-js
11
+ ```
12
+
13
+ ### Использование
14
+
15
+ ```javascript
16
+ import { ITDClient } from 'itd-sdk-js';
17
+ ```
18
+
5
19
  ## Настройка проекта
6
20
 
7
21
  ### 1. Переменные окружения (.env)
@@ -25,7 +39,7 @@
25
39
  JavaScript
26
40
 
27
41
  ```
28
- import { ITDClient } from './src/client.js';
42
+ import { ITDClient } from 'itd-sdk-js';
29
43
  import dotenv from 'dotenv';
30
44
 
31
45
  dotenv.config();
@@ -49,6 +63,18 @@ client.auth.isAuthenticated = true;
49
63
 
50
64
  - **Параметры**: `text` (string), `imagePath` (string, опционально).
51
65
 
66
+ ### createWallPost(username, text, imagePath?)
67
+
68
+ Создает пост **на стене другого пользователя** (wall post).
69
+
70
+ - Делается через `POST /api/posts` с телом `{ content, wallRecipientId }`.
71
+ - `wallRecipientId` — это **ID пользователя-получателя**, поэтому метод сначала запрашивает профиль через `getUserProfile(username)` и берет `profile.id`.
72
+
73
+ - **Параметры**:
74
+ - `username` — username получателя (string)
75
+ - `text` — текст поста (string)
76
+ - `imagePath` — путь к изображению (string, опционально)
77
+
52
78
  ### getPost(postId)
53
79
 
54
80
  Запрашивает данные конкретного поста.
@@ -234,4 +260,4 @@ if (result.pagination.hasMore) {
234
260
 
235
261
  ---
236
262
 
237
- **Последнее обновление документации**: 2026-01-27.
263
+ **Последнее обновление документации**: 2026-01-28.
package/README.md CHANGED
@@ -10,16 +10,23 @@
10
10
 
11
11
  ## Установка
12
12
 
13
- Bash
13
+ ### Через npm (рекомендуется)
14
14
 
15
+ ```bash
16
+ npm install itd-sdk-js
15
17
  ```
16
- npm install
17
18
 
19
+ ### Из исходников
20
+
21
+ ```bash
22
+ git clone https://github.com/FriceKa/ITD-SDK-js.git
23
+ cd ITD-SDK-js
24
+ npm install
18
25
  ```
19
26
 
20
27
  ## Настройка
21
28
 
22
- 1. Создайте `.env` на основе `.env.example`.
29
+ 1. Создайте `.env` на основе `.env.example` (или используйте переменные окружения).
23
30
  2. Вставьте свой `ITD_ACCESS_TOKEN` (его можно вытащить из Network в DevTools).
24
31
  3. Для работы авто-обновления сессии создайте файл `.cookies` и вставьте туда строку `Cookie` из любого запроса к сайту в браузере.
25
32
 
@@ -32,8 +39,9 @@ npm install
32
39
  JavaScript
33
40
 
34
41
  ```
35
- import { ITDClient } from './src/client.js';
42
+ import { ITDClient } from 'itd-sdk-js';
36
43
  import dotenv from 'dotenv';
44
+
37
45
  dotenv.config();
38
46
 
39
47
  const client = new ITDClient();
@@ -76,6 +84,13 @@ console.log(`${stats.likes} лайков, ${stats.views} просмотров`);
76
84
 
77
85
  Полное описание каждого метода — в **[API_REFERENCE.md](API_REFERENCE.md)**.
78
86
 
87
+ ## Пост на чужой стене (wall post)
88
+
89
+ ```javascript
90
+ // Пишем пост на стене другого пользователя (нужен wallRecipientId, SDK получит его сам)
91
+ await client.createWallPost('ITD_API', 'Тестовый пост на чужой стене 🦫');
92
+ ```
93
+
79
94
  ## Важно
80
95
 
81
96
  Это неофициальный проект. Если разработчики сайта изменят структуру API или введут новую защиту, методы могут временно перестать работать. Используйте аккуратно и не спамьте запросами.
@@ -58,8 +58,23 @@ node examples/auto-refresh.js
58
58
 
59
59
  ## ⚙️ Настройка перед запуском
60
60
 
61
- 1. Установите зависимости: `npm install`
62
- 2. Скопируйте `.env.example` в `.env` и заполните `ITD_ACCESS_TOKEN`
63
- 3. Создайте файл `.cookies` и вставьте туда cookies из браузера
61
+ ### Установка через npm (рекомендуется)
62
+
63
+ ```bash
64
+ npm install itd-sdk-js
65
+ ```
66
+
67
+ ### Установка из исходников
68
+
69
+ ```bash
70
+ git clone https://github.com/FriceKa/ITD-SDK-js.git
71
+ cd ITD-SDK-js
72
+ npm install
73
+ ```
74
+
75
+ ### Конфигурация
76
+
77
+ 1. Скопируйте `.env.example` в `.env` и заполните `ITD_ACCESS_TOKEN`
78
+ 2. Создайте файл `.cookies` и вставьте туда cookies из браузера
64
79
 
65
80
  Подробнее см. **[README.md](../README.md)**
@@ -5,7 +5,7 @@
5
5
  * Вы просто используете API - всё работает "из коробки"!
6
6
  */
7
7
 
8
- import { ITDClient } from '../src/client.js';
8
+ import { ITDClient } from 'itd-sdk-js';
9
9
  import dotenv from 'dotenv';
10
10
 
11
11
  dotenv.config();
@@ -4,7 +4,7 @@
4
4
  * Показывает простоту работы с API через удобные методы.
5
5
  */
6
6
 
7
- import { ITDClient } from '../src/client.js';
7
+ import { ITDClient } from 'itd-sdk-js';
8
8
  import dotenv from 'dotenv';
9
9
 
10
10
  dotenv.config();
@@ -11,7 +11,7 @@
11
11
  * 4. Запустите: node examples/quick-start.js
12
12
  */
13
13
 
14
- import { ITDClient } from '../src/client.js';
14
+ import { ITDClient } from 'itd-sdk-js';
15
15
  import dotenv from 'dotenv';
16
16
 
17
17
  // Загружаем переменные окружения из .env файла
@@ -5,7 +5,7 @@
5
5
  * Показывает, как просто работать с данными без сложных запросов.
6
6
  */
7
7
 
8
- import { ITDClient } from '../src/client.js';
8
+ import { ITDClient } from 'itd-sdk-js';
9
9
  import dotenv from 'dotenv';
10
10
 
11
11
  dotenv.config();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "itd-sdk-js",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Unofficial SDK for итд.com - Node.js library for working with API. Automatic token refresh, session management, and convenient methods for posts, comments, users, and notifications.",
5
5
  "main": "src/client.js",
6
6
  "type": "module",
package/src/client.js CHANGED
@@ -239,6 +239,18 @@ export class ITDClient {
239
239
  return await this.posts.createPost(text, imagePath);
240
240
  }
241
241
 
242
+ /**
243
+ * Создает пост на стене другого пользователя (wall post)
244
+ *
245
+ * @param {string} username - Имя пользователя, на чью стену нужно написать
246
+ * @param {string} text - Текст поста
247
+ * @param {string|null} imagePath - Путь к изображению (опционально)
248
+ * @returns {Promise<Object|null>} Данные созданного поста или null
249
+ */
250
+ async createWallPost(username, text, imagePath = null) {
251
+ return await this.posts.createWallPost(username, text, imagePath);
252
+ }
253
+
242
254
  /**
243
255
  * Редактирует пост (удобный метод)
244
256
  *
package/src/posts.js CHANGED
@@ -69,6 +69,71 @@ export class PostsManager {
69
69
  }
70
70
  }
71
71
 
72
+ /**
73
+ * Создает пост на стене другого пользователя (wall post)
74
+ *
75
+ * @param {string} username - Имя пользователя, на чью стену нужно написать
76
+ * @param {string} text - Текст поста
77
+ * @param {string|null} imagePath - Путь к изображению (опционально)
78
+ * @returns {Promise<Object|null>} Данные созданного поста или null при ошибке
79
+ */
80
+ async createWallPost(username, text, imagePath = null) {
81
+ if (!await this.client.auth.checkAuth()) {
82
+ console.error('Ошибка: необходимо войти в аккаунт');
83
+ return null;
84
+ }
85
+
86
+ try {
87
+ // Получаем профиль пользователя, чтобы получить его ID
88
+ const profile = await this.client.users.getUserProfile(username);
89
+ if (!profile || !profile.id) {
90
+ console.error(`Ошибка: не удалось получить профиль пользователя ${username}`);
91
+ return null;
92
+ }
93
+
94
+ const wallRecipientId = profile.id;
95
+
96
+ // Реальный URL из анализа
97
+ const postUrl = `${this.client.baseUrl}/api/posts`;
98
+
99
+ // Подготовка данных с wallRecipientId
100
+ let postData = {
101
+ content: text,
102
+ wallRecipientId: wallRecipientId, // ID получателя поста на стене
103
+ };
104
+
105
+ // Если есть изображение
106
+ if (imagePath) {
107
+ // Сначала загружаем файл через /api/files/upload
108
+ const uploadedFile = await this.client.files.uploadFile(imagePath);
109
+ if (!uploadedFile) {
110
+ console.error('Ошибка: не удалось загрузить изображение');
111
+ return null;
112
+ }
113
+
114
+ // Затем создаем пост с ID загруженного файла
115
+ postData.attachments = [uploadedFile.id];
116
+ }
117
+
118
+ // Создаем пост на стене
119
+ const response = await this.axios.post(postUrl, postData);
120
+
121
+ if (response.status === 200 || response.status === 201) {
122
+ return response.data;
123
+ } else {
124
+ console.error(`Ошибка создания поста на стене: ${response.status} - ${JSON.stringify(response.data)}`);
125
+ return null;
126
+ }
127
+ } catch (error) {
128
+ console.error('Исключение при создании поста на стене:', error.message);
129
+ if (error.response) {
130
+ console.error('Response status:', error.response.status);
131
+ console.error('Response data:', error.response.data);
132
+ }
133
+ return null;
134
+ }
135
+ }
136
+
72
137
  /**
73
138
  * Получает список постов пользователя или ленту
74
139
  *