getanyapi 0.44.0__tar.gz → 0.45.1__tar.gz
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.
- {getanyapi-0.44.0 → getanyapi-0.45.1}/PKG-INFO +1 -1
- {getanyapi-0.44.0 → getanyapi-0.45.1}/pyproject.toml +1 -1
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/__init__.py +1 -1
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/google.py +1 -5
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/instagram.py +53 -29
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/youtube.py +2 -2
- {getanyapi-0.44.0 → getanyapi-0.45.1}/.gitignore +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/README.md +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/_account.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/_async_client.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/_client.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/_errors.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/_idempotency.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/_pagination.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/_transport.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/discovery_types.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/__init__.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/ahrefs.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/airbnb.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/alibaba.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/amazon.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/apollo.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/appstore.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/bluesky.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/booking.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/capterra.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/chatgpt.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/coinmarketcap.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/company.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/company_enrichment.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/company_search.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/congress.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/dexscreener.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/douyin.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/ebay.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/email.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/email_finding.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/email_verification.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/facebook.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/fiverr.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/g2.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/gemini.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/github.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/glassdoor.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/google_ads.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/google_finance.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/google_shopping.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/hackernews.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/indeed.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/job_search.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/linkedin.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/maps.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/mobile_phone.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/naver.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/nextdoor.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/people_search.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/perplexity.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/person.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/person_enrichment.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/pinterest.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/playstore.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/polymarket.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/realtor.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/reddit.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/redfin.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/rednote.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/sec.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/semrush.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/seo.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/snapchat.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/social.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/spotify.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/substack.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/technographics.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/threads.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/tiktok.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/tiktok_shop.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/tripadvisor.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/trustpilot.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/truthsocial.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/twitter.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/upwork.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/walmart.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/web.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/weibo.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/yahoo_finance.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/yelp.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/zhihu.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/platforms/zillow.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/py.typed +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/src/getanyapi/types.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/tests/conftest.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/tests/test_account.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/tests/test_client.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/tests/test_durable_requests.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/tests/test_envelope.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/tests/test_errors.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/tests/test_fixture_roundtrip.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/tests/test_fixture_sweep.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/tests/test_pagination.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/tests/test_transport.py +0 -0
- {getanyapi-0.44.0 → getanyapi-0.45.1}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: getanyapi
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.45.1
|
|
4
4
|
Summary: Official typed Python SDK for AnyAPI: any API, one wallet, USD, no subscriptions.
|
|
5
5
|
Project-URL: Homepage, https://getanyapi.com
|
|
6
6
|
Project-URL: Documentation, https://getanyapi.com/docs
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
from __future__ import annotations
|
|
5
5
|
|
|
6
|
-
from typing import
|
|
6
|
+
from typing import TYPE_CHECKING
|
|
7
7
|
|
|
8
8
|
from pydantic import BaseModel, ConfigDict, Field
|
|
9
9
|
from typing_extensions import NotRequired, Required, TypedDict, Unpack
|
|
@@ -37,10 +37,6 @@ class GoogleAiOverviewInput(TypedDict, total=False):
|
|
|
37
37
|
"""Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted. Minimum: 1."""
|
|
38
38
|
prompt: Required[str]
|
|
39
39
|
"""The question or prompt to answer with a Google AI Overview."""
|
|
40
|
-
requireFields: NotRequired[
|
|
41
|
-
list[Literal["citations", "index", "scrapedAt", "title", "url"]]
|
|
42
|
-
]
|
|
43
|
-
"""Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `citations` or `index`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a result that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge."""
|
|
44
40
|
|
|
45
41
|
|
|
46
42
|
class GoogleAutocompleteInput(TypedDict, total=False):
|
|
@@ -160,6 +160,8 @@ class InstagramMediaTranscriptInput(TypedDict, total=False):
|
|
|
160
160
|
class InstagramPostInput(TypedDict, total=False):
|
|
161
161
|
"""Input for Instagram Post."""
|
|
162
162
|
|
|
163
|
+
hostVideo: NotRequired[bool]
|
|
164
|
+
"""Set true to also get the post's video on a hosted MP4 link that plays without an Instagram session. The file is downloaded and stored for you, and the response adds `hostedUrl`, `expiresUtc` and `bytes`. It is charged as an extra on top of the price, and it never changes which source serves you: every source offers it at the same price. A post with no video, or a post that does not exist, is refused with no charge rather than billed for a file that cannot exist. Omit it and nothing is downloaded, nothing is stored, and nothing extra is charged. Default: false."""
|
|
163
165
|
preferLatencyUnderMs: NotRequired[int]
|
|
164
166
|
"""Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted. Minimum: 1."""
|
|
165
167
|
requireFields: NotRequired[
|
|
@@ -213,8 +215,8 @@ class InstagramProfileContactInput(TypedDict, total=False):
|
|
|
213
215
|
class InstagramReelTranscriptInput(TypedDict, total=False):
|
|
214
216
|
"""Input for Instagram Reel Transcript."""
|
|
215
217
|
|
|
216
|
-
|
|
217
|
-
"""Set
|
|
218
|
+
hostVideo: NotRequired[bool]
|
|
219
|
+
"""Set true to also get the reel's MP4 on a hosted link you can play without an Instagram session. Charged as an extra on top of the transcript (e.g. true). Default: false."""
|
|
218
220
|
preferLatencyUnderMs: NotRequired[int]
|
|
219
221
|
"""Optional; omit it and routing is unchanged, with the cheapest source serving. Prefer sources whose typical response time (median over the trailing 30 days, as published on this endpoint's lane health) is under this many milliseconds; among those, the cheapest serves. This can raise your price: when the cheapest source misses the target, a faster and dearer one serves, and you are quoted and charged its price. If no source is that fast the request is still served, by whichever source offers the best speed for its price - it is never refused for being slow. Sources we have not timed are tried last. This is a preference, not a guarantee: the median describes past requests and is not a ceiling on this one, and it excludes any wait this request itself asks for. On a paginated walk it applies to the first page only: later pages stay with the source that page chose, at the price it was quoted. Minimum: 1."""
|
|
220
222
|
url: Required[str]
|
|
@@ -975,10 +977,24 @@ class InstagramMediaTranscriptTranscript(BaseModel):
|
|
|
975
977
|
class InstagramPostData(BaseModel):
|
|
976
978
|
model_config = ConfigDict(extra="allow", populate_by_name=True)
|
|
977
979
|
|
|
980
|
+
bytes: int | None = Field(
|
|
981
|
+
default=None,
|
|
982
|
+
description="Size of the hosted MP4 in bytes. Present only when the request set `hostVideo` to true.",
|
|
983
|
+
)
|
|
978
984
|
display_url: str = Field(
|
|
979
985
|
alias="displayUrl",
|
|
980
986
|
description="Populated whenever the provider has data for the entity.",
|
|
981
987
|
)
|
|
988
|
+
expires_utc: int | None = Field(
|
|
989
|
+
default=None,
|
|
990
|
+
alias="expiresUtc",
|
|
991
|
+
description="When `hostedUrl` stops working, as a UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Present only when the request set `hostVideo` to true.",
|
|
992
|
+
)
|
|
993
|
+
hosted_url: str | None = Field(
|
|
994
|
+
default=None,
|
|
995
|
+
alias="hostedUrl",
|
|
996
|
+
description="AnyAPI-hosted MP4 of this post's video, playable without an Instagram session. Present only when the request set `hostVideo` to true.",
|
|
997
|
+
)
|
|
982
998
|
id: str = Field(
|
|
983
999
|
description="Populated whenever the provider has data for the entity."
|
|
984
1000
|
)
|
|
@@ -1179,7 +1195,7 @@ class InstagramProfileContactData(BaseModel):
|
|
|
1179
1195
|
|
|
1180
1196
|
class InstagramReelTranscriptData(BaseModel):
|
|
1181
1197
|
items: list[InstagramReelTranscriptItem] = Field(
|
|
1182
|
-
description="Record for the requested reel (one item), with
|
|
1198
|
+
description="Record for the requested reel (one item), with the full transcript text, timed segments, source video metadata, and the hosted video link when hostVideo was asked for. Populated whenever the provider has data for the entity."
|
|
1183
1199
|
)
|
|
1184
1200
|
|
|
1185
1201
|
|
|
@@ -1187,7 +1203,8 @@ class InstagramReelTranscriptItem(BaseModel):
|
|
|
1187
1203
|
model_config = ConfigDict(extra="allow", populate_by_name=True)
|
|
1188
1204
|
|
|
1189
1205
|
bytes: int | None = Field(
|
|
1190
|
-
default=None,
|
|
1206
|
+
default=None,
|
|
1207
|
+
description="Size of the hosted MP4 in bytes. Present only when hostVideo was true.",
|
|
1191
1208
|
)
|
|
1192
1209
|
duration_seconds: float | None = Field(
|
|
1193
1210
|
default=None,
|
|
@@ -1197,12 +1214,12 @@ class InstagramReelTranscriptItem(BaseModel):
|
|
|
1197
1214
|
expires_utc: float | None = Field(
|
|
1198
1215
|
default=None,
|
|
1199
1216
|
alias="expiresUtc",
|
|
1200
|
-
description="UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. After this moment the hosted MP4 is deleted.",
|
|
1217
|
+
description="UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. After this moment the hosted MP4 is deleted. Present only when hostVideo was true.",
|
|
1201
1218
|
)
|
|
1202
1219
|
hosted_url: str | None = Field(
|
|
1203
1220
|
default=None,
|
|
1204
1221
|
alias="hostedUrl",
|
|
1205
|
-
description="A direct link to the downloaded MP4, hosted by AnyAPI and playable without an Instagram session.",
|
|
1222
|
+
description="A direct link to the downloaded MP4, hosted by AnyAPI and playable without an Instagram session. Present only when hostVideo was true.",
|
|
1206
1223
|
)
|
|
1207
1224
|
id: str = Field(
|
|
1208
1225
|
description="The reel's numeric Instagram media ID, as a string. Empty when the request supplied a CDN media URL, which carries no post record. Populated whenever the provider has data for the entity."
|
|
@@ -1228,14 +1245,14 @@ class InstagramReelTranscriptItem(BaseModel):
|
|
|
1228
1245
|
)
|
|
1229
1246
|
segments: list[InstagramReelTranscriptSegment] | None = Field(
|
|
1230
1247
|
default=None,
|
|
1231
|
-
description="Time-aligned transcript segments, each with its text, speaker label, and start/end offsets in seconds. Empty when
|
|
1248
|
+
description="Time-aligned transcript segments in playback order, one per sentence, each with its text, speaker label, and start/end offsets in seconds. A segment starts when its first word is spoken and ends when its last one finishes. Empty when the reel has no detectable spoken audio.",
|
|
1232
1249
|
)
|
|
1233
1250
|
shortcode: str | None = Field(
|
|
1234
1251
|
default=None,
|
|
1235
1252
|
description="The reel's short code, the part of its instagram.com URL after /reel/. Empty when the request supplied a CDN media URL.",
|
|
1236
1253
|
)
|
|
1237
1254
|
text: str = Field(
|
|
1238
|
-
description="The full speech transcript. Empty when the reel has no detectable spoken audio
|
|
1255
|
+
description="The full speech transcript. Empty when the reel has no detectable spoken audio. Populated whenever the provider has data for the entity."
|
|
1239
1256
|
)
|
|
1240
1257
|
thumbnail_url: str | None = Field(
|
|
1241
1258
|
default=None,
|
|
@@ -1245,11 +1262,6 @@ class InstagramReelTranscriptItem(BaseModel):
|
|
|
1245
1262
|
url: str = Field(
|
|
1246
1263
|
description="The reel URL the request asked for, returned as sent. Populated whenever the provider has data for the entity."
|
|
1247
1264
|
)
|
|
1248
|
-
view_count: int | None = Field(
|
|
1249
|
-
default=None,
|
|
1250
|
-
alias="viewCount",
|
|
1251
|
-
description="Number of video views. Absent when the lane that served the lookup does not carry a view count.",
|
|
1252
|
-
)
|
|
1253
1265
|
|
|
1254
1266
|
|
|
1255
1267
|
class InstagramReelTranscriptSegment(BaseModel):
|
|
@@ -2464,7 +2476,10 @@ class InstagramNamespace:
|
|
|
2464
2476
|
"""Instagram Post
|
|
2465
2477
|
|
|
2466
2478
|
Fetch a single Instagram post or reel by URL (media URLs, like count, owner,
|
|
2467
|
-
type) as normalized JSON.
|
|
2479
|
+
type) as normalized JSON. Turn on hostVideo to also get the post's video on
|
|
2480
|
+
a hosted MP4 link that plays without an Instagram session, charged as an
|
|
2481
|
+
extra on top of the price. If you want the spoken words as well,
|
|
2482
|
+
instagram.reel_transcript transcribes the same reel.
|
|
2468
2483
|
|
|
2469
2484
|
Price: $0.0005 per request.
|
|
2470
2485
|
|
|
@@ -2592,16 +2607,19 @@ class InstagramNamespace:
|
|
|
2592
2607
|
) -> RunResult[InstagramReelTranscriptData]:
|
|
2593
2608
|
"""Instagram Reel Transcript
|
|
2594
2609
|
|
|
2595
|
-
|
|
2596
|
-
|
|
2597
|
-
|
|
2598
|
-
and its speaker labels.
|
|
2599
|
-
|
|
2610
|
+
Transcribe any public Instagram reel or video post: the full speech
|
|
2611
|
+
transcript, speaker labels, and word-level timestamps, from a reel URL or an
|
|
2612
|
+
Instagram CDN media URL you already hold. Transcription runs on
|
|
2613
|
+
MAI-Transcribe-2, chosen for its accuracy and its speaker labels. Turn on
|
|
2614
|
+
hostVideo to also get the MP4 on a hosted link that plays without an
|
|
2615
|
+
Instagram session. If you only want the text, instagram.media_transcript is
|
|
2616
|
+
the cheaper transcript-only option; if you only want the file,
|
|
2617
|
+
instagram.post is where you go.
|
|
2600
2618
|
|
|
2601
|
-
Price: $0.
|
|
2619
|
+
Price: $0.0015 per request plus $0.006 per audio minute (maximum $0.095).
|
|
2602
2620
|
|
|
2603
2621
|
Example:
|
|
2604
|
-
res = client.instagram.reel_transcript(
|
|
2622
|
+
res = client.instagram.reel_transcript(hostVideo=True, url="https://www.instagram.com/reel/CfY6jCIgH-P/", wordTimestamps=False)
|
|
2605
2623
|
"""
|
|
2606
2624
|
raw = self._client._run_raw( # pyright: ignore[reportPrivateUsage]
|
|
2607
2625
|
"instagram.reel_transcript", dict(input), options
|
|
@@ -3485,7 +3503,10 @@ class AsyncInstagramNamespace:
|
|
|
3485
3503
|
"""Instagram Post
|
|
3486
3504
|
|
|
3487
3505
|
Fetch a single Instagram post or reel by URL (media URLs, like count, owner,
|
|
3488
|
-
type) as normalized JSON.
|
|
3506
|
+
type) as normalized JSON. Turn on hostVideo to also get the post's video on
|
|
3507
|
+
a hosted MP4 link that plays without an Instagram session, charged as an
|
|
3508
|
+
extra on top of the price. If you want the spoken words as well,
|
|
3509
|
+
instagram.reel_transcript transcribes the same reel.
|
|
3489
3510
|
|
|
3490
3511
|
Price: $0.0005 per request.
|
|
3491
3512
|
|
|
@@ -3613,16 +3634,19 @@ class AsyncInstagramNamespace:
|
|
|
3613
3634
|
) -> RunResult[InstagramReelTranscriptData]:
|
|
3614
3635
|
"""Instagram Reel Transcript
|
|
3615
3636
|
|
|
3616
|
-
|
|
3617
|
-
|
|
3618
|
-
|
|
3619
|
-
and its speaker labels.
|
|
3620
|
-
|
|
3637
|
+
Transcribe any public Instagram reel or video post: the full speech
|
|
3638
|
+
transcript, speaker labels, and word-level timestamps, from a reel URL or an
|
|
3639
|
+
Instagram CDN media URL you already hold. Transcription runs on
|
|
3640
|
+
MAI-Transcribe-2, chosen for its accuracy and its speaker labels. Turn on
|
|
3641
|
+
hostVideo to also get the MP4 on a hosted link that plays without an
|
|
3642
|
+
Instagram session. If you only want the text, instagram.media_transcript is
|
|
3643
|
+
the cheaper transcript-only option; if you only want the file,
|
|
3644
|
+
instagram.post is where you go.
|
|
3621
3645
|
|
|
3622
|
-
Price: $0.
|
|
3646
|
+
Price: $0.0015 per request plus $0.006 per audio minute (maximum $0.095).
|
|
3623
3647
|
|
|
3624
3648
|
Example:
|
|
3625
|
-
res = client.instagram.reel_transcript(
|
|
3649
|
+
res = client.instagram.reel_transcript(hostVideo=True, url="https://www.instagram.com/reel/CfY6jCIgH-P/", wordTimestamps=False)
|
|
3626
3650
|
"""
|
|
3627
3651
|
raw = await self._client._arun_raw( # pyright: ignore[reportPrivateUsage]
|
|
3628
3652
|
"instagram.reel_transcript", dict(input), options
|
|
@@ -869,7 +869,7 @@ class YoutubeNamespace:
|
|
|
869
869
|
Fetch a YouTube channel's stats (subscribers, video count, total views,
|
|
870
870
|
description) by handle or channel ID.
|
|
871
871
|
|
|
872
|
-
Price: $0.
|
|
872
|
+
Price: $0.0005 per request.
|
|
873
873
|
|
|
874
874
|
Example:
|
|
875
875
|
res = client.youtube.channel(handle="@mkbhd")
|
|
@@ -1484,7 +1484,7 @@ class AsyncYoutubeNamespace:
|
|
|
1484
1484
|
Fetch a YouTube channel's stats (subscribers, video count, total views,
|
|
1485
1485
|
description) by handle or channel ID.
|
|
1486
1486
|
|
|
1487
|
-
Price: $0.
|
|
1487
|
+
Price: $0.0005 per request.
|
|
1488
1488
|
|
|
1489
1489
|
Example:
|
|
1490
1490
|
res = client.youtube.channel(handle="@mkbhd")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|