<?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: Safiyu Vattaparambil</title>
    <description>The latest articles on DEV Community by Safiyu Vattaparambil (@safiyuvs).</description>
    <link>https://dev.to/safiyuvs</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3667047%2F81b7554c-3cd7-488f-ae0d-8d4f43d393a2.jpg</url>
      <title>DEV Community: Safiyu Vattaparambil</title>
      <link>https://dev.to/safiyuvs</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/safiyuvs"/>
    <language>en</language>
    <item>
      <title>Telefetchr: The Ultimate Self-Hosted Telegram Downloader</title>
      <dc:creator>Safiyu Vattaparambil</dc:creator>
      <pubDate>Wed, 17 Dec 2025 13:34:08 +0000</pubDate>
      <link>https://dev.to/safiyuvs/telefetchr-the-ultimate-self-hosted-telegram-downloader-3hi1</link>
      <guid>https://dev.to/safiyuvs/telefetchr-the-ultimate-self-hosted-telegram-downloader-3hi1</guid>
      <description>&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.amazonaws.com%2Fuploads%2Farticles%2F3kknt3pqsro73lf9wamn.png" 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.amazonaws.com%2Fuploads%2Farticles%2F3kknt3pqsro73lf9wamn.png" alt=" " width="800" height="373"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Have you ever tried to backup files from a Telegram channel or download a large series of videos? The native Telegram client is great for chatting, but when it comes to bulk file management, it leaves a lot to be desired. Single-threaded downloads, no advanced filtering, and the need to keep your desktop client open can be a pain.&lt;/p&gt;

&lt;p&gt;Enter Telefetchr: a self-hosted, Dockerized web application designed to supercharge your Telegram downloads.&lt;/p&gt;

&lt;p&gt;✨ Key Features&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Parallel "Chunk &amp;amp; Merge" Downloading&lt;/strong&gt;&lt;br&gt;
This is the secret sauce. Telegram's API allows searching for files, but downloading them sequentially can be slow due to network latency and protocol overhead.&lt;/p&gt;

&lt;p&gt;Telefetchr implements a Chunk &amp;amp; Merge strategy:&lt;/p&gt;

&lt;p&gt;Files are split into logical 4MB chunks.&lt;br&gt;
Multiple asynchronous workers download these chunks in parallel to separate temporary files (e.g., video.mp4.part1, video.mp4.part2).&lt;br&gt;
Non-blocking I/O: I use aiofiles to write data without blocking the event loop, ensuring the UI remains responsive.&lt;br&gt;
Once finished, the parts are merged instantly into the final file.&lt;br&gt;
This approach maximizes your bandwidth and solves "disk contention" issues common with simple parallel writers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Advanced Filtering&lt;/strong&gt;&lt;br&gt;
Forget scrolling for hours. Telefetchr indexes your channel and lets you filter by:&lt;/p&gt;

&lt;p&gt;File Type: Video, Audio, Photo, Document.&lt;br&gt;
Size: Min/Max size constraints (e.g., "&amp;gt; 1GB").&lt;br&gt;
Date: Filtering by upload time-frame.&lt;br&gt;
Search: Full-text search on file captions and names.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Smart Authentication&lt;/strong&gt;&lt;br&gt;
Security is key for self-hosting. Telefetchr comes with:&lt;/p&gt;

&lt;p&gt;JWT Authentication: Secure login for external access.&lt;br&gt;
Trusted Sub-net Bypass: Configure your home network (e.g., 192.168.1.0/24) as "trusted". Devices on your WiFi get instant Admin access without typing passwords, while external access remains locked down.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Docker First&lt;/strong&gt;&lt;br&gt;
Deploy anywhere. The entire stack (Fast-API back-end + Vanilla JS front-end) is packaged into a lightweight Docker container.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deployment&lt;/strong&gt;: via docker compose stack&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt; &lt;span class="na"&gt;telefetchr&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;safiyu/telefetchr:latest&lt;/span&gt;
    &lt;span class="na"&gt;container_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;telefetchr&lt;/span&gt;
    &lt;span class="na"&gt;volumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;./downloads:/app/downloads&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;./sessions:/app/sessions&lt;/span&gt;
    &lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;PYTHONUNBUFFERED=1&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;API_ID=12345&lt;/span&gt; &lt;span class="c1"&gt;# your api_id from my.telegram.org&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;API_HASH=saasdasdf12324&lt;/span&gt; &lt;span class="c1"&gt;# your api_hash from my.telegram.org&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;PHONE_NUMBER=12345&lt;/span&gt; &lt;span class="c1"&gt;# without + sign&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;MAX_CONCURRENT_DOWNLOADS=3&lt;/span&gt; &lt;span class="c1"&gt;# optional, default is 3&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;SECRET_KEY=your_generated_secret_key_here&lt;/span&gt; &lt;span class="c1"&gt;# Generate secret: python -c "import secrets; print(secrets.token_urlsafe(32))"&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;ADMIN_USERNAME=yourusername&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;ADMIN_PASSWORD=yourpassword&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;ACCESS_TOKEN_EXPIRE_MINUTES=1440&lt;/span&gt;  &lt;span class="c1"&gt;# 24 hours&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;PUID=1000&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;PGID=1000&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;TRUSTED_SUBNETS=192.168.1.0/24&lt;/span&gt;  &lt;span class="c1"&gt;# Optional auth bypass&lt;/span&gt;
    &lt;span class="na"&gt;restart&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;always&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Please report bugs and issues at &lt;a href="https://github.com/safiyu/telefetchr" rel="noopener noreferrer"&gt;https://github.com/safiyu/telefetchr&lt;/a&gt;&lt;/p&gt;

</description>
      <category>tooling</category>
      <category>docker</category>
      <category>telegram</category>
      <category>downloader</category>
    </item>
  </channel>
</rss>
