upload-post 2.2.0__tar.gz → 2.3.0__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.
@@ -1,14 +1,14 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: upload-post
3
- Version: 2.2.0
4
- Summary: Cross-platform social media upload for TikTok, Instagram, YouTube, LinkedIn, Facebook, Pinterest, Threads, Reddit, Bluesky, and X (Twitter)
3
+ Version: 2.3.0
4
+ Summary: Cross-platform social media upload for TikTok, Instagram, YouTube, LinkedIn, Facebook, Pinterest, Threads, Reddit, Bluesky, Discord, Telegram, and X (Twitter)
5
5
  Home-page: https://www.upload-post.com/
6
6
  Author: Upload-Post
7
7
  Author-email: hi@img2html.com
8
8
  Project-URL: Documentation, https://docs.upload-post.com
9
9
  Project-URL: Source, https://github.com/upload-post/upload-post-pip
10
10
  Project-URL: Bug Tracker, https://github.com/upload-post/upload-post-pip/issues
11
- Keywords: social-media,video-upload,photo-upload,tiktok,instagram,youtube,linkedin,facebook,pinterest,threads,reddit,bluesky,twitter,x,api-client,upload-post
11
+ Keywords: social-media,video-upload,photo-upload,tiktok,instagram,youtube,linkedin,facebook,pinterest,threads,reddit,bluesky,discord,telegram,twitter,x,api-client,upload-post
12
12
  Classifier: Development Status :: 5 - Production/Stable
13
13
  Classifier: Intended Audience :: Developers
14
14
  Classifier: Topic :: Internet :: WWW/HTTP
@@ -40,7 +40,7 @@ Dynamic: summary
40
40
 
41
41
  Official Python client for the [Upload-Post API](https://www.upload-post.com) - Cross-platform social media upload.
42
42
 
43
- Upload videos, photos, text posts, and documents to **TikTok, Instagram, YouTube, LinkedIn, Facebook, Pinterest, Threads, Reddit, Bluesky, and X (Twitter)** with a single API.
43
+ Upload videos, photos, text posts, and documents to **TikTok, Instagram, YouTube, LinkedIn, Facebook, Pinterest, Threads, Reddit, Bluesky, Discord, Telegram, and X (Twitter)** with a single API.
44
44
 
45
45
  ## Installation
46
46
 
@@ -68,9 +68,9 @@ print(response)
68
68
 
69
69
  ## Features
70
70
 
71
- - ✅ **Video Upload** - TikTok, Instagram, YouTube, LinkedIn, Facebook, Pinterest, Threads, Bluesky, X
72
- - ✅ **Photo Upload** - TikTok, Instagram, LinkedIn, Facebook, Pinterest, Threads, Reddit, Bluesky, X
73
- - ✅ **Text Posts** - X, LinkedIn, Facebook, Threads, Reddit, Bluesky
71
+ - ✅ **Video Upload** - TikTok, Instagram, YouTube, LinkedIn, Facebook, Pinterest, Threads, Bluesky, Discord, Telegram, X
72
+ - ✅ **Photo Upload** - TikTok, Instagram, LinkedIn, Facebook, Pinterest, Threads, Reddit, Bluesky, Discord, Telegram, X
73
+ - ✅ **Text Posts** - X, LinkedIn, Facebook, Threads, Reddit, Bluesky, Discord, Telegram
74
74
  - ✅ **Document Upload** - LinkedIn (PDF, PPT, PPTX, DOC, DOCX)
75
75
  - ✅ **Scheduling** - Schedule posts for later
76
76
  - ✅ **Posting Queue** - Add posts to your configured queue
@@ -210,6 +210,10 @@ jwt = client.generate_jwt(
210
210
  "my-profile",
211
211
  redirect_url="https://yourapp.com/callback",
212
212
  platforms=["tiktok", "instagram"],
213
+ # Optional: force the connection page language for this profile.
214
+ # Supported: "en", "es", "de", "fr", "pt". When omitted, the page
215
+ # auto-detects the visitor's browser language and falls back to English.
216
+ language="es",
213
217
  )
214
218
  ```
215
219
 
@@ -355,6 +359,9 @@ These options work across all upload methods:
355
359
  | `add_to_queue` | Add to posting queue |
356
360
  | `max_posts_per_slot` | Max posts per queue slot (overrides profile setting) |
357
361
  | `async_upload` | Process asynchronously (default: True) |
362
+ | `autogenerate` | If True, AI generates native per-platform title/description from the media and fills any field left empty |
363
+ | `autogenerate_title` / `autogenerate_description` | Generate only the title or only the description (bool) |
364
+ | `autogenerate_language` | Force the output language (ISO code); omit to auto-detect from the media |
358
365
 
359
366
  ## Error Handling
360
367
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Official Python client for the [Upload-Post API](https://www.upload-post.com) - Cross-platform social media upload.
4
4
 
5
- Upload videos, photos, text posts, and documents to **TikTok, Instagram, YouTube, LinkedIn, Facebook, Pinterest, Threads, Reddit, Bluesky, and X (Twitter)** with a single API.
5
+ Upload videos, photos, text posts, and documents to **TikTok, Instagram, YouTube, LinkedIn, Facebook, Pinterest, Threads, Reddit, Bluesky, Discord, Telegram, and X (Twitter)** with a single API.
6
6
 
7
7
  ## Installation
8
8
 
@@ -30,9 +30,9 @@ print(response)
30
30
 
31
31
  ## Features
32
32
 
33
- - ✅ **Video Upload** - TikTok, Instagram, YouTube, LinkedIn, Facebook, Pinterest, Threads, Bluesky, X
34
- - ✅ **Photo Upload** - TikTok, Instagram, LinkedIn, Facebook, Pinterest, Threads, Reddit, Bluesky, X
35
- - ✅ **Text Posts** - X, LinkedIn, Facebook, Threads, Reddit, Bluesky
33
+ - ✅ **Video Upload** - TikTok, Instagram, YouTube, LinkedIn, Facebook, Pinterest, Threads, Bluesky, Discord, Telegram, X
34
+ - ✅ **Photo Upload** - TikTok, Instagram, LinkedIn, Facebook, Pinterest, Threads, Reddit, Bluesky, Discord, Telegram, X
35
+ - ✅ **Text Posts** - X, LinkedIn, Facebook, Threads, Reddit, Bluesky, Discord, Telegram
36
36
  - ✅ **Document Upload** - LinkedIn (PDF, PPT, PPTX, DOC, DOCX)
37
37
  - ✅ **Scheduling** - Schedule posts for later
38
38
  - ✅ **Posting Queue** - Add posts to your configured queue
@@ -172,6 +172,10 @@ jwt = client.generate_jwt(
172
172
  "my-profile",
173
173
  redirect_url="https://yourapp.com/callback",
174
174
  platforms=["tiktok", "instagram"],
175
+ # Optional: force the connection page language for this profile.
176
+ # Supported: "en", "es", "de", "fr", "pt". When omitted, the page
177
+ # auto-detects the visitor's browser language and falls back to English.
178
+ language="es",
175
179
  )
176
180
  ```
177
181
 
@@ -317,6 +321,9 @@ These options work across all upload methods:
317
321
  | `add_to_queue` | Add to posting queue |
318
322
  | `max_posts_per_slot` | Max posts per queue slot (overrides profile setting) |
319
323
  | `async_upload` | Process asynchronously (default: True) |
324
+ | `autogenerate` | If True, AI generates native per-platform title/description from the media and fills any field left empty |
325
+ | `autogenerate_title` / `autogenerate_description` | Generate only the title or only the description (bool) |
326
+ | `autogenerate_language` | Force the output language (ISO code); omit to auto-detect from the media |
320
327
 
321
328
  ## Error Handling
322
329
 
@@ -5,10 +5,10 @@ with open("README.md", "r", encoding="utf-8") as fh:
5
5
 
6
6
  setup(
7
7
  name="upload-post",
8
- version="2.2.0",
8
+ version="2.3.0",
9
9
  author="Upload-Post",
10
10
  author_email="hi@img2html.com",
11
- description="Cross-platform social media upload for TikTok, Instagram, YouTube, LinkedIn, Facebook, Pinterest, Threads, Reddit, Bluesky, and X (Twitter)",
11
+ description="Cross-platform social media upload for TikTok, Instagram, YouTube, LinkedIn, Facebook, Pinterest, Threads, Reddit, Bluesky, Discord, Telegram, and X (Twitter)",
12
12
  long_description=long_description,
13
13
  long_description_content_type="text/markdown",
14
14
  url="https://www.upload-post.com/",
@@ -38,7 +38,7 @@ setup(
38
38
  keywords=[
39
39
  "social-media", "video-upload", "photo-upload", "tiktok", "instagram",
40
40
  "youtube", "linkedin", "facebook", "pinterest", "threads", "reddit",
41
- "bluesky", "twitter", "x", "api-client", "upload-post"
41
+ "bluesky", "discord", "telegram", "twitter", "x", "api-client", "upload-post"
42
42
  ],
43
43
  python_requires=">=3.8",
44
44
  )
@@ -2,7 +2,7 @@
2
2
  Upload-Post - Cross-platform social media upload
3
3
 
4
4
  Upload videos, photos, text posts, and documents to TikTok, Instagram, YouTube,
5
- LinkedIn, Facebook, Pinterest, Threads, Reddit, Bluesky, and X (Twitter).
5
+ LinkedIn, Facebook, Pinterest, Threads, Reddit, Bluesky, Discord, Telegram, and X (Twitter).
6
6
 
7
7
  Example:
8
8
  >>> from upload_post import UploadPostClient
@@ -15,7 +15,7 @@ Example:
15
15
  ... )
16
16
  """
17
17
 
18
- __version__ = "2.2.0"
18
+ __version__ = "2.3.0"
19
19
 
20
20
  from .api_client import UploadPostClient, UploadPostError
21
21
 
@@ -2,7 +2,7 @@
2
2
  Upload-Post API Client
3
3
 
4
4
  Cross-platform social media upload for TikTok, Instagram, YouTube, LinkedIn,
5
- Facebook, Pinterest, Threads, Reddit, Bluesky, and X (Twitter).
5
+ Facebook, Pinterest, Threads, Reddit, Bluesky, Discord, Telegram, and X (Twitter).
6
6
  """
7
7
 
8
8
  from pathlib import Path
@@ -20,7 +20,7 @@ class UploadPostClient:
20
20
  Upload-Post API Client
21
21
 
22
22
  Supports uploading to: TikTok, Instagram, YouTube, LinkedIn, Facebook,
23
- Pinterest, Threads, Reddit, Bluesky, X (Twitter)
23
+ Pinterest, Threads, Reddit, Bluesky, Discord, Telegram, X (Twitter)
24
24
 
25
25
  Example:
26
26
  >>> client = UploadPostClient("YOUR_API_KEY")
@@ -74,6 +74,8 @@ class UploadPostClient:
74
74
  response = self.session.delete(url, json=json_data)
75
75
  else:
76
76
  response = self.session.delete(url)
77
+ elif method == "PATCH":
78
+ response = self.session.patch(url, json=json_data)
77
79
  else:
78
80
  raise UploadPostError(f"Unsupported HTTP method: {method}")
79
81
 
@@ -126,6 +128,15 @@ class UploadPostClient:
126
128
  data.append(("max_posts_per_slot", str(max_posts_per_slot)))
127
129
  if async_upload is not None:
128
130
  data.append(("async_upload", str(async_upload).lower()))
131
+ # AI auto-generation of native per-platform copy from the media (fills blank fields)
132
+ if kwargs.get("autogenerate") is not None:
133
+ data.append(("autogenerate", str(kwargs["autogenerate"]).lower()))
134
+ if kwargs.get("autogenerate_title") is not None:
135
+ data.append(("autogenerate_title", str(kwargs["autogenerate_title"]).lower()))
136
+ if kwargs.get("autogenerate_description") is not None:
137
+ data.append(("autogenerate_description", str(kwargs["autogenerate_description"]).lower()))
138
+ if kwargs.get("autogenerate_language"):
139
+ data.append(("autogenerate_language", str(kwargs["autogenerate_language"])))
129
140
 
130
141
  # Platform-specific title overrides
131
142
  title_overrides = [
@@ -393,10 +404,10 @@ class UploadPostClient:
393
404
  Args:
394
405
  video_path: Path to video file or video URL.
395
406
  title: Video title/caption. Required for YouTube and Reddit.
396
- Optional for TikTok, Instagram, Facebook, LinkedIn, X, Threads, Bluesky, Pinterest.
407
+ Optional for TikTok, Instagram, Facebook, LinkedIn, X, Threads, Bluesky, Discord, Telegram, Pinterest.
397
408
  user: User identifier (profile name).
398
409
  platforms: Target platforms. Supported: tiktok, instagram, youtube,
399
- linkedin, facebook, pinterest, threads, bluesky, x
410
+ linkedin, facebook, pinterest, threads, bluesky, discord, telegram, x
400
411
 
401
412
  Keyword Args:
402
413
  description: Video description
@@ -405,6 +416,11 @@ class UploadPostClient:
405
416
  timezone: Timezone for scheduled date (e.g., "Europe/Madrid")
406
417
  add_to_queue: Add to posting queue
407
418
  async_upload: Process asynchronously (default: True)
419
+ autogenerate: If True, the server uses AI to generate native per-platform
420
+ title/description from the media and fills any platform field
421
+ left empty. Also: autogenerate_title / autogenerate_description
422
+ (bool) for granularity, autogenerate_language (ISO code) to force
423
+ the language (omit to auto-detect from the media).
408
424
 
409
425
  TikTok:
410
426
  privacy_level: PUBLIC_TO_EVERYONE, MUTUAL_FOLLOW_FRIENDS,
@@ -538,10 +554,10 @@ class UploadPostClient:
538
554
  Args:
539
555
  photos: List of photo file paths or URLs.
540
556
  title: Post title/caption. Required for Reddit.
541
- Optional for TikTok, Instagram, Facebook, LinkedIn, X, Threads, Bluesky, Pinterest.
557
+ Optional for TikTok, Instagram, Facebook, LinkedIn, X, Threads, Bluesky, Discord, Telegram, Pinterest.
542
558
  user: User identifier (profile name).
543
559
  platforms: Target platforms. Supported: tiktok, instagram, linkedin,
544
- facebook, pinterest, threads, reddit, bluesky, x
560
+ facebook, pinterest, threads, reddit, bluesky, discord, telegram, x
545
561
 
546
562
  Keyword Args:
547
563
  description: Photo description
@@ -674,8 +690,8 @@ class UploadPostClient:
674
690
  Args:
675
691
  title: Text content for the post.
676
692
  user: User identifier (profile name).
677
- platforms: Target platforms. Supported: x, linkedin, facebook,
678
- threads, reddit, bluesky
693
+ platforms: Target platforms. Supported: x, linkedin, facebook,
694
+ threads, reddit, bluesky, discord, telegram
679
695
 
680
696
  Keyword Args:
681
697
  first_comment: First comment to post
@@ -1059,7 +1075,7 @@ class UploadPostClient:
1059
1075
  body["scheduled_date"] = scheduled_date
1060
1076
  if timezone:
1061
1077
  body["timezone"] = timezone
1062
- return self._request(f"/uploadposts/schedule/{job_id}", "POST", json_data=body)
1078
+ return self._request(f"/uploadposts/schedule/{job_id}", "PATCH", json_data=body)
1063
1079
 
1064
1080
  # ==================== User Management ====================
1065
1081
 
@@ -1106,7 +1122,8 @@ class UploadPostClient:
1106
1122
  show_calendar: Optional[bool] = None,
1107
1123
  readonly_calendar: Optional[bool] = None,
1108
1124
  connect_title: Optional[str] = None,
1109
- connect_description: Optional[str] = None
1125
+ connect_description: Optional[str] = None,
1126
+ language: Optional[str] = None
1110
1127
  ) -> Dict:
1111
1128
  """
1112
1129
  Generate a JWT for platform integration.
@@ -1122,6 +1139,9 @@ class UploadPostClient:
1122
1139
  readonly_calendar: Show only a read-only calendar (no editing, no account connection).
1123
1140
  connect_title: Custom title for the connection page.
1124
1141
  connect_description: Custom description for the connection page.
1142
+ language: Force the connection page language for this profile.
1143
+ Supported: 'en', 'es', 'de', 'fr', 'pt'. When omitted, the page
1144
+ auto-detects the visitor's browser language and falls back to English.
1125
1145
 
1126
1146
  Returns:
1127
1147
  JWT and connection URL.
@@ -1143,6 +1163,8 @@ class UploadPostClient:
1143
1163
  body["connect_title"] = connect_title
1144
1164
  if connect_description:
1145
1165
  body["connect_description"] = connect_description
1166
+ if language:
1167
+ body["language"] = language
1146
1168
  return self._request("/uploadposts/users/generate-jwt", "POST", json_data=body)
1147
1169
 
1148
1170
  def validate_jwt(self, jwt: str) -> Dict:
@@ -18,7 +18,7 @@ def main():
18
18
  "--platforms",
19
19
  nargs="+",
20
20
  required=True,
21
- choices=["tiktok", "instagram", "linkedin", "youtube", "facebook", "x", "threads", "pinterest"],
21
+ choices=["tiktok", "instagram", "linkedin", "youtube", "facebook", "x", "threads", "pinterest", "discord", "telegram"],
22
22
  help="Platforms to upload to. For platform-specific parameters, please use the Python API."
23
23
  )
24
24
  parser.add_argument(
@@ -1,14 +1,14 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: upload-post
3
- Version: 2.2.0
4
- Summary: Cross-platform social media upload for TikTok, Instagram, YouTube, LinkedIn, Facebook, Pinterest, Threads, Reddit, Bluesky, and X (Twitter)
3
+ Version: 2.3.0
4
+ Summary: Cross-platform social media upload for TikTok, Instagram, YouTube, LinkedIn, Facebook, Pinterest, Threads, Reddit, Bluesky, Discord, Telegram, and X (Twitter)
5
5
  Home-page: https://www.upload-post.com/
6
6
  Author: Upload-Post
7
7
  Author-email: hi@img2html.com
8
8
  Project-URL: Documentation, https://docs.upload-post.com
9
9
  Project-URL: Source, https://github.com/upload-post/upload-post-pip
10
10
  Project-URL: Bug Tracker, https://github.com/upload-post/upload-post-pip/issues
11
- Keywords: social-media,video-upload,photo-upload,tiktok,instagram,youtube,linkedin,facebook,pinterest,threads,reddit,bluesky,twitter,x,api-client,upload-post
11
+ Keywords: social-media,video-upload,photo-upload,tiktok,instagram,youtube,linkedin,facebook,pinterest,threads,reddit,bluesky,discord,telegram,twitter,x,api-client,upload-post
12
12
  Classifier: Development Status :: 5 - Production/Stable
13
13
  Classifier: Intended Audience :: Developers
14
14
  Classifier: Topic :: Internet :: WWW/HTTP
@@ -40,7 +40,7 @@ Dynamic: summary
40
40
 
41
41
  Official Python client for the [Upload-Post API](https://www.upload-post.com) - Cross-platform social media upload.
42
42
 
43
- Upload videos, photos, text posts, and documents to **TikTok, Instagram, YouTube, LinkedIn, Facebook, Pinterest, Threads, Reddit, Bluesky, and X (Twitter)** with a single API.
43
+ Upload videos, photos, text posts, and documents to **TikTok, Instagram, YouTube, LinkedIn, Facebook, Pinterest, Threads, Reddit, Bluesky, Discord, Telegram, and X (Twitter)** with a single API.
44
44
 
45
45
  ## Installation
46
46
 
@@ -68,9 +68,9 @@ print(response)
68
68
 
69
69
  ## Features
70
70
 
71
- - ✅ **Video Upload** - TikTok, Instagram, YouTube, LinkedIn, Facebook, Pinterest, Threads, Bluesky, X
72
- - ✅ **Photo Upload** - TikTok, Instagram, LinkedIn, Facebook, Pinterest, Threads, Reddit, Bluesky, X
73
- - ✅ **Text Posts** - X, LinkedIn, Facebook, Threads, Reddit, Bluesky
71
+ - ✅ **Video Upload** - TikTok, Instagram, YouTube, LinkedIn, Facebook, Pinterest, Threads, Bluesky, Discord, Telegram, X
72
+ - ✅ **Photo Upload** - TikTok, Instagram, LinkedIn, Facebook, Pinterest, Threads, Reddit, Bluesky, Discord, Telegram, X
73
+ - ✅ **Text Posts** - X, LinkedIn, Facebook, Threads, Reddit, Bluesky, Discord, Telegram
74
74
  - ✅ **Document Upload** - LinkedIn (PDF, PPT, PPTX, DOC, DOCX)
75
75
  - ✅ **Scheduling** - Schedule posts for later
76
76
  - ✅ **Posting Queue** - Add posts to your configured queue
@@ -210,6 +210,10 @@ jwt = client.generate_jwt(
210
210
  "my-profile",
211
211
  redirect_url="https://yourapp.com/callback",
212
212
  platforms=["tiktok", "instagram"],
213
+ # Optional: force the connection page language for this profile.
214
+ # Supported: "en", "es", "de", "fr", "pt". When omitted, the page
215
+ # auto-detects the visitor's browser language and falls back to English.
216
+ language="es",
213
217
  )
214
218
  ```
215
219
 
@@ -355,6 +359,9 @@ These options work across all upload methods:
355
359
  | `add_to_queue` | Add to posting queue |
356
360
  | `max_posts_per_slot` | Max posts per queue slot (overrides profile setting) |
357
361
  | `async_upload` | Process asynchronously (default: True) |
362
+ | `autogenerate` | If True, AI generates native per-platform title/description from the media and fills any field left empty |
363
+ | `autogenerate_title` / `autogenerate_description` | Generate only the title or only the description (bool) |
364
+ | `autogenerate_language` | Force the output language (ISO code); omit to auto-detect from the media |
358
365
 
359
366
  ## Error Handling
360
367
 
File without changes