{"id":50537855,"url":"https://github.com/kamylwnb/FlipTok_Live_Chat","last_synced_at":"2026-07-08T11:00:30.915Z","repository":{"id":353664550,"uuid":"1220392260","full_name":"kamylwnb/FlipTok_Live_Chat","owner":"kamylwnb","description":null,"archived":false,"fork":false,"pushed_at":"2026-05-24T19:31:02.000Z","size":84,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-05-24T21:09:31.558Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","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/kamylwnb.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-24T21:15:49.000Z","updated_at":"2026-05-24T19:31:05.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/kamylwnb/FlipTok_Live_Chat","commit_stats":null,"previous_names":["kamylwnb/tiktok_chat_flipper"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/kamylwnb/FlipTok_Live_Chat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kamylwnb%2FFlipTok_Live_Chat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kamylwnb%2FFlipTok_Live_Chat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kamylwnb%2FFlipTok_Live_Chat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kamylwnb%2FFlipTok_Live_Chat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kamylwnb","download_url":"https://codeload.github.com/kamylwnb/FlipTok_Live_Chat/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kamylwnb%2FFlipTok_Live_Chat/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35262336,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-08T02:00:06.796Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2026-06-03T18:00:23.219Z","updated_at":"2026-07-08T11:00:30.893Z","avatar_url":"https://github.com/kamylwnb.png","language":"C","funding_links":[],"categories":["Bluetooth"],"sub_categories":[],"readme":"# FlipTok Live - Flipper Zero Display\n\n## Real-time FlipTok Live Chat Monitor for Flipper Zero\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"screenshots/splash.png\" alt=\"Screenshot 1\" width=\"250\"\u003e\n    \u003cimg src=\"screenshots/waiting.png\" alt=\"Screenshot 2\" width=\"250\"\u003e\n    \u003cimg src=\"screenshots/chat.png\" alt=\"Screenshot 3\" width=\"250\"\u003e\n\u003c/div\u003e\n\nDisplay your TikTok Live chat, gifts, and follows in real-time on your Flipper Zero via Bluetooth Low Energy (BLE). The Python server runs on your PC, connects to the TikTok Live stream, and forwards all events to the Flipper Zero wirelessly.\n\n## Features Overview\n\n**Live Events Display**\n\n* **Chat comments:** Username and full message shown with word-wrap across multiple lines.\n* **Gifts:** LED notification (red), no screen clutter.\n* **Follows:** Shown on screen with blue LED indicator.\n* **Likes:** Silent LED notification only.\n\n**Smart Text Rendering**\n\n* Automatic word-wrap based on screen math (128x64 px, FontKeyboard).\n* Up to 6 lines of content visible at once.\n* Scrollable message history (up to 8 messages stored).\n* Separator lines between messages.\n\n**Notifications**\n\n* Green LED + beep on new chat message.\n* Red LED on gift.\n* Blue LED on follow.\n* Backlight turns on automatically on new event.\n\n**Python Server (GUI)**\n\n* Tkinter GUI - no terminal needed.\n* Optional EulerStream API key support for improved stream access.\n* Checkbox to disable Flipper Zero — monitor TikTok chat without the device.\n* Text-to-Speech (TTS) - reads chat aloud via Windows SAPI.\n* Voice selection and speed control.\n* Deduplication — no repeated messages within 3 seconds.\n* 3-second backlog discard on connect.\n* Auto-reconnect to Flipper Zero on disconnect.\n* Keepalive packets every 15 seconds to prevent Flipper timeout.\n* Auto-install of dependencies (TikTokLive, bleak) on first run.\n\n**Connectivity**\n\n* Bluetooth Low Energy (BLE) serial profile.\n* 83-byte binary packets: type + username + message.\n* Auto-discovery of Flipper Zero by BLE device name prefix.\n\n## Installation Guide\n\n**Prerequisites**\n\n* Flipper Zero with f7 firmware\n* TikTok account with an active Live stream to monitor\n* Python 3.x installed on PC\n\n**1. Compile and Install Flipper App**\n\nNavigate to the flipperzero-firmware directory and compile:\n\n```bash\n./fbt COMPACT=1 DEBUG=0 launch APPSRC=applications_user/fliptok_live_chat\n```\n\nOr manually copy the compiled `.fap` file from `build/f7-firmware-C/.extapps/fliptok_live_chat.fap` to `/ext/apps/Bluetooth/` on your Flipper Zero.\n\n**2. Run the Python Server**\n\n```bash\npython tiktok_server_gui.py\n```\n\nDependencies (`TikTokLive`, `bleak`) are installed automatically on first run.\n\n**3. Connect**\n\n1. On Flipper: open **FlipTok Live** app — it starts advertising as `FlipTok XXXX`\n2. In the Python GUI: enter the TikTok username (without `@`) and click **START**\n3. The server scans for the Flipper, connects via BLE, then joins the live stream\n4. Messages appear on the Flipper screen in real-time\n\n## Usage Instructions\n\n**On Flipper Zero:**\n\n1. Navigate to: Apps -\u003e Bluetooth -\u003e FlipTok Live\n2. Splash screen shows for 2.5 seconds\n3. Status shows \"Waiting for connection...\"\n4. LED and beep on every new event\n\n**On PC:**\n\n1. Launch `tiktok_server_gui.py`\n2. Enter TikTok username (without @)\n3. Optionally enter EulerStream API key\n4. Check or uncheck \"Send to Flipper Zero\" as needed\n5. Click **START**\n\n## Flipper Controls\n\n| Button | Action |\n|--------|--------|\n| Up | Scroll to older messages |\n| Down | Scroll to newer messages |\n| OK | Jump to newest message |\n| Back | Exit app |\n\n## Message Types\n\n| Prefix | Event |\n|--------|-------|\n| *(none)* | Chat comment |\n| `[G]` | Gift |\n| `[F]` | New follower |\n\n## Data Flow\n\n```\nTikTok Servers\n      |\n      v  (TikTokLive Python lib)\ntiktok_server_gui.py  \u003c-- runs on your PC\n      |\n      v  (BLE / Bluetooth serial)\nFlipper Zero  \u003c-- fliptok_live_chat FAP\n```\n\n## Technical Specifications\n\nBLE Protocol (83-byte packet):\n\n```c\ntypedef struct __attribute__((packed)) {\n    uint8_t type;              // 0=chat, 1=like, 2=gift, 3=follow\n    char    username[17];      // null-terminated, max 16 chars\n    char    message[65];       // null-terminated, max 64 chars\n} FlipTokMessage;\n```\n\nBLE:\n\n* Service UUID: `8fe5b3d5-2e7f-4a98-2a48-7acc60fe0000`\n* RX UUID: `19ed82ae-ed21-4c9d-4145-228e62fe0000`\n* Device name prefix: `FlipTok`\n\nScreen layout (128x64 px):\n\n* Header bar: 10 px (white on black)\n* Chat area: 53 px = 6 line slots x 8 px (FontKeyboard)\n* Characters per line: 20 (123 px usable / 6 px per char)\n* Scrollbar: 3 px right edge\n\nPerformance:\n\n* Refresh rate: 100ms (10 Hz)\n* Message buffer: 8 messages (circular)\n* Stack size: 2 KB\n\n## Troubleshooting\n\n* **Flipper not found** - Ensure FlipTok Live app is running on Flipper, check PC Bluetooth is enabled\n* **TikTok connection error** - Try adding a free EulerStream API key at eulerstream.com\n* **Messages not appearing** - Check that the username is correct and the stream is currently live\n* **Garbled characters** - Non-ASCII characters (emoji, accented letters) are automatically transliterated or replaced with `?`\n\n## Author\n\nDr.Mosfet - Created for the TikTok Live and Flipper Zero communities.\n\nBLE Serial helper based on work by Willy-JL from [Xtreme-Apps](https://github.com/Flipper-XFW/Xtreme-Apps).\n\n## License\n\nMIT License - see LICENSE file for details.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkamylwnb%2FFlipTok_Live_Chat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkamylwnb%2FFlipTok_Live_Chat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkamylwnb%2FFlipTok_Live_Chat/lists"}