A mirror of https://github.com/6a/vimeo-ripper. Nothing has been changed.
|
|
3 месяцев назад | |
|---|---|---|
| img | 3 месяцев назад | |
| lambda | 3 месяцев назад | |
| src | 3 месяцев назад | |
| .gitignore | 3 месяцев назад | |
| README.md | 3 месяцев назад | |
| android-chrome-192x192.png | 3 месяцев назад | |
| android-chrome-256x256.png | 3 месяцев назад | |
| apple-touch-icon.png | 3 месяцев назад | |
| browserconfig.xml | 3 месяцев назад | |
| code.js | 3 месяцев назад | |
| favicon-16x16.png | 3 месяцев назад | |
| favicon-32x32.png | 3 месяцев назад | |
| favicon.ico | 3 месяцев назад | |
| index.html | 3 месяцев назад | |
| mstile-150x150.png | 3 месяцев назад | |
| netlify.toml | 3 месяцев назад | |
| package.json | 3 месяцев назад | |
| safari-pinned-tab.svg | 3 месяцев назад | |
| site.webmanifest | 3 месяцев назад | |
| style.css | 3 месяцев назад |
A sleek, web-based Vimeo video downloader that extracts direct download links for Vimeo videos in multiple quality formats. Built with vanilla JavaScript and powered by Netlify Lambda functions.
Before running this project, make sure you have:
git clone https://github.com/6a/vimeo-ripper.git
cd vimeo-ripper
npm install
This will install the required packages:
axios - HTTP client for API requestsnetlify-lambda - Local development and build tools for Lambda functionsnode-fetch - Node.js implementation of the Fetch APIStart the Lambda Function Server:
npm run start:lambda
This starts the Netlify Lambda development server at http://localhost:9000
Serve the Frontend: In a new terminal window:
# Using Python (if available)
python3 -m http.server 8080
# OR using Node.js http-server
npx http-server -p 8080
# OR using any other static file server
Update API Endpoint:
Modify code.js line 23 to use your local lambda function:
const url = `http://localhost:9000/.netlify/functions/get?id=${currentID}&q=${qualitySelect.value}`;
Access the Application:
Open your browser and navigate to http://localhost:8080
Simply open index.html in your web browser. Note that this will use the deployed Lambda function and may not work if the deployment is unavailable.
To prepare the Lambda functions for deployment:
npm run build:lambda
This creates optimized Lambda function bundles in the lambda/ directory.
Supported URL Formats:
https://vimeo.com/123456789
https://vimeo.com/channels/staffpicks/123456789
https://vimeo.com/ondemand/moviename/123456789
vimeo.com/123456789
Select Quality: Choose your preferred video quality from the dropdown:
Process Video: Click the play button or press Enter
Download: Two links will appear:
Input: https://vimeo.com/channels/staffpicks/212731897
Quality: 720P
Output:
✅ (video link) - Direct MP4 download
✅ (poster link) - Thumbnail image
vimeo-ripper/
├── 📄 index.html # Main web interface
├── 🎨 style.css # Application styling
├── ⚙️ code.js # Frontend logic and API calls
├── 📦 package.json # Dependencies and scripts
├── 🚀 netlify.toml # Netlify deployment configuration
├── 🖼️ img/ # UI assets
│ └── play-button.svg
├── 🔧 src/
│ └── lambda/
│ └── get.js # Serverless function for video processing
└── 🏗️ lambda/ # Built Lambda functions (generated)
index.html: The main user interface with input validation and result displaycode.js: Handles URL validation, API calls, and user interactionsstyle.css: Responsive design with gradient background and modern stylingsrc/lambda/get.js: Serverless function that fetches video data from Vimeo's APInetlify.toml: Configuration for Netlify deploymentURL: /.netlify/functions/get
Method: GET
Parameters:
id (required): Vimeo video ID extracted from the URLq (optional): Requested video quality width (640, 960, 1280, 1920)Response Format:
{
"video": "https://direct-video-url.mp4",
"poster": "https://thumbnail-image-url.jpg"
}
Error Response:
{
"error": "The server encountered a problem when trying to get the video.",
"details": "Error details here"
}
The frontend uses the Fetch API to communicate with the Lambda function:
const url = `https://vget.netlify.com/.netlify/functions/get?id=${videoID}&q=${quality}`;
fetch(url)
.then(response => response.json())
.then(data => {
// Handle video and poster URLs
});
For production deployment, you may want to configure:
The application uses a comprehensive regex pattern to validate Vimeo URLs:
const regex = new RegExp(`^((https?):\/)?\/?(vimeo.com)((\/\\w+)*\/)([0-9]+[^#?\s]+)(.*)?(#[\\w\\-]+)?$`);
This pattern supports various Vimeo URL formats including channels, on-demand content, and direct video links.
Connect Repository: Link your GitHub repository to Netlify
Configure Build Settings:
npm run build:lambda./ (root directory)lambdaDeploy: Netlify will automatically build and deploy your application
Build Lambda Functions:
npm run build:lambda
Upload Files: Upload all files including the generated lambda/ directory to your hosting provider
Configure Serverless Functions: Ensure your hosting provider supports serverless functions compatible with Netlify Lambda
1. "Failed" Links Appear
2. Lambda Function Not Working Locally
npm run start:lambda is running and update API endpoint in code.js3. CORS Errors
4. Invalid URL Error
To enable debugging, open browser developer tools and monitor:
Contributions are welcome! Here's how to get started:
git checkout -b feature/amazing-featuregit commit -m 'Add amazing feature'git push origin feature/amazing-featureThis project is licensed under the ISC License. See the package.json file for details.
If you encounter issues or have questions:
⚠️ Disclaimer: This tool is for educational purposes. Please respect content creators' rights and Vimeo's Terms of Service. Only download videos you have permission to access.