@xpoz/xpoz 0.4.1 → 0.4.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/README.md +26 -1
- package/dist/index.cjs +23 -1
- package/dist/index.d.cts +22 -1
- package/dist/index.d.ts +22 -1
- package/dist/index.js +23 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -200,7 +200,7 @@ The following methods accept both `responseType` and `limit`:
|
|
|
200
200
|
- `twitter.getPostsByAuthor()`, `twitter.searchPosts()`, `twitter.getUsersByKeywords()`
|
|
201
201
|
- `instagram.getPostsByUser()`, `instagram.searchPosts()`, `instagram.getUsersByKeywords()`
|
|
202
202
|
- `reddit.searchPosts()`
|
|
203
|
-
- `tiktok.getPostsByUser()`, `tiktok.searchPosts()`, `tiktok.getUsersByKeywords()`
|
|
203
|
+
- `tiktok.getPostsByUser()`, `tiktok.searchPosts()`, `tiktok.getUsersByKeywords()`, `tiktok.getPostsByHashtags()`, `tiktok.getUsersByHashtags()`
|
|
204
204
|
|
|
205
205
|
These methods accept `limit` only:
|
|
206
206
|
|
|
@@ -640,6 +640,28 @@ const results = await client.tiktok.searchPosts("travel vlog", {
|
|
|
640
640
|
});
|
|
641
641
|
```
|
|
642
642
|
|
|
643
|
+
#### `getPostsByHashtags(hashtags, options?) -> Promise<PaginatedResult<TiktokPost>>`
|
|
644
|
+
|
|
645
|
+
Search posts by hashtags via the indexed `hashtags` column. Pass bare alphanumeric tags (no leading `#`). Max 5 hashtags per request; OR semantics across the list.
|
|
646
|
+
|
|
647
|
+
```typescript
|
|
648
|
+
const results = await client.tiktok.getPostsByHashtags(["dance", "fyp"], {
|
|
649
|
+
responseType: ResponseType.Fast,
|
|
650
|
+
limit: 50,
|
|
651
|
+
});
|
|
652
|
+
```
|
|
653
|
+
|
|
654
|
+
#### `getUsersByHashtags(hashtags, options?) -> Promise<PaginatedResult<TiktokUser>>`
|
|
655
|
+
|
|
656
|
+
Find users who authored posts tagged with the given hashtags. Same input rules as `getPostsByHashtags`.
|
|
657
|
+
|
|
658
|
+
```typescript
|
|
659
|
+
const users = await client.tiktok.getUsersByHashtags(["sustainable_fashion"], {
|
|
660
|
+
responseType: ResponseType.Fast,
|
|
661
|
+
limit: 20,
|
|
662
|
+
});
|
|
663
|
+
```
|
|
664
|
+
|
|
643
665
|
#### `getComments(postId, options?) -> Promise<PaginatedResult<TiktokComment>>`
|
|
644
666
|
|
|
645
667
|
```typescript
|
|
@@ -870,6 +892,9 @@ All fields are optional and typed as their respective TypeScript types. Unknown
|
|
|
870
892
|
| `downloadCount` | `number` | Number of downloads |
|
|
871
893
|
| `forwardCount` | `number` | Number of forwards/shares |
|
|
872
894
|
| `videoThumbnail` | `string` | Thumbnail URL |
|
|
895
|
+
| `videoUrl` | `string[]` | Array of video URLs |
|
|
896
|
+
| `duration` | `number` | Video duration in seconds |
|
|
897
|
+
| `hashtags` | `string[]` | Hashtags in the post |
|
|
873
898
|
| `postType` | `number` | Post type code |
|
|
874
899
|
| `isPrivate` | `boolean` | Private post flag |
|
|
875
900
|
| `createdAt` | `string` | Creation timestamp |
|
package/dist/index.cjs
CHANGED
|
@@ -296,7 +296,7 @@ function coerce(value) {
|
|
|
296
296
|
}
|
|
297
297
|
|
|
298
298
|
// src/version.ts
|
|
299
|
-
var VERSION = "0.4.
|
|
299
|
+
var VERSION = "0.4.2";
|
|
300
300
|
|
|
301
301
|
// src/mcp/transport.ts
|
|
302
302
|
var USER_AGENT = `xpoz-ts-sdk/${VERSION}`;
|
|
@@ -629,10 +629,12 @@ var GET_REDDIT_SUBREDDITS_BY_KEYWORDS = "getRedditSubredditsByKeywords";
|
|
|
629
629
|
var GET_TIKTOK_POSTS_BY_IDS = "getTiktokPostsByIds";
|
|
630
630
|
var GET_TIKTOK_POSTS_BY_USER = "getTiktokPostsByUser";
|
|
631
631
|
var SEARCH_TIKTOK_POSTS = "getTiktokPostsByKeywords";
|
|
632
|
+
var GET_TIKTOK_POSTS_BY_HASHTAGS = "getTiktokPostsByHashtags";
|
|
632
633
|
var GET_TIKTOK_COMMENTS = "getTiktokCommentsByPostId";
|
|
633
634
|
var GET_TIKTOK_USER = "getTiktokUser";
|
|
634
635
|
var SEARCH_TIKTOK_USERS = "searchTiktokUsers";
|
|
635
636
|
var GET_TIKTOK_USERS_BY_KEYWORDS = "getTiktokUsersByKeywords";
|
|
637
|
+
var GET_TIKTOK_USERS_BY_HASHTAGS = "getTiktokUsersByHashtags";
|
|
636
638
|
var GET_TRACKED_ITEMS = "getTrackedItems";
|
|
637
639
|
var ADD_TRACKED_ITEMS = "addTrackedItems";
|
|
638
640
|
var REMOVE_TRACKED_ITEMS = "removeTrackedItems";
|
|
@@ -1127,6 +1129,26 @@ var TiktokNamespace = class extends BaseNamespace {
|
|
|
1127
1129
|
args
|
|
1128
1130
|
);
|
|
1129
1131
|
}
|
|
1132
|
+
async getPostsByHashtags(hashtags, options = {}) {
|
|
1133
|
+
const args = this.buildArgs({ hashtags, ...options });
|
|
1134
|
+
const result = await this.callAndMaybePoll(GET_TIKTOK_POSTS_BY_HASHTAGS, args);
|
|
1135
|
+
return this.buildPaginatedResult(
|
|
1136
|
+
result,
|
|
1137
|
+
parsePost3,
|
|
1138
|
+
GET_TIKTOK_POSTS_BY_HASHTAGS,
|
|
1139
|
+
args
|
|
1140
|
+
);
|
|
1141
|
+
}
|
|
1142
|
+
async getUsersByHashtags(hashtags, options = {}) {
|
|
1143
|
+
const args = this.buildArgs({ hashtags, ...options });
|
|
1144
|
+
const result = await this.callAndMaybePoll(GET_TIKTOK_USERS_BY_HASHTAGS, args);
|
|
1145
|
+
return this.buildPaginatedResult(
|
|
1146
|
+
result,
|
|
1147
|
+
parseUser4,
|
|
1148
|
+
GET_TIKTOK_USERS_BY_HASHTAGS,
|
|
1149
|
+
args
|
|
1150
|
+
);
|
|
1151
|
+
}
|
|
1130
1152
|
};
|
|
1131
1153
|
|
|
1132
1154
|
// src/namespaces/tracking.ts
|
package/dist/index.d.cts
CHANGED
|
@@ -199,6 +199,8 @@ declare class TwitterNamespace extends BaseNamespace {
|
|
|
199
199
|
getUserConnections(username: string, connectionType: string, options?: {
|
|
200
200
|
fields?: string[];
|
|
201
201
|
forceLatest?: boolean;
|
|
202
|
+
responseType?: ResponseType;
|
|
203
|
+
limit?: number;
|
|
202
204
|
}): Promise<PaginatedResult<TwitterUser>>;
|
|
203
205
|
getUsersByKeywords(query: string, options?: {
|
|
204
206
|
fields?: string[];
|
|
@@ -542,6 +544,9 @@ interface TiktokPost {
|
|
|
542
544
|
downloadCount?: number | null;
|
|
543
545
|
forwardCount?: number | null;
|
|
544
546
|
playCount?: number | null;
|
|
547
|
+
hashtags?: string[] | null;
|
|
548
|
+
duration?: number | null;
|
|
549
|
+
videoUrl?: string[] | null;
|
|
545
550
|
createdAt?: string | null;
|
|
546
551
|
createdAtTimestamp?: number | null;
|
|
547
552
|
createdAtDate?: string | null;
|
|
@@ -629,6 +634,22 @@ declare class TiktokNamespace extends BaseNamespace {
|
|
|
629
634
|
responseType?: ResponseType;
|
|
630
635
|
limit?: number;
|
|
631
636
|
}): Promise<PaginatedResult<TiktokUser>>;
|
|
637
|
+
getPostsByHashtags(hashtags: string[], options?: {
|
|
638
|
+
fields?: string[];
|
|
639
|
+
startDate?: string;
|
|
640
|
+
endDate?: string;
|
|
641
|
+
forceLatest?: boolean;
|
|
642
|
+
responseType?: ResponseType;
|
|
643
|
+
limit?: number;
|
|
644
|
+
}): Promise<PaginatedResult<TiktokPost>>;
|
|
645
|
+
getUsersByHashtags(hashtags: string[], options?: {
|
|
646
|
+
fields?: string[];
|
|
647
|
+
startDate?: string;
|
|
648
|
+
endDate?: string;
|
|
649
|
+
forceLatest?: boolean;
|
|
650
|
+
responseType?: ResponseType;
|
|
651
|
+
limit?: number;
|
|
652
|
+
}): Promise<PaginatedResult<TiktokUser>>;
|
|
632
653
|
}
|
|
633
654
|
|
|
634
655
|
declare enum TrackedItemType {
|
|
@@ -710,7 +731,7 @@ declare class OperationCancelledError extends XpozError {
|
|
|
710
731
|
constructor(operationId: string);
|
|
711
732
|
}
|
|
712
733
|
|
|
713
|
-
declare const VERSION = "0.4.
|
|
734
|
+
declare const VERSION = "0.4.2";
|
|
714
735
|
|
|
715
736
|
declare function checkForUpdates(): Promise<void>;
|
|
716
737
|
|
package/dist/index.d.ts
CHANGED
|
@@ -199,6 +199,8 @@ declare class TwitterNamespace extends BaseNamespace {
|
|
|
199
199
|
getUserConnections(username: string, connectionType: string, options?: {
|
|
200
200
|
fields?: string[];
|
|
201
201
|
forceLatest?: boolean;
|
|
202
|
+
responseType?: ResponseType;
|
|
203
|
+
limit?: number;
|
|
202
204
|
}): Promise<PaginatedResult<TwitterUser>>;
|
|
203
205
|
getUsersByKeywords(query: string, options?: {
|
|
204
206
|
fields?: string[];
|
|
@@ -542,6 +544,9 @@ interface TiktokPost {
|
|
|
542
544
|
downloadCount?: number | null;
|
|
543
545
|
forwardCount?: number | null;
|
|
544
546
|
playCount?: number | null;
|
|
547
|
+
hashtags?: string[] | null;
|
|
548
|
+
duration?: number | null;
|
|
549
|
+
videoUrl?: string[] | null;
|
|
545
550
|
createdAt?: string | null;
|
|
546
551
|
createdAtTimestamp?: number | null;
|
|
547
552
|
createdAtDate?: string | null;
|
|
@@ -629,6 +634,22 @@ declare class TiktokNamespace extends BaseNamespace {
|
|
|
629
634
|
responseType?: ResponseType;
|
|
630
635
|
limit?: number;
|
|
631
636
|
}): Promise<PaginatedResult<TiktokUser>>;
|
|
637
|
+
getPostsByHashtags(hashtags: string[], options?: {
|
|
638
|
+
fields?: string[];
|
|
639
|
+
startDate?: string;
|
|
640
|
+
endDate?: string;
|
|
641
|
+
forceLatest?: boolean;
|
|
642
|
+
responseType?: ResponseType;
|
|
643
|
+
limit?: number;
|
|
644
|
+
}): Promise<PaginatedResult<TiktokPost>>;
|
|
645
|
+
getUsersByHashtags(hashtags: string[], options?: {
|
|
646
|
+
fields?: string[];
|
|
647
|
+
startDate?: string;
|
|
648
|
+
endDate?: string;
|
|
649
|
+
forceLatest?: boolean;
|
|
650
|
+
responseType?: ResponseType;
|
|
651
|
+
limit?: number;
|
|
652
|
+
}): Promise<PaginatedResult<TiktokUser>>;
|
|
632
653
|
}
|
|
633
654
|
|
|
634
655
|
declare enum TrackedItemType {
|
|
@@ -710,7 +731,7 @@ declare class OperationCancelledError extends XpozError {
|
|
|
710
731
|
constructor(operationId: string);
|
|
711
732
|
}
|
|
712
733
|
|
|
713
|
-
declare const VERSION = "0.4.
|
|
734
|
+
declare const VERSION = "0.4.2";
|
|
714
735
|
|
|
715
736
|
declare function checkForUpdates(): Promise<void>;
|
|
716
737
|
|
package/dist/index.js
CHANGED
|
@@ -248,7 +248,7 @@ function coerce(value) {
|
|
|
248
248
|
}
|
|
249
249
|
|
|
250
250
|
// src/version.ts
|
|
251
|
-
var VERSION = "0.4.
|
|
251
|
+
var VERSION = "0.4.2";
|
|
252
252
|
|
|
253
253
|
// src/mcp/transport.ts
|
|
254
254
|
var USER_AGENT = `xpoz-ts-sdk/${VERSION}`;
|
|
@@ -581,10 +581,12 @@ var GET_REDDIT_SUBREDDITS_BY_KEYWORDS = "getRedditSubredditsByKeywords";
|
|
|
581
581
|
var GET_TIKTOK_POSTS_BY_IDS = "getTiktokPostsByIds";
|
|
582
582
|
var GET_TIKTOK_POSTS_BY_USER = "getTiktokPostsByUser";
|
|
583
583
|
var SEARCH_TIKTOK_POSTS = "getTiktokPostsByKeywords";
|
|
584
|
+
var GET_TIKTOK_POSTS_BY_HASHTAGS = "getTiktokPostsByHashtags";
|
|
584
585
|
var GET_TIKTOK_COMMENTS = "getTiktokCommentsByPostId";
|
|
585
586
|
var GET_TIKTOK_USER = "getTiktokUser";
|
|
586
587
|
var SEARCH_TIKTOK_USERS = "searchTiktokUsers";
|
|
587
588
|
var GET_TIKTOK_USERS_BY_KEYWORDS = "getTiktokUsersByKeywords";
|
|
589
|
+
var GET_TIKTOK_USERS_BY_HASHTAGS = "getTiktokUsersByHashtags";
|
|
588
590
|
var GET_TRACKED_ITEMS = "getTrackedItems";
|
|
589
591
|
var ADD_TRACKED_ITEMS = "addTrackedItems";
|
|
590
592
|
var REMOVE_TRACKED_ITEMS = "removeTrackedItems";
|
|
@@ -1079,6 +1081,26 @@ var TiktokNamespace = class extends BaseNamespace {
|
|
|
1079
1081
|
args
|
|
1080
1082
|
);
|
|
1081
1083
|
}
|
|
1084
|
+
async getPostsByHashtags(hashtags, options = {}) {
|
|
1085
|
+
const args = this.buildArgs({ hashtags, ...options });
|
|
1086
|
+
const result = await this.callAndMaybePoll(GET_TIKTOK_POSTS_BY_HASHTAGS, args);
|
|
1087
|
+
return this.buildPaginatedResult(
|
|
1088
|
+
result,
|
|
1089
|
+
parsePost3,
|
|
1090
|
+
GET_TIKTOK_POSTS_BY_HASHTAGS,
|
|
1091
|
+
args
|
|
1092
|
+
);
|
|
1093
|
+
}
|
|
1094
|
+
async getUsersByHashtags(hashtags, options = {}) {
|
|
1095
|
+
const args = this.buildArgs({ hashtags, ...options });
|
|
1096
|
+
const result = await this.callAndMaybePoll(GET_TIKTOK_USERS_BY_HASHTAGS, args);
|
|
1097
|
+
return this.buildPaginatedResult(
|
|
1098
|
+
result,
|
|
1099
|
+
parseUser4,
|
|
1100
|
+
GET_TIKTOK_USERS_BY_HASHTAGS,
|
|
1101
|
+
args
|
|
1102
|
+
);
|
|
1103
|
+
}
|
|
1082
1104
|
};
|
|
1083
1105
|
|
|
1084
1106
|
// src/namespaces/tracking.ts
|