<?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: Aashish Kumar Mahato</title>
    <description>The latest articles on DEV Community by Aashish Kumar Mahato (@aashish124).</description>
    <link>https://dev.to/aashish124</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%2F4151034%2Fbf412bbf-1063-4e50-9f2b-972b18ac2364.jpeg</url>
      <title>DEV Community: Aashish Kumar Mahato</title>
      <link>https://dev.to/aashish124</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aashish124"/>
    <language>en</language>
    <item>
      <title>I built a tool that moves your Google Drive files between accounts. Here's how I made it safe enough to trust.</title>
      <dc:creator>Aashish Kumar Mahato</dc:creator>
      <pubDate>Fri, 02 Oct 2026 18:25:22 +0000</pubDate>
      <link>https://dev.to/aashish124/i-built-a-tool-that-moves-your-google-drive-files-between-accounts-heres-how-i-made-it-safe-3lla</link>
      <guid>https://dev.to/aashish124/i-built-a-tool-that-moves-your-google-drive-files-between-accounts-heres-how-i-made-it-safe-3lla</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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft2xbndfi17775tr3ulqj.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft2xbndfi17775tr3ulqj.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
My main Google account hit the 15GB free limit while my alt accounts sat empty. So I built Spillover — an open-source tool that rebalances your Google storage across your own accounts, running entirely on your machine.&lt;/p&gt;

&lt;p&gt;But here's the thing about building a tool that moves people's files: if it loses even one file, nobody will ever trust it again. Safety wasn't a feature — it was the whole design. Here's how I layered it.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Dry-run by default
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;spillover run&lt;/code&gt; only ever &lt;em&gt;previews&lt;/em&gt; the plan. Nothing moves until you pass &lt;code&gt;--execute&lt;/code&gt; — and even then it asks for confirmation. The default path is the safe path; destruction requires intent, twice.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Verify-before-trash
&lt;/h2&gt;

&lt;p&gt;This is the core guarantee: a source file is trashed &lt;strong&gt;only after&lt;/strong&gt; the destination copy's SHA-256 hash matches the downloaded bytes. The pipeline is download → hash → upload → verify → trash, in that order, always. Hash mismatch? The source stays untouched and the move is logged as failed. There is no code path where the original is touched before the copy is proven identical.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Trash, never delete
&lt;/h2&gt;

&lt;p&gt;Even after verification, originals go to the source account's trash — not permanent deletion. That's a 30-day undo window, courtesy of Google. If something ever looks wrong, you can pull it straight back out.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Crash-safe resume
&lt;/h2&gt;

&lt;p&gt;Every file is tracked as a transaction: &lt;code&gt;pending → in_progress → done/failed&lt;/code&gt;, with the last completed stage recorded. If the run dies halfway — killed process, dead laptop, dropped network — &lt;code&gt;spillover resume&lt;/code&gt; continues from the first unfinished stage. A destination copy that was already uploaded and verified is never re-uploaded.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. A permanent local ledger
&lt;/h2&gt;

&lt;p&gt;Every move (done, failed, or skipped) lands in a local SQLite ledger: filename, size, hash, source → destination. Months later you can run &lt;code&gt;spillover find vacation.mp4&lt;/code&gt; and know exactly where it went. No cloud, no account — just a file on your machine.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Guardrails around the edges
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;1GB safety buffer per account&lt;/strong&gt; — a destination is never filled to the brim.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shared files skipped by default&lt;/strong&gt; — moving a file you don't own breaks share links and strands collaborators, so they're flagged at plan time and skipped at run time unless you explicitly opt in.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Narrow OAuth scopes&lt;/strong&gt; — Drive plus the Photos &lt;em&gt;picker&lt;/em&gt; scope only. The picker exposes solely the items you select, never your whole library. No Gmail, no contacts, nothing else.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The honest limitation: Google Photos
&lt;/h2&gt;

&lt;p&gt;Since March 2025, Google blocks third-party apps from reading your full photo library and provides no delete endpoint — so no tool on earth can fully automate Photos moves in 2026. Spillover uses the picker (you select in Google's own UI) plus Takeout imports, copies your picks hash-verified into your other accounts' Drive, and writes you a manual-deletion checklist. I'd rather tell you what it can't do than pretend otherwise.&lt;/p&gt;




&lt;p&gt;Spillover is MIT licensed — Python, with a local web UI and CLI. v0.1.0 is out now.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Repo: &lt;a href="https://github.com/aashish254/Spillover" rel="noopener noreferrer"&gt;https://github.com/aashish254/Spillover&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;7-minute tutorial: &lt;a href="https://www.youtube.com/watch?v=EVb7bLrMGnY" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=EVb7bLrMGnY&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you've ever paid for Google storage while sitting on empty accounts, this one's for you. Issues, PRs, and feedback welcome.&lt;/p&gt;

</description>
      <category>automation</category>
      <category>opensource</category>
      <category>security</category>
      <category>tools</category>
    </item>
    <item>
      <title>How I Built an AI Studio That Turns Manhwa Chapters into Narrated Recap Videos</title>
      <dc:creator>Aashish Kumar Mahato</dc:creator>
      <pubDate>Tue, 29 Sep 2026 22:02:41 +0000</pubDate>
      <link>https://dev.to/aashish124/how-i-built-an-ai-studio-that-turns-manhwa-chapters-into-narrated-recap-videos-5enl</link>
      <guid>https://dev.to/aashish124/how-i-built-an-ai-studio-that-turns-manhwa-chapters-into-narrated-recap-videos-5enl</guid>
      <description>&lt;p&gt;If you've ever fallen down the rabbit hole of manhwa recap channels on YouTube — "The Weakest Hunter Becomes the Strongest..." — you know the format: dramatic narration over panning comic panels, 10 minutes per video, millions of views. I kept wondering: could that entire pipeline be automated, running locally, with no subscriptions?&lt;br&gt;
That's how AniFlow was born — a self-hosted AI studio that takes manhwa/webtoon chapters and renders finished recap videos. It's open source (MIT): github.com/aashish254/Aniflow&lt;br&gt;
Here's how the pipeline works, and what was hard about each step.&lt;br&gt;
The pipeline&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Chapter ingestion. Paste a chapter URL or point at a local folder. The downloader grabs every page image in reading order.&lt;/li&gt;
&lt;li&gt;Panel detection (YOLOv8). Manhwa pages are vertical strips with irregular panel layouts. A trained YOLOv8 model detects panel boundaries so each panel can be cropped and sequenced for the video. This was the single hardest part — art styles vary wildly between series, and a detector trained on one artist's work falls apart on another's. Getting reliable detection across styles took the most iteration.&lt;/li&gt;
&lt;li&gt;Speech bubble detection + text extraction. A second detection pass finds speech bubbles and text regions. OCR pulls the dialogue out, which becomes the script for dialogue-recap mode.&lt;/li&gt;
&lt;li&gt;Bubble removal. For narrated mode, bubbles get removed and the art inpainted so panels look clean — like a friend telling you the story over the artwork. Doing this without leaving visible artifacts on detailed backgrounds was the second-hardest problem.&lt;/li&gt;
&lt;li&gt;Narration writing (LLM). The extracted story content goes to a local LLM (Ollama by default, with optional Gemini/Claude) with a prompt tuned for that dramatic recap-channel voice. It writes the narration script panel by panel.&lt;/li&gt;
&lt;li&gt;Voiceover (TTS). Multi-voice TTS — Edge TTS or Kokoro locally, ElevenLabs optionally — speaks the script. Different voices for narration vs. dialogue.&lt;/li&gt;
&lt;li&gt;Video rendering. Everything gets composited with FFmpeg: Ken Burns pan/zoom over panels, background music, watermarks, subtitles. Out comes an upload-ready vertical video.
Two modes
Dialogue recap — keeps the original speech bubbles visible; extracted dialogue becomes the audio. Closest to reading the chapter.
Narrated recap — bubbles removed and inpainted; the AI narrates the story like a recap channel.
Fully local by default
The whole stack runs on your own machine: Ollama for narration, Edge TTS for voice, no API keys, no subscriptions, nothing leaves your computer. Cloud models are optional upgrades, not requirements. There's also a batch mode that processes 50+ chapters unattended — a full series to video overnight.
What I'd do differently
If I started over, I'd spend more time on the training data for panel detection up front instead of iterating on model tweaks — data diversity beat architecture fiddling every time. I'd also build the evaluation harness earlier: a small set of "golden" chapters across art styles to regression-test every change against.
Try it
Repo: github.com/aashish254/Aniflow (MIT). There's a web UI, a v0.1.0 release, and tutorial videos in the README.
If you're into self-hosting, computer vision, or the manhwa scene — I'd love your feedback, and contributors are very welcome.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>ai</category>
      <category>automation</category>
      <category>machinelearning</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
