[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-92696":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":13,"contributorsCount":13,"subscribersCount":13,"size":13,"stars1d":13,"stars7d":13,"stars30d":15,"stars90d":13,"forks30d":13,"starsTrendScore":13,"compositeScore":16,"rankGlobal":10,"rankLanguage":10,"license":17,"archived":18,"fork":18,"defaultBranch":19,"hasWiki":20,"hasPages":18,"topics":21,"createdAt":10,"pushedAt":10,"updatedAt":22,"readmeContent":23,"aiSummary":24,"trendingCount":13,"starSnapshotCount":13,"syncStatus":25,"lastSyncTime":26,"discoverSource":27},92696,"craft_cloud","ydtg1993\u002Fcraft_cloud","ydtg1993","CraftCloud turns Telegram into unlimited cloud storage","",null,"Python",60,0,53,6,40.6,"MIT License",false,"main",true,[],"2026-07-22 04:02:06","\u003Cp align=\"left\">\n    \u003Cspan>\n        \u003Cb>English\u003C\u002Fb>\n    \u003C\u002Fspan>\n    \u003Cspan> • \u003C\u002Fspan>\n    \u003Ca href=\"readme-CH.md\">\n        中文\n    \u003C\u002Fa>\n\u003C\u002Fp>\n\n# CraftCloud v2.8.1 🌐 [craftcloud.cc.cd](https:\u002F\u002Fcraftcloud.cc.cd\u002F)\n\n[![Python Version](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.10+-blue.svg)](https:\u002F\u002Fwww.python.org\u002F)\n[![PySide6](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FGUI-PySide6%2BQFluentWidgets-green)](https:\u002F\u002Fdoc.qt.io\u002Fqtforpython-6\u002F)\n[![Telegram API](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTelegram-Telethon-0088cc)](https:\u002F\u002Ftelethon.dev\u002F)\n[![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-yellow.svg)](LICENSE.txt)\n\n**CraftCloud** turns Telegram into unlimited cloud storage. It provides a cloud‑drive‑like desktop interface with file upload, download, online preview, directory management, and automatic local folder sync. The app minimizes to the system tray and runs background sync tasks without interrupting your workflow.\n\n---\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fydtg1993\u002Fcraft_cloud\u002Freleases\" target=\"_blank\">\n    \u003Cimg align=\"center\" alt=\"download\" src=\"https:\u002F\u002Fnickemanarin.github.io\u002FScreenToGif-Website\u002Fwiki\u002Fdownload-now.png\"\u002F>\n  \u003C\u002Fa>\n\u003C\u002Fp>\n\n---\n\n## Preview\n\n\u003Ctable>\n  \u003Ctr>\n    \u003Ctd align=\"center\">\u003Cb>Login\u003C\u002Fb>\u003C\u002Ftd>\n    \u003Ctd align=\"center\">\u003Cb>File Operations\u003C\u002Fb>\u003C\u002Ftd>\n    \u003Ctd align=\"center\">\u003Cb>Auto Sync\u003C\u002Fb>\u003C\u002Ftd>\n  \u003C\u002Ftr>\n  \u003Ctr>\n    \u003Ctd>\u003Cimg width=\"300\" src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fgh\u002Fydtg1993\u002Fcraft_cloud@main\u002Fdocs\u002Ftutorial\u002Flogin_tutorial.gif\"\u002F>\u003C\u002Ftd>\n    \u003Ctd>\u003Cimg width=\"300\" src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fgh\u002Fydtg1993\u002Fcraft_cloud@main\u002Fdocs\u002Ftutorial\u002Foperate_tutorial.gif\"\u002F>\u003C\u002Ftd>\n    \u003Ctd>\u003Cimg width=\"300\" src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fgh\u002Fydtg1993\u002Fcraft_cloud@main\u002Fdocs\u002Ftutorial\u002Fsync_tutorial.gif\"\u002F>\u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n---\n\n> To obtain Telegram API credentials: visit [my.telegram.org](https:\u002F\u002Fmy.telegram.org\u002F), create an application, and get your `api_id` and `api_hash`.\n\n## Features\n\n- 🔐 **Telegram Login**\n  QR code login via API ID \u002F API Hash. Session persistence, multi-account support, logout anytime.\n\n- 🌐 **Multi-Language**\n  Supports 6 languages: 中文, English, Français, Deutsch, Русский, 한국어. Switch at runtime in Settings.\n\n- 📁 **File Management**\n  List \u002F Icon dual‑view, drag‑and‑drop move (cross‑directory), batch delete\u002Frename\u002Fmove, property inspection. Right‑click context menu for upload, download, new folder, etc.\n\n- 👀 **File Preview**\n  Online preview for images, audio (with seek bar), video, and text files. Files larger than 100 MB cannot be previewed.\n\n- 📤 **Upload & Download**\n  Batch upload files or folders with configurable retry (default 3). Real‑time progress display. All tasks run asynchronously in the background via a shared worker thread.\n\n- 🔍 **Smart Search**\n  Fuzzy filename search. For datasets \u003C 10k files a simple SQL `LIKE` query is used; beyond that, Whoosh full‑text indexing with jieba Chinese word segmentation is enabled automatically.\n\n- 📂 **Directory & Channel Binding**\n  App directories auto‑bind to Telegram channels. Multi‑level subdirectories supported. If a channel becomes invalid, the app intelligently rebuilds the binding.\n\n- 🔄 **Automatic Sync**\n  Add local folders and schedule sync to a Telegram directory at minute \u002F hour \u002F day intervals. Sync runs only when the window is minimized to the tray; it pauses automatically when restored. During sync, local‑remote directory structure is kept consistent.\n\n- 📊 **Upload Limits**\n  Optional daily upload size \u002F file count limits, counted in UTC+8 (Beijing time). Current usage vs. limit displayed in the bottom status bar of the home page. When disabled, limits show ∞.\n\n- 🧩 **Task Queue**\n  Persistent task history table showing upload \u002F download progress and sync status. Records survive app restarts.\n\n- 🖥️ **System Tray**\n  Close to tray with sync auto‑resume. Right‑click menu: \"Open Cloud\" \u002F \"Exit\". Double‑click restores the window.\n\n- 🎨 **Modern Interface**\n  Built with QFluentWidgets, supporting dark \u002F light themes. Auto‑sync folders are marked with a special icon in the directory tree.\n\n- 📝 **Logging System**\n  Structured logging via loguru — console + daily rotating files, kept for 7 days. Telethon session noise is filtered.\n\n---\n\n## Architecture\n\n```\nmain.py          →  Entry point, config init, login \u002F main window flow\ncore\u002F            →  Infrastructure (config, DB engine, worker thread, task routing)\nmodel\u002F           →  Data layer (SQLAlchemy ORM models + repositories)\nservices\u002F        →  Business logic (upload, download, search, sync, file CRUD)\nview\u002F            →  UI layer (PySide6 + QFluentWidgets, signals‑driven)\n```\n\nThe app uses a **single shared Telegram client** (`TgWorkerThread`) — one thread, one event loop, one `Telethon` client. All operations (upload \u002F download \u002F rename \u002F delete \u002F preview) queue through it via `asyncio.run_coroutine_threadsafe()`, with per‑operation‑type `asyncio.Semaphore` concurrency control.\n\n## Tech Stack\n\n| Category | Library |\n|----------|---------|\n| GUI | PySide6 ≥6.5, PySide6-Fluent-Widgets ≥1.11 |\n| Telegram | Telethon ≥1.36, cryptg ≥0.4 |\n| Database | SQLAlchemy ≥2.0 (ORM), SQLite 3 (WAL mode) |\n| Config | Pydantic ≥2.0, PyYAML ≥6.0 |\n| Logging | loguru ≥0.7 |\n| Search | Whoosh ≥2.7, jieba ≥0.42 |\n| Caching | diskcache ≥5.0 |\n| Imaging | Pillow ≥9.0, qrcode ≥7.4 |\n| Misc | numpy \u003C2 |\n\n## Quick Start\n\n```bash\n# Install dependencies\npip install -r requirements.txt\n\n# Run\npython main.py\n```\n\n---\n\n## License\n\nThis project is licensed under the MIT License. See [LICENSE.txt](LICENSE.txt) for details.\n\nWhen using Telegram to store files, please comply with Telegram's Terms of Service and applicable laws. The developer assumes no responsibility for data loss or account risks.\n\n---\n\n## Contributing\n\nIssues and Pull Requests are welcome.\n\n**Thank you for using CraftCloud!**\n","CraftCloud 是一款将 Telegram 用作无限云存储后端的桌面客户端。它基于 Telethon 实现 Telegram 账户登录与文件管理，提供类网盘的图形界面（PySide6 + QFluentWidgets），支持文件上传\u002F下载、目录结构映射、多格式在线预览（图片\u002F音视频\u002F文本）、模糊搜索（含中文分词）、本地文件夹自动双向同步，并最小化至系统托盘后台运行。适用于个人用户利用 Telegram 免费大容量存储空间进行轻量级文件备份、跨设备同步或私有资料归档，无需自建服务器或依赖第三方云服务。",2,"2026-07-10 02:30:10","CREATED_QUERY"]