<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: ydtg1993</title>
    <description>The latest articles on DEV Community by ydtg1993 (@ydtg1993).</description>
    <link>https://dev.to/ydtg1993</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3991239%2F1c2e8727-1ee6-4d5c-bdb7-5ede02d76981.jpg</url>
      <title>DEV Community: ydtg1993</title>
      <link>https://dev.to/ydtg1993</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ydtg1993"/>
    <language>en</language>
    <item>
      <title>SWT (声文通) Local Offline Speech-to-Text Desktop Tool — Secure, Fast, No Data Upload</title>
      <dc:creator>ydtg1993</dc:creator>
      <pubDate>Thu, 09 Jul 2026 05:14:53 +0000</pubDate>
      <link>https://dev.to/ydtg1993/swt-sheng-wen-tong-local-offline-speech-to-text-desktop-tool-secure-fast-no-data-upload-1573</link>
      <guid>https://dev.to/ydtg1993/swt-sheng-wen-tong-local-offline-speech-to-text-desktop-tool-secure-fast-no-data-upload-1573</guid>
      <description>&lt;h2&gt;
  
  
  SWT (声文通)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnmsqnneorayiz77mzapt.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnmsqnneorayiz77mzapt.jpg" alt=" " width="308" height="173"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;SWT is a fully offline speech-to-text desktop application built on the FunASR speech recognition framework. All audio data is processed locally — no internet connection required, and nothing is uploaded to any server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Download
&lt;/h2&gt;

&lt;p&gt;
  &lt;a href="https://pan.baidu.com/s/1yiQSHFEzPXQIFAyLVLthaQ?pwd=vy9k" rel="noopener noreferrer"&gt;
    &lt;img width="800" alt="baidu download" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fp0-xtjj-private.juejin.cn%2Ftos-cn-i-73owjymdk6%2F1929fae19b884d7486c20a8c84b3dd17~tplv-73owjymdk6-jj-mark-v1%3A0%3A0%3A0%3A0%3A5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NjIzNjc1MTM4MTM0%3Aq75.awebp%3Fpolicy%3DeyJ2bSI6MywidWlkIjoiMjc2NzkwMzMyNzI4ODY2NiJ9%26rk3s%3Df64ab15b%26x-orig-authkey%3Df32326d3454f2ac7e96d3d06cdbb035152127018%26x-orig-expires%3D1784178678%26x-orig-sign%3DzWYCnP8IKE6r%252BF63z6tx8CvJg2o%253D" height="400"&gt;
  &lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Preview
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0gqxp3nkqnbjvrw2fds3.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0gqxp3nkqnbjvrw2fds3.gif" alt=" " width="479" height="311"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;File Transcription&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Import audio (MP3 / WAV / FLAC / …) or video (MP4 / MKV / …) files, auto-extract audio and output text&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Batch Processing&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Multi-file sequential transcription, stable and reliable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Multi-Model Support&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;6 built-in ASR models, one-click download &amp;amp; switch, CPU/GPU inference supported&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Multilingual&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Supports Chinese, English, Japanese, Korean, Cantonese, and more&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Result Export&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Export to TXT / JSON / SRT formats, ready for subtitles&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Speaker Diarization&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Experimental multi-speaker recognition (based on CAM++)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;VAD Voice Activity Detection&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;FSMN-VAD intelligent long audio segmentation, adjustable silence threshold and segment length&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Speech Enhancement&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AI denoising (FRCRN / DFSMN), echo cancellation (DFSMN-AEC), speech separation (MossFormer)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Post-Processing&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;CT-Transformer punctuation restoration, LLM AI correction of typos and grammar issues&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Built-in Models
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Size&lt;/th&gt;
&lt;th&gt;GPU Recommended&lt;/th&gt;
&lt;th&gt;CPU&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Qwen3-ASR (0.6B)&lt;/td&gt;
&lt;td&gt;~1.8 GB&lt;/td&gt;
&lt;td&gt;2GB+&lt;/td&gt;
&lt;td&gt;Smooth&lt;/td&gt;
&lt;td&gt;Lightweight multilingual, entry-level&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Qwen3-ASR (1.7B)&lt;/td&gt;
&lt;td&gt;~3.5 GB&lt;/td&gt;
&lt;td&gt;6GB+&lt;/td&gt;
&lt;td&gt;Runs but slow&lt;/td&gt;
&lt;td&gt;High-accuracy Chinese recognition, built-in punctuation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SenseVoiceSmall&lt;/td&gt;
&lt;td&gt;~0.5 GB&lt;/td&gt;
&lt;td&gt;Not required&lt;/td&gt;
&lt;td&gt;Smooth&lt;/td&gt;
&lt;td&gt;Ultra-lightweight, multilingual + emotion/event detection&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Whisper-large-v3&lt;/td&gt;
&lt;td&gt;~3.1 GB&lt;/td&gt;
&lt;td&gt;8GB+&lt;/td&gt;
&lt;td&gt;Not recommended&lt;/td&gt;
&lt;td&gt;OpenAI flagship multilingual model&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;faster-whisper-tiny&lt;/td&gt;
&lt;td&gt;~0.2 GB&lt;/td&gt;
&lt;td&gt;Not required&lt;/td&gt;
&lt;td&gt;Smooth&lt;/td&gt;
&lt;td&gt;CTranslate2 accelerated, extremely lightweight&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fun-ASR-Nano&lt;/td&gt;
&lt;td&gt;~1.0 GB&lt;/td&gt;
&lt;td&gt;2GB+&lt;/td&gt;
&lt;td&gt;Runnable&lt;/td&gt;
&lt;td&gt;FunAudioLLM lightweight ASR, Chinese optimized&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  System Requirements
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Requirement&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;OS&lt;/td&gt;
&lt;td&gt;Windows 10 / Windows 11&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Runtime&lt;/td&gt;
&lt;td&gt;Python 3.10+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hardware&lt;/td&gt;
&lt;td&gt;CPU-capable; NVIDIA GPU acceleration supported (CUDA 12.1+)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Storage&lt;/td&gt;
&lt;td&gt;~0.2–3.5 GB per model; 10 GB free disk space recommended&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dependencies&lt;/td&gt;
&lt;td&gt;ffmpeg (required for video transcription; optional for audio-only)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Quick Start
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Clone and Enter Project
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://gitee.com/ydtg1993/swt.git
&lt;span class="nb"&gt;cd &lt;/span&gt;swt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Create Virtual Environment and Install Dependencies
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;-m&lt;/span&gt; venv .venv
.venv&lt;span class="se"&gt;\S&lt;/span&gt;cripts&lt;span class="se"&gt;\a&lt;/span&gt;ctivate
pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Download Models
&lt;/h3&gt;

&lt;p&gt;At least one ASR model must be downloaded on first run. After launching the application, go to &lt;strong&gt;Settings&lt;/strong&gt; → &lt;strong&gt;Model Download Manager&lt;/strong&gt; and select the desired models to download.&lt;/p&gt;

&lt;p&gt;Models will be saved in the &lt;code&gt;llm/&lt;/code&gt; directory.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Launch Application
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python main.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: Transcribing video files requires installing &lt;a href="https://ffmpeg.org/download.html" rel="noopener noreferrer"&gt;ffmpeg&lt;/a&gt; and adding it to your system PATH.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Project Structure
&lt;/h2&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;swt/
├── main.py                  # Application entry point
├── requirements.txt         # Python dependencies
├── LICENSE                  # MIT License
├── config/                  # Configuration (YAML + Pydantic Settings)
├── core/                    # Core engine (ASR, VAD, subtitle generation)
├── models/                  # Data models (SQLAlchemy)
├── ui/                      # GUI layer (PySide6 + QFluentWidgets)
│   ├── pages/               # Page components
│   └── widgets/             # Reusable components
├── workers/                 # Background worker threads (QRunnable)
├── utils/                   # Utility functions
├── llm/                     # Model storage directory
├── resources/               # Icons, images
├── scripts/                 # Model download helper scripts
├── tests/                   # Tests
└── logs/                    # Logs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;




&lt;h2&gt;
  
  
  Tech Stack
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GUI&lt;/td&gt;
&lt;td&gt;PySide6 + QFluentWidgets&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ASR Engine&lt;/td&gt;
&lt;td&gt;FunASR (Qwen3-ASR, SenseVoiceSmall, FSMN-VAD)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Database&lt;/td&gt;
&lt;td&gt;SQLite + SQLAlchemy 2.x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Configuration&lt;/td&gt;
&lt;td&gt;YAML + QSettings&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Logging&lt;/td&gt;
&lt;td&gt;loguru&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Task System&lt;/td&gt;
&lt;td&gt;QThreadPool + QRunnable + Signal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;File Handling&lt;/td&gt;
&lt;td&gt;pathlib&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Packaging&lt;/td&gt;
&lt;td&gt;PyInstaller&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Development
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install dependencies&lt;/span&gt;
pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt

&lt;span class="c"&gt;# Run application&lt;/span&gt;
python main.py

&lt;span class="c"&gt;# Run tests&lt;/span&gt;
pytest tests/ &lt;span class="nt"&gt;-v&lt;/span&gt;

&lt;span class="c"&gt;# Package as executable&lt;/span&gt;
pyinstaller main.spec
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Third-Party Licenses
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Project&lt;/th&gt;
&lt;th&gt;License&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/modelscope/FunASR" rel="noopener noreferrer"&gt;FunASR&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;MIT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/QwenLM/Qwen3-ASR" rel="noopener noreferrer"&gt;Qwen3-ASR&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Apache 2.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/FunAudioLLM/SenseVoice" rel="noopener noreferrer"&gt;SenseVoice&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Apache 2.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/SYSTRAN/faster-whisper" rel="noopener noreferrer"&gt;faster-whisper&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;MIT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://pypi.org/project/PySide6/" rel="noopener noreferrer"&gt;PySide6&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;LGPL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/zhiyiYo/PyQt-Fluent-Widgets" rel="noopener noreferrer"&gt;QFluentWidgets&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;GPL / Commercial&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://ffmpeg.org/" rel="noopener noreferrer"&gt;ffmpeg&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;LGPL / GPL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/modelscope/modelscope" rel="noopener noreferrer"&gt;ModelScope&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Apache 2.0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  License
&lt;/h2&gt;

&lt;p&gt;SWT (声文通) is open-sourced under the &lt;a href="https://dev.toLICENSE"&gt;MIT License&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Copyright © 2026 SWT (声文通)&lt;/p&gt;

&lt;p&gt;Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files, to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Project Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Gitee&lt;/strong&gt;: &lt;a href="https://gitee.com/ydtg1993/swt" rel="noopener noreferrer"&gt;https://gitee.com/ydtg1993/swt&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;
  Made with ❤️ by ydtg1993
&lt;/p&gt;

</description>
      <category>ai</category>
      <category>softwaredevelopment</category>
      <category>asr</category>
    </item>
    <item>
      <title>I turned Telegram into a desktop cloud drive — free, unlimited, open source</title>
      <dc:creator>ydtg1993</dc:creator>
      <pubDate>Thu, 18 Jun 2026 16:12:06 +0000</pubDate>
      <link>https://dev.to/ydtg1993/i-turned-telegram-into-a-desktop-cloud-drive-free-unlimited-open-source-2beo</link>
      <guid>https://dev.to/ydtg1993/i-turned-telegram-into-a-desktop-cloud-drive-free-unlimited-open-source-2beo</guid>
      <description>&lt;p&gt;Over the past few weeks I built CraftCloud — a desktop app that turns Telegram into a fully-featured cloud drive. Think Google Drive, but free and unlimited, running on Telegram's infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh947x6fuhko6yeyl0ge8.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh947x6fuhko6yeyl0ge8.gif" alt=" "&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzispm1dbc17jtyndm2i6.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzispm1dbc17jtyndm2i6.gif" alt=" "&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa3px7qb9434holpe16p8.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa3px7qb9434holpe16p8.gif" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What it does
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Full cloud-drive UI — folder tree, list/icon views, drag-and-drop&lt;/li&gt;
&lt;li&gt;Upload files up to 4GB each, no total storage limit&lt;/li&gt;
&lt;li&gt;Online preview for images, audio (with seek bar), video, text&lt;/li&gt;
&lt;li&gt;Auto-sync local folders to Telegram directories on a schedule&lt;/li&gt;
&lt;li&gt;Fuzzy search with Whoosh full-text indexing + jieba Chinese word segmentation&lt;/li&gt;
&lt;li&gt;6 languages, system tray, dark/light themes&lt;/li&gt;
&lt;li&gt;Task queue with persistent history (SQLite + SQLAlchemy ORM)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Tech stack
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Tech&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GUI&lt;/td&gt;
&lt;td&gt;PySide6 ≥6.5 + PySide6-Fluent-Widgets&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Telegram API&lt;/td&gt;
&lt;td&gt;Telethon ≥1.36&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Database&lt;/td&gt;
&lt;td&gt;SQLAlchemy 2.x ORM + SQLite (WAL mode)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Config&lt;/td&gt;
&lt;td&gt;Pydantic ≥2.0 + PyYAML&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Logging&lt;/td&gt;
&lt;td&gt;loguru&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Search&lt;/td&gt;
&lt;td&gt;Whoosh + jieba&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Caching&lt;/td&gt;
&lt;td&gt;diskcache&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;p&gt;&lt;strong&gt;What my project does&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Over the past few weeks I built &lt;strong&gt;CraftCloud&lt;/strong&gt; — a desktop app that turns Telegram into a fully-featured cloud drive. Think Google Drive, but free and (virtually) unlimited, running on Telegram's infrastructure. It gives you a native desktop interface to upload, download, search, and manage files directly through your Telegram account, with automatic sync and full local caching.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Target audience&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
This project is aimed at two main groups:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Telegram power users&lt;/strong&gt; who want unlimited, zero-cost cloud storage without monthly subscriptions (perfect for backing up photos, videos, and documents).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Python developers / hobbyists&lt;/strong&gt; looking for a real-world reference on building a complex async GUI desktop app with Telethon, PySide6, and advanced thread/event-loop concurrency control.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's currently a &lt;strong&gt;side-project / production-ready-for-personal-use&lt;/strong&gt; tool (I use it daily), but it's stable enough for anyone comfortable with self-hosting their own cloud solution on Telegram.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Comparative analysis (vs. existing alternatives)&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Alternative&lt;/th&gt;
&lt;th&gt;How CraftCloud differs&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Google Drive / Dropbox / iCloud&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;❌ No recurring subscription fees. Telegram offers &lt;strong&gt;2GB per file&lt;/strong&gt; and effectively unlimited total storage (based on your account). Data is transmitted via Telegram's MTProto encryption.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Rclone (Telegram backend)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅ CraftCloud provides a &lt;strong&gt;native, polished desktop GUI&lt;/strong&gt; (Windows 11 fluent design) instead of a CLI. Drag-and-drop, visual file management, and built-in search make it accessible to non-developers.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Telegram Desktop native storage&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✅ Dedicated file manager view with advanced features like full-text search (Whoosh + jieba), WAL-mode SQLite for reliability, and automatic background sync.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Key trade-offs to consider:&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;⚠️ Speed is limited by Telegram's datacenter rate limits (not ideal for massive 100GB+ daily transfers).
&lt;/li&gt;
&lt;li&gt;⚠️ It relies on Telegram's server-side encryption (MTProto), not client-side zero-knowledge E2EE—so treat it as a convenient backup tool rather than a secure vault for highly sensitive data.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Links
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/ydtg1993/craft_cloud" rel="noopener noreferrer"&gt;github.com/ydtg1993/craft_cloud&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://craftcloud.cc.cd/" rel="noopener noreferrer"&gt;craftcloud.cc.cd&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;MIT licensed. Stars appreciated if you find it useful. Happy to answer questions about the architecture or the AI-assisted workflow.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>telegram</category>
    </item>
  </channel>
</rss>
