{"id":20414284,"url":"https://github.com/wkaisertexas/tiktok-uploader","last_synced_at":"2025-05-14T18:06:08.887Z","repository":{"id":79246249,"uuid":"600617065","full_name":"wkaisertexas/tiktok-uploader","owner":"wkaisertexas","description":"Automatically ⬆️ upload TikTok videos","archived":false,"fork":false,"pushed_at":"2025-04-12T23:54:56.000Z","size":178,"stargazers_count":498,"open_issues_count":0,"forks_count":105,"subscribers_count":15,"default_branch":"main","last_synced_at":"2025-04-13T15:05:49.119Z","etag":null,"topics":["automatic","automation","bot","python","selenium","tiktok","uploader"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/tiktok-uploader/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wkaisertexas.png","metadata":{"files":{"readme":"README.de.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["wkaisertexas"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2023-02-12T03:11:18.000Z","updated_at":"2025-04-12T23:54:56.000Z","dependencies_parsed_at":"2023-12-10T06:19:09.286Z","dependency_job_id":"52e07249-98b4-4a8a-9d55-6c38f44e7f35","html_url":"https://github.com/wkaisertexas/tiktok-uploader","commit_stats":{"total_commits":26,"total_committers":1,"mean_commits":26.0,"dds":0.0,"last_synced_commit":"982f6580f11c10d158977362b28841d8efc3600e"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wkaisertexas%2Ftiktok-uploader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wkaisertexas%2Ftiktok-uploader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wkaisertexas%2Ftiktok-uploader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wkaisertexas%2Ftiktok-uploader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wkaisertexas","download_url":"https://codeload.github.com/wkaisertexas/tiktok-uploader/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254198514,"owners_count":22030965,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automatic","automation","bot","python","selenium","tiktok","uploader"],"created_at":"2024-11-15T06:08:51.219Z","updated_at":"2025-05-14T18:06:03.830Z","avatar_url":"https://github.com/wkaisertexas.png","language":"Python","funding_links":["https://github.com/sponsors/wkaisertexas"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://github.com/wkaisertexas/tiktok-uploader/assets/27795014/f991fdc7-287a-4c3b-9a84-22c7ad8a57bf\" alt=\"video arbeitet\" /\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003e ⬆️ TikTok-Uploader \u003c/h1\u003e\n\u003cp align=\"center\"\u003eEin \u003cstrong\u003eSelenium\u003c/strong\u003e-basierter automatisierter \u003cstrong\u003eTikTok\u003c/strong\u003e-Videouploader\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/wkaisertexas/tiktok-uploader\"\u003e\u003cstrong\u003eEnglisch\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"https://github.com/wkaisertexas/tiktok-uploader/blob/main/README.zh-Hans.md\"\u003e\u003cstrong\u003eChinesisch (vereinfacht)\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"https://github.com/wkaisertexas/tiktok-uploader/blob/main/README.fr.md\"\u003e\u003cstrong\u003eFranzösisch\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"https://github.com/wkaisertexas/tiktok-uploader/blob/main/README.es.md\"\u003e\u003cstrong\u003eSpanisch\u003c/strong\u003e\u003c/a\u003e ·\n  \u003ca href=\"https://github.com/wkaisertexas/tiktok-uploader/blob/main/README.de.md\"\u003e\u003cstrong\u003eDeutsch\u003c/strong\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003e ➡️ [Schauen Sie sich tranzlate auf GitHub an](https://github.com/wkaisertexas/tranzlate/blob/main/README.de.md), ein Tool zum Übersetzen von Text mit Hilfe von [ChatGPT](https://chat.openai.com)\n\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"Forks\" src=\"https://img.shields.io/github/forks/wkaisertexas/tiktok-uploader\" /\u003e\n  \u003cimg alt=\"Sterne\" src=\"https://img.shields.io/github/stars/wkaisertexas/tiktok-uploader\" /\u003e\n  \u003cimg alt=\"Beobachter\" src=\"https://img.shields.io/github/watchers/wkaisertexas/tiktok-uploader\" /\u003e\n\u003c/p\u003e\n\n\u003ch1\u003eInhaltsverzeichnis\u003c/h1\u003e\n\n- [Installation](#installation)\n  - [MacOS, Windows und Linux](#macos-windows-and-linux)\n    - [Herunterladen von PyPI (empfohlen)](#pypi)\n    - [Erstellung aus der Quelle](#building-from-source)\n- [Verwendung](#usage)\n  - [💻 Befehlszeilenschnittstelle (CLI)](#cli)\n  - [⬆ Hochladen von Videos](#uploading-videos)\n  - [🫵 Erwähnungen und Hashtags](#mentions-and-hashtags)\n  - [🪡 Stitches, Duette und Kommentare](#stitches-duets-and-comments)\n  - [🔐 Authentifizierung](#authentication)\n  - [👀 Browser-Auswahl](#browser-selection)\n  - [🚲 Benutzerdefinierte WebDriver-Optionen](#custom-webdriver)\n  - [🤯 Headless-Browser](#headless)\n  - [🔨 Erstmalige Einrichtung](#initial-setup)\n- [♻️ Beispiele](#examples)\n- [📝 Notizen](#notes)\n- [Accounts erstellt mit](#made-with)\n\n# Installation\n\nEine Voraussetzung zur Verwendung dieses Programms ist die Installation eines [Selenium-kompatiblen](https://www.selenium.dev/documentation/webdriver/getting_started/install_drivers/) Webbrowsers. [Google Chrome](https://www.google.com/chrome/) wird empfohlen.\n\n\u003ch2 id=\"macos-windows-and-linux\"\u003eMacOS, Windows und Linux\u003c/h2\u003e\n\nInstallieren Sie Python 3 oder höher von [python.org](https://www.python.org/downloads/)\n\n\u003ch3 id=\"pypi\"\u003eHerunterladen von PyPI (empfohlen)\u003c/h3\u003e\n\nInstallieren Sie `tiktok-uploader` mit `pip`\n\n```bash\npip install tiktok-uploader\n```\n\n\u003ch3 id=\"building-from-source\"\u003eErstellung aus der Quelle\u003c/h3\u003e\n\nDie Installation aus der Quelle ermöglicht eine größere Flexibilität bei der Modifikation des Modulcodes, um das Standardverhalten zu erweitern.\n\nZuerst `clonen` Sie und wechseln Sie in das Repository. Installieren Sie anschließend `hatch`, das für dieses Projekt verwendete Build-Tool [^1]. Dann `bauen` Sie das Projekt. Schließlich `installieren` Sie das Projekt mit dem `-e` oder dem editierbaren Flag.\n\n```console\ngit clone https://github.com/wkaisertexas/tiktok-uploader.git\ncd tiktok-uploader\npip install hatch\nhatch build\npip install -e .\n```\n\n\u003ch1 id=\"usage\"\u003eVerwendung\u003c/h1\u003e\n\n`tiktok-uploader` funktioniert, indem es die **Cookies** Ihres Browsers dupliziert, was **TikTok** dazu verleitet zu glauben, dass Sie in einem ferngesteuerten Browser eingeloggt sind.\n\n\u003ch2 id=\"cli\"\u003e 💻 Befehlszeilenschnittstelle (CLI)\u003c/h2\u003e\n\nDie Verwendung der CLI ist so einfach wie das Aufrufen von `tiktok-uploader` mit Ihrem Video: `Pfad` (-v), `Beschreibung`(-d) und `Cookies` (-c)\n\n```bash\ntiktok-uploader -v video.mp4 -d \"das ist meine geschützte \\\"Beschreibung\\\"\" -c cookies.txt\n```\n\n```python\nfrom tiktok_uploader.upload import upload_video, upload_videos\nfrom tiktok_uploader.auth import AuthBackend\n\n# Einzelvideo\nupload_video('video.mp4',\n            description='das ist meine Beschreibung',\n            cookies='cookies.txt')\n\n# Mehrere Videos\nvideos = [\n    {\n        'path': 'video.mp4',\n        'description': 'das ist meine Beschreibung'\n    },\n    {\n        'path': 'video2.mp4',\n        'description': 'das ist auch meine Beschreibung'\n    }\n]\n\nauth = AuthBackend(cookies='cookies.txt')\nupload_videos(videos=videos, auth=auth)\n```\n\n\u003ch2 id=\"uploading-videos\"\u003e ⬆ Hochladen von Videos\u003c/h2\u003e\n\nDiese Bibliothek dreht sich um die Funktion `upload_videos`, die eine Liste von Videos entgegennimmt, die **Dateinamen** und **Beschreibungen** haben und wie folgt übergeben werden:\n\n```python\nfrom tiktok_uploader.upload import upload_videos\nfrom tiktok_uploader.auth import AuthBackend\n\nvideos = [\n    {\n        'video': 'video0.mp4',\n        'description': 'Video 1 handelt von ...'\n    },\n    {\n        'video': 'video1.mp4',\n        'description': 'Video 2 handelt von ...'\n    }\n]\n\nauth = AuthBackend(cookies='cookies.txt')\nfailed_videos = upload_videos(videos=videos, auth=auth)\n\nfor video in failed_videos: # jedes eingabe video objekt, das fehlgeschlagen ist\n    print(f'{video['video']} mit der Beschreibung \"{video['description']}\" ist fehlgeschlagen')\n```\n\n\u003ch2 id=\"mentions-and-hashtags\"\u003e 🫵 Erwähnungen und Hashtags\u003c/h2\u003e\n\nErwähnungen und Hashtags funktionieren jetzt, solange sie von einem Leerzeichen gefolgt werden. Sie als Benutzer sind jedoch dafür verantwortlich, zu überprüfen, ob eine Erwähnung oder ein Hashtag vorhanden ist, bevor Sie ihn posten\n\n**Beispiel:**\n\n```python\nfrom tiktok_uploader.upload import upload_video\n\nupload_video('video.mp4', '#fyp @icespicee', 'cookies.txt')\n```\n\n\u003ch2 id=\"stitches-duets-and-comments\"\u003e 🪡 Stitches, Duette und Kommentare\u003c/h2\u003e\n\nUm festzulegen, ob ein hochgeladenes Video Stitches, Kommentare oder Duette zulässt, spezifizieren Sie einfach `comment`, `stitch` und/oder `duet` als Schlüsselargumente für `upload_video` oder `upload_videos`.\n\n```python\nupload_video(..., comment=True, stitch=True, duet=True)\n```\n\n\u003e Kommentare, Stiche und Duette werden standardmäßig **erlaubt**\n\n\u003ch2 id=\"proxy\"\u003e 🌐 Proxy\u003c/h2\u003e\n\nUm einen Proxy einzustellen, der derzeit nur mit Chrome als Browser funktioniert, erlauben Sie die Benutzerauthentifizierung per User:Pass.\n\n```python\n# proxy = {'user': 'meinBenutzer', 'pass': 'meinPass', 'host': '111.111.111', 'port': '99'}  # Benutzer:Pass\nproxy = {'host': '111.111.111', 'port': '99'}\nupload_video(..., proxy=proxy)\n```\n\n\u003ch2 id=\"schedule\"\u003e 📆 Zeitplan\u003c/h2\u003e\n\nDas Datum und die Uhrzeit der geplanten Videoveröffentlichung werden in der UTC-Zeitzone behandelt. \u003cbr\u003e\nDas geplante Datum muss mindestens 20 Minuten in der Zukunft und maximal 10 Tage in der Zukunft liegen.\n\n```python\nimport datetime\nschedule = datetime.datetime(2020, 12, 20, 13, 00)\nupload_video(..., plan=schedule)\n```\n\n\u003ch2 id=\"authentication\"\u003e 🔐 Authentifizierung\u003c/h2\u003e\n\nDie Authentifizierung verwendet die Cookies Ihres Browsers. Dieser Umweg wurde gemacht aufgrund der strengeren Einstellung von TikTok zur Authentifizierung durch einen von Selenium gesteuerten Browser.\n\nIhr `sessionid` ist alles, was für die Authentifizierung benötigt wird und kann fast jeder Funktion als Argument übergeben werden\n\n[🍪 Get cookies.txt](https://github.com/kairi003/Get-cookies.txt-LOCALLY) erleichtert das Erhalten von Cookies in einem [NetScape-Cookies-Format](http://fileformats.archiveteam.org/wiki/Netscape_cookies.txt).\n\nNach der Installation öffnen Sie das Erweiterungsmenü auf [TikTok.com](https://tiktok.com/) und klicken Sie auf `🍪 Get cookies.txt`, um Ihre Cookies zu sehen. Wählen Sie `Export As ⇩` und legen Sie einen Speicherort und Namen zum Speichern fest.\n\n**Optional** kann `cookies_list`, eine Liste von Wörterbüchern mit den Schlüsseln `name`, `value`, `domain`, `path` und `expiry`, verwendet werden, um Ihre eigenen Browser-Cookies zu übergeben.\n\n**Beispiel:**\n\n```python\ncookies_list = [\n    {\n        'name': 'sessionid',\n        'value': '**Ihre Sitzungs-ID**',\n        'domain': 'https://tiktok.com',\n        'path': '/',\n        'expiry': '10/8/2023, 12:18:58 PM'\n    }\n]\n\nupload_video(..., cookies_list=cookies_list)\n```\n\n\u003ch2 id=\"browser-selection\"\u003e 👀 Browserauswahl\u003c/h2\u003e\n\n[Google Chrome](https://www.google.com/chrome) ist der bevorzugte Browser für **TikTokUploader**. Die standardmäßig verwendeten Anti-Detection-Techniken in diesem Paket sind dafür optimiert. Wenn Sie jedoch einen anderen Browser verwenden möchten, können Sie den `browser` in `upload_video` oder `upload_videos` spezifizieren.\n\n```python\nfrom tiktok_uploader.upload import upload_video\n\nfrom random import choice\n\nBROWSER = [\n    'chrome',\n    'safari',\n    'chromium',\n    'edge',\n    'firefox'\n]\n\n# wählt zufällig einen Webbrowser\nupload_video(..., browser=choice(BROWSER))\n```\n\n✅ Unterstützte Browser:\n\n- **Chrome** (empfohlen)\n- **Safari**\n- **Chromium**\n- **Edge**\n- **FireFox**\n\n\u003ch2 id=\"custom-webdriver\"\u003e 🚲 Benutzerdefinierte WebDriver-Optionen\u003c/h2\u003e\n\nStandardmäßige Modifikationen von Selenium werden angewendet, die helfen, dass es von TikTok nicht erkannt wird.\n\nSie **können** jedoch eine benutzerdefinierte Treiberkonfigurationsoptionen übergeben. Übergeben Sie dazu einfach `Optionen` als Schlüsselargument an `upload_video` oder `upload_videos`.\n\n```python\nfrom selenium.webdriver.chrome.options import Options\n\noptions = Options()\n\noptions.add_argument('start-maximized')\n\nupload_videos(..., options=options)\n```\n\n\u003e Hinweis: Stellen Sie sicher, dass Sie die richtigen Selenium-Optionen für Ihren Browser verwenden\n\n\u003ch2 id=\"headless\"\u003e 🤯 Kopflose Browser \u003c/h2\u003e\n\nKopfloses Browsen funktioniert nur in Chrome. Wenn Chrome verwendet wird, muss das `--headless`-Flag mithilfe der CLI hinzugefügt oder `headless` als Schlüsselargument an `upload_video` oder `upload_videos` übergeben werden.\n\n```python\nupload_video(..., headless=True)\nupload_videos(..., headless=True)\n```\n\n\u003ch2 id=\"initial-setup\"\u003e 🔨 Erstmalige Einrichtung\u003c/h2\u003e\n\n[WebDriverManager](https://bonigarcia.dev/webdrivermanager/) wird zur Verwaltung von Treiber-Versionen verwendet.\n\nBei der ersten Inbetriebnahme **kann** Sie möglicherweise aufgefordert werden, den richtigen Treiber für Ihren ausgewählten Browser zu installieren. Allerdings wird für **Chrome** und **Edge** der Treiber automatisch installiert.\n\n\u003ch2 id=\"examples\"\u003e ♻ Beispiele\u003c/h2\u003e\n\n- **[Grundlegendes Upload-Beispiel](examples/basic_upload.py):** Verwendet `upload_video`, um einen Beitrag zu machen.\n\n- **[Mehrere Videos auf einmal](examples/multiple_videos_at_once.py):** Lädt das gleiche Video mehrmals mit `upload_videos` hoch.\n\n- **[Serien-Upload-Beispiel](examples/series_upload.py):** Videos werden mit Hilfe von [Pandas](https://pandas.pydata.org) aus einer CSV-Datei gelesen. Ein Videoupload-Versuch wird gemacht und **nur wenn** er erfolgreich ist, wird das Video als hochgeladen markiert.\n\n\u003ch1 id=\"notes\"\u003e 📝 Notizen\u003c/h1\u003e\n\nDieser Bot ist nicht narrensicher. Obwohl ich noch kein offizielles Verbot erhalten habe, wird das Video nach zu vielen Uploads nicht hochgeladen. In Tests hat eine Wartezeit von mehreren Stunden dieses Problem behoben. Sehen Sie dies bitte mehr als einen geplanten Uploader für TikTok-Videos und nicht als einen Spam-Bot.\n\n\u003ch1 id=\"made-with\"\u003e Accounts erstellt mit \u003c/h1\u003e\n\n- [@C_Span](https://www.tiktok.com/@c_span?lang=en) - Ein Split-Screen-Kanal mit mobilen Spielen unten mit Clips vom C-Span YouTube Kanal\n- [@habit_track](https://www.tiktok.com/@habit_track?lang=en) - Ein Reddit-Bot, um zu sehen, welches SubReddit am viralsten auf TikTok ist\n\n\u003e Wenn Ihnen dieses Projekt gefällt, dann ⭐ es auf GitHub, um Ihre Unterstützung zu zeigen! ❤️\n\n[^1]: Wenn Sie an Hatch interessiert sind, schauen Sie sich die [Website](https://hatch.pypa.io/latest/build/) an\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwkaisertexas%2Ftiktok-uploader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwkaisertexas%2Ftiktok-uploader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwkaisertexas%2Ftiktok-uploader/lists"}