YTmigrateWL/todo.md
2025-09-15 13:02:48 +05:30

63 lines
6.5 KiB
Markdown

Of course. Here is a detailed implementation plan based on your requirements, presented from the perspective of a Senior Technical Project Manager.
---
### **Project: RepoScribe - Q4 2025 Enhancement Initiative**
**Project Goal:** To evolve the RepoScribe tool from a functional script into a user-friendly, robust, and accessible open-source project. This initiative will focus on three core pillars: **Usability**, **Code Refinement**, and **Feature Expansion**.
**Lead:** Senior Technical Project Manager
**Stakeholders:** Open-Source Community, End-Users
---
### **Phase 1: Foundation & Usability (Estimated Effort: Medium)**
This phase is critical and addresses the highest-priority items required to make the project viable for external users. The goal is to lower the barrier to entry and provide a seamless "out-of-the-box" experience.
| Task ID | Task Name | Description | Priority | Effort | Success Criteria |
| :--- | :--- | :--- | :--- | :--- | :--- |
| **1.1** | **CRITICAL: Author Comprehensive README** | Create a `README.md` from scratch. It must include: a project description, a "Why?" section, prerequisites (Python, Node.js), detailed setup instructions, a comprehensive configuration guide (covering the `.env` file), usage steps, and a license (e.g., MIT). | **High** | **M** | A new user can successfully set up and run the project using only the README for guidance. |
| **1.2** | **Enhance `.env.example` Instructions** | Significantly improve the comments in the `.env.example` file. Provide explicit, copy-pasteable example paths for Firefox and Chrome profiles across macOS, Windows, and Linux to dramatically reduce user friction. | **High** | **S** | The comments clearly guide a user from any major OS to find their profile path without external searching. |
| **1.3** | **Unify Workflow with `npm start`** | Modify the `package.json` `scripts` section to combine the Python and Node scripts into a single command. The new `start` script will execute `fetch-videos` and then `migrate-videos` sequentially. | **High** | **S** | A user can run `npm start` to execute the entire workflow from start to finish. |
---
### **Phase 2: Code Refinement & Robustness (Estimated Effort: Small)**
This phase focuses on internal code quality and improving the user experience through more intelligent and forgiving script behavior. These are small changes with a high impact on perceived quality.
| Task ID | Task Name | Description | Priority | Effort | Success Criteria |
| :--- | :--- | :--- | :--- | :--- | :--- |
| **2.1** | **Implement Flexible Confirmation Prompt** | In `src/js/index.js`, modify the confirmation logic for clearing the "Watch Later" playlist to accept more variations, such as "y" and "YES", in a case-insensitive manner. | **High** | **S** | The script proceeds correctly if the user inputs `y`, `Y`, `yes`, or `YES`. |
| **2.2** | **Add Contextual Error Hints** | In `src/fetcher.py` and `main.py`, enhance the `except` blocks for `yt-dlp.utils.DownloadError`. Add user-friendly `print` statements that suggest common solutions (e.g., "Hint: Ensure your browser is closed..." or "Please double-check your profile path..."). | **Medium** | **S** | When a cookie-related error occurs, the user is given an actionable suggestion in the terminal output. |
| **2.3** | **Optimize Disk I/O in CsvWriter** | In `src/writer.py`, remove the `os.fsync()` call. This provides a minor performance boost by relying on the system's standard file buffering, which is sufficient for this application's needs. Add a code comment explaining why it was removed. | **Low** | **S** | The line `os.fsync(self.file_handle.fileno())` is removed from `writer.py`. |
---
### **Phase 3: Feature Expansion (Estimated Effort: Large)**
This phase introduces a significant new feature: support for the Google Chrome browser. This will broaden the project's user base considerably.
| Task ID | Task Name | Description | Priority | Effort | Success Criteria |
| :--- | :--- | :--- | :--- | :--- | :--- |
| **3.1** | **Research Chrome Cookie Integration** | Investigate how `yt-dlp`'s `cookiesfrombrowser` parameter works for Chrome. Determine the correct tuple format and required path specifications for it to function correctly. | **High** | **S** | The development team has a clear, proven method for passing Chrome cookie information to `yt-dlp`. |
| **3.2** | **Implement Browser Selection Logic** | 1. Add a `BROWSER` variable (e.g., `BROWSER="firefox"`) to the `.env.example` file. 2. In `main.py`, read this variable. 3. In `fetcher.py`, use an `if/else` statement to pass the correct arguments to `yt-dlp.YoutubeDL` based on whether `BROWSER` is "firefox" or "chrome". | **High** | **M** | The script successfully fetches data using cookies from either Firefox or Chrome based on the `.env` configuration. |
| **3.3** | **Update All Documentation for Chrome** | Update the `README.md` and `.env.example` to reflect the new Chrome support. This includes explaining the new `BROWSER` variable and providing the detailed instructions for finding Chrome's profile path on all major operating systems. | **High** | **S** | All documentation created in Phase 1 is updated to include clear instructions for Chrome users. |
### **Timeline & Sequencing**
The phases should be executed sequentially.
1. **Phase 1 (Foundation)** is the immediate priority. Without it, the project remains a personal script. This should be completed first to establish a solid baseline.
2. **Phase 2 (Refinement)** can be executed quickly afterward. Its tasks are small and can be batched together in a single development cycle.
3. **Phase 3 (Expansion)** is the most complex and should be tackled last. The research component (3.1) must be completed before implementation (3.2) begins.
### **Risks & Mitigation**
* **Risk:** Users may still struggle to locate browser profile paths, leading to support overhead.
* **Mitigation:** The enhanced documentation in tasks 1.1, 1.2, and 3.3 is the primary mitigation. If problems persist, a future enhancement could be a helper script (`find_profile.py`) to automate path detection.
* **Risk:** `yt-dlp`'s method for handling Chrome cookies may be complex or poorly documented.
* **Mitigation:** Task 3.1 is designed to front-load this risk. Allocate sufficient time for this research spike before committing to implementation.
* **Risk:** Upstream API changes from YouTube, `yt-dlp`, or `youtubei.js` could break functionality.
* **Mitigation:** Pin dependency versions in `pyproject.toml` and `package.json` to ensure a stable, reproducible build. Add a note in the README about potential breakage due to external changes.