A Chrome extension to download "View Only" videos in google classroom and drive. A view only file in google drive is fetched in small chunks, with no option to download the whole file. This extension intercepts the network requests and manipulates the url to get back the whole file. The extension seemlessly integrates with Aria2 to download your files a lot faster than usual chrome downloads.
- Clone or download this repository
- Open Chrome and navigate to
chrome://extensions/
- Enable "Developer mode" in the top right
- Click "Load unpacked" and select the extension directory
- The extension will appear in your Chrome toolbar
The extension requires the following permissions:
activeTab
: Access to current tab informationstorage
: Persistent storage of aria2 settings and custom filenameswebRequest
: Network request interception for video detection and header capturedownloads
: File download functionality
- Navigate to a Google Classroom page with video content
- Play or load any video on the page
- A floating download button will appear in the top-right corner
- Click the button to see available video and audio streams
- Choose from 4 action buttons for each stream
Each detected video/audio stream offers 4 options:
- 🔵 Open - Opens video in new tab for direct viewing
- 🟢 Download - Downloads via browser with custom filename support
- 🟣 aria2 - Sends directly to aria2 RPC for ultra-fast downloads
- ⚪ rename - Set custom filename for future downloads
- Click "rename" on any stream
- Enter your desired filename (e.g., "Lecture_1_Introduction.mp4")
- Click OK - filename is saved for that specific stream
- Use "Download" or "aria2" - both will use your custom filename
For maximum download speeds:
- Install aria2 on your machine from https://aria2.github.io/
- Start aria2 RPC server:
# Without token aria2c --enable-rpc --rpc-listen-all=true --rpc-allow-origin-all
# With token (recommended) aria2c --enable-rpc --rpc-listen-all=true --rpc-allow-origin-all --rpc-secret=YOUR_TOKEN
- Configure extension:
- Open extension popup
- Set custom RPC URL if needed:
http://127.0.0.1:6800/jsonrpc
- Set Token:
YOUR_TOKEN
(if using token) - Click "Save Aria2 Settings"
- When you open a video in a new tab via the extension
- A download button automatically appears on the video page
- Click to download the current video directly
The extension detects multiple quality options:
- Video: 1080p, 720p, 480p, 360p, 240p
- Audio: 128kbps AAC, 256kbps AAC, WebM Audio
Button doesn't appear
- Ensure you're on a Google Classroom or Google Drive page
- Try refreshing the page and playing a video
- Check that the extension is enabled in Chrome
Videos not detected
- Play the video for a few seconds to trigger detection
- Check browser console for error messages
- Ensure no ad blockers are interfering
Download fails
- Check Chrome's download settings
- Ensure sufficient disk space
- Try opening in new tab instead
aria2 not working
- Verify aria2 RPC server is running
- Check RPC URL and token in extension settings
- Ensure aria2 is accessible from browser (no firewall blocking)
- Check aria2 logs for connection errors
Extension not working
- Reload the extension in
chrome://extensions/
- Clear browser cache and cookies
- Disable conflicting extensions temporarily
- "Failed to detect videos" - Network or permission issue
- "Could not open video" - Tab creation failed
- "Failed to download video" - Download API or file system issue
- "Video detection failed" - Script injection or DOM access issue
- "Aria2 RPC URL not configured" - Set aria2 settings in popup
- "Aria2 error: [message]" - Check aria2 server status and configuration
- Clone the repository
- Make modifications as needed
- Load as unpacked extension in Chrome
- Test on Google Classroom pages
- URL Cleaning:
cleanVideoUrl()
function in background.js - Header Capture:
normalizeHeadersArray()
for complete request capture - aria2 Integration:
sendToAria2()
with optimized settings - Filename Management: Custom filename storage in content.js
- Video Detection: Multi-layered approach across all scripts
- UI Management: Event-driven updates in content.js
- Error Handling: User-friendly notifications with internal logging
- No personal data is collected or transmitted
- Video URLs are stored temporarily and automatically cleaned
- Custom filenames stored locally in browser memory
- aria2 settings stored in Chrome sync storage (encrypted)
- No external servers or analytics
- All processing occurs locally in the browser
For issues, feature requests, or contributions, please refer to the project repository or create an issue with detailed information about the problem encountered.