All Projects → shalvah → Downloadthisvideo

shalvah / Downloadthisvideo

Twitter bot for easily downloading videos/GIFs off tweets

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Downloadthisvideo

Lambcycle
🐑🛵 A declarative lambda middleware with life cycle hooks 🐑🛵
Stars: ✭ 88 (-83.4%)
Mutual labels:  serverless, aws-lambda, lambda-functions
Aws Serverless Airline Booking
Airline Booking is a sample web application that provides Flight Search, Flight Payment, Flight Booking and Loyalty points including end-to-end testing, GraphQL and CI/CD. This web application was the theme of Build on Serverless Season 2 on AWS Twitch running from April 24th until end of August in 2019.
Stars: ✭ 1,290 (+143.4%)
Mutual labels:  serverless, aws-lambda, lambda-functions
Serverless Photo Recognition
A collection of 3 lambda functions that are invoked by Amazon S3 or Amazon API Gateway to analyze uploaded images with Amazon Rekognition and save picture labels to ElasticSearch (written in Kotlin)
Stars: ✭ 345 (-34.91%)
Mutual labels:  serverless, aws-lambda, lambda-functions
Webiny Js
Enterprise open-source serverless CMS. Includes a headless CMS, page builder, form builder and file manager. Easy to customize and expand. Deploys to AWS.
Stars: ✭ 4,869 (+818.68%)
Mutual labels:  serverless, aws-lambda, lambda-functions
Serverless Aws Alias
Alias support for Serverless 1.x
Stars: ✭ 171 (-67.74%)
Mutual labels:  serverless, aws-lambda, lambda-functions
Lambda Toolkit
*DO NOT USE* - This project was done during my initial python and lambda's studies. I would recommend you the `serverless framework`.
Stars: ✭ 114 (-78.49%)
Mutual labels:  serverless, aws-lambda, lambda-functions
Epsagon Go
Automated tracing library for Go 1.x ⚡️
Stars: ✭ 24 (-95.47%)
Mutual labels:  serverless, aws-lambda, lambda-functions
Aws Lambda List
A list of hopefully useful AWS lambdas and lambda-related resources.
Stars: ✭ 130 (-75.47%)
Mutual labels:  serverless, aws-lambda, lambda-functions
Lumigo Cli
Open source CLI tool to help you develop and manage serverless applications.
Stars: ✭ 242 (-54.34%)
Mutual labels:  serverless, aws-lambda, lambda-functions
Serverless Plugin Canary Deployments
Canary deployments for your Serverless application
Stars: ✭ 283 (-46.6%)
Mutual labels:  serverless, aws-lambda, lambda-functions
Midway Faas
🔱 A simple and lightweight serverless framework
Stars: ✭ 363 (-31.51%)
Mutual labels:  serverless, aws-lambda
Claudia
Deploy Node.js projects to AWS Lambda and API Gateway easily
Stars: ✭ 3,690 (+596.23%)
Mutual labels:  serverless, aws-lambda
Vandium Node
AWS Lambda framework for building functions using Node.js for API Gateway, IoT applications, and other AWS events.
Stars: ✭ 377 (-28.87%)
Mutual labels:  serverless, aws-lambda
Express
⚡ Take existing Express.js apps and host them easily on cheap, auto-scaling, serverless infrastructure (AWS Lambda and AWS HTTP API).
Stars: ✭ 337 (-36.42%)
Mutual labels:  serverless, aws-lambda
Serverless Wsgi
Serverless plugin to deploy WSGI applications (Flask/Django/Pyramid etc.) and bundle Python packages
Stars: ✭ 377 (-28.87%)
Mutual labels:  serverless, aws-lambda
Grant
OAuth Proxy
Stars: ✭ 3,509 (+562.08%)
Mutual labels:  serverless, aws-lambda
Serverless Rust
⚡ 🦀 a serverless framework plugin for rustlang applications
Stars: ✭ 386 (-27.17%)
Mutual labels:  serverless, aws-lambda
Serverless Libreoffice
Run LibreOffice in AWS Lambda to create PDFs & convert documents
Stars: ✭ 410 (-22.64%)
Mutual labels:  serverless, aws-lambda
All About Programming
Everything about programming!!
Stars: ✭ 314 (-40.75%)
Mutual labels:  aws-lambda, lambda-functions
Lib
Autocode CLI and standard library tooling
Stars: ✭ 3,773 (+611.89%)
Mutual labels:  serverless, aws-lambda

DownloadThisVideo

Easily download videos/GIFs off Twitter. Mention the bot (@this_vid) in a reply to the tweet containing the video, and it'll reply with a download link in a few minutes.

How this works

Stack

Implementation

The bot consists of several AWS Lambda functions that work in tandem:

fetchTweetsToDownload

This function runs every 4 minutes and checks for new mentions. It publishes these new mentions as a new notification on an SNS topic. The 4-minute interval is so as to not hit Twitter's rate limits and minimize AWS Lambda usage time, while being near-realtime.

sendDownloadLink

This is triggered by new notifications on the SNS topic. It:

  • processes the tweets in the message body,
  • calls Twitter's API to retrieve media links. Any video links retrieved for a tweet are stored in Redis for faster repeated access (other users requesting the same video).
  • adds the download details to the user's store in Redis. The user's store is an entry in Redis where all downloads requested by a user are cached for a certain period (48 hours).
  • attempts to reply to the user with a link to the user's download page (see section below). "Attempts" because Twitter enforces tweet limits (2400 per day, counted in 15-minute periods). If the API limits have been reached, the bot will "cool down" (not send any replies) for 10 minutes.

getDownloads

This is triggered by a HTTP request to the / (for instance, http://thisvid.space/jack). It renders a page showing a list of the user's recent downloads.

getHomePage

Renders the homepage 😁. See http://thisvid.space.

retryFailedTasks

This re-publishes failed tasks (stored in Redis) as a new SNS message. For now, it can only be triggered manually.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].