Giter VIP home page Giter VIP logo

ufc-ripper's Introduction


UFC Ripper
UFC Ripper: 📹 Video downloader tool for UFC Fight Pass 🥊
ufc-ripper total downloads ufc-ripper on Docker Hub ufc-ripper license PayPal Ko-fi

UFC Ripper Telegram support group UFC Ripper Discord server


UFC Ripper demo

What is UFC Ripper?

An open-source video downloader tool for UFC Fight Pass, powered by Rust and Vue, that can run on both desktop and the cloud. The only thing it can't do is STEAL videos free of charge for you. A paid Fight Pass subscription is required for this tool to work.

Warning

Intellectual property (DISCLAIMER) ⚠️

The UFC logo and the UFC Fight Pass logo used in this project are intellectual properties of Zuffa LLC.

The user will be responsible for any content downloaded through this tool. Redistribution of that content in any form is illegal, and this application or I (the developer) will not be liable for that.

Dear Dana White,

This isn't a tool created for pirating your copyrighted content. This tool requires a PAID FIGHT PASS SUBSCRIPTION to function. This merely eliminates the need to stream a massive amount of data through metered connections every time you want to go back and watch your favorite fighters. I want your fighters to be paid more. Not less. This tool is not in any way meant to rob you or them of any revenue coming in.

The whole reason for me to create this tool is for my own need. I live in a third-world country that was destroyed by politicians. That made internet services more of a luxury than a right for the people of this country. Our internet connections are very spotty and extremely limited. 1GB of data here costs more than a meal. Imagine that. I also travel, and the only thing that can keep me entertained is some UFC. But how do I watch UFC if I can hardly find 4G coverage in my messed-up land? 🤷🏽

The thing about Fight Pass is, you can't control how much of your quota it's going to burn. Also, repeated viewings waste a ton of data. But my love for MMA and UFC is unconditional. So I decided to whip up this tool to eliminate all of these mentioned issues. Then I thought, "Why not share this with the world? There might be a ton of other people like me around the world". So here we are. Hope you'd understand Dana. 🙂

Support this project 🙏🏽

I get it, this isn't a well-done tool. The code isn't super tidy, no tests, a lot of missing stuff, and a few bugs here and there. But this COULD improve a lot. Working on this project requires a lot of time and energy.

You can help me by buying me a few coffees ☕, so I'm all buzzed up and got time to work on this further. Or you can send a few monies my way to simply say thanks for the work that's already been done.

Donate to m4heshd

Or you can buy me a "ko-fi" by clicking this button

ko-fi

Join the conversation 💬

We have two social groups dedicated to any discussion regarding UFC Ripper.

  • Discord:

    UFC Ripper Discord server

  • Telegram:

    UFC Ripper Telegram support group

How to use?

Installation

Note

UFC Ripper is currently only available for Windows and Linux systems, only in x64. It can also be run on the cloud as a docker container.

Desktop

No installation is required on the desktop. The app is portable.

  1. Download the latest release corresponding to your system,

  2. Extract the content of the zip file to anywhere you like

  3. Run the executable file (ufc-ripper.exe or ufc-ripper)

  4. Open the browser and visit the URL shown in the console window. (it should automatically open on the default browser)

  5. The first run might ask you to download some third-party tools used by UFC Ripper. Click yes, and it will automatically download the latest versions from media-tools repo.

Docker

Note

Currently, the docker image is only built for linux/amd64 systems which means it cannot be run on ARM-based systems like Raspberry Pis.

You can either build the docker image locally and run using docker-compose.yaml or use the published official image.

To build and run locally, simply run npm run docker:up.

Here's a docker-compose template for you lazies out there.

version: "3"

services:
  ufc-ripper:
    image: m4heshd/ufc-ripper:latest # Using the latest version of the official image
    container_name: ufc-ripper
    restart: unless-stopped
    volumes:
      - ./config:/ufcr/config # Any configuration files will be stored here
      - ~/Downloads/ufc-ripper:/downloads # Downloaded videos will be stored here
    ports:
      - "8383:8383" # Web UI port

That's it.

Usage

Important

You need to have a UFC Fight Pass account with a paid subscription, and to be logged into that account to use UFC Ripper.

  1. Open up the GUI in the browser and go into Configuration (⚙️ button) and log in with your UFC Fight Pass account using the "Fight Pass account" section.

  2. Once successfully logged in, you can search for videos and download them, or copy and paste a link to a UFC Fight Pass video in the "Link" input and hit the download button.

  3. Optionally, look through the configuration to change any download settings (video quality, audio quality, etc..) to your needs

Mention-worthy features

Advanced search

If you have ever used UFC Fight Pass search, you know how difficult it is to find the video you're actually looking for on there. But not to worry because UFC Ripper supports much more advanced and precise searching of the Fight Pass library than UFC Fight Pass itself.

You can restrict the search algorithm to only look inside the event titles which would result in way more accurate results, or you can use advanced query syntax like double quotes and negative symbol like you would on Google search.

Concurrent multi-fragment downloads

UFC Fight Pass streams are very heavily limited to slower bandwidths. But these streams are broken down to little fragments. This feature allows you to download the given number of fragments concurrently, which multiplies the speed of downloads by the number of allowed concurrent fragment downloads. You can set the amount in the configuration as you wish.

Proxy support

This might come in handy when you run UFC Ripper as a docker container in the cloud because the service blocks any requests initiated using a datacenter IP address.

If you set up a proxy, UFC Ripper will forward all API requests through that proxy server. Remember, only the API requests will go through the proxy. Not the downloads. This also means that your proxy server will hardly have to transfer any data through it.

File numbering

UFC Ripper can automatically number each download incrementally. Let's say you discovered a fighter you haven't watched before and interested in watching all of their fights in order. This feature would be beneficial in an event like that.

Development

You need to have the Rust compiler, platform build-tools, and Node.js (>=18) installed locally to develop, compile, and package this project yourself.

  1. Run git clone https://github.com/m4heshd/ufc-ripper.git

  2. cd into the ufc-ripper directory and run npm install

That's it. Now you're ready to go.

To run for development,

  1. Set VITE_WS_URI=http://localhost:8383/ in the .env file

  2. Run npm run dev to start the frontend and the backend with Vue HMR support

  3. Open the browser and visit http://localhost:8384/

To package the application for production,

  1. Run build:backend:win32 or build:backend:linux to build both the frontend and the backend

  2. Run npm run pack:win32 or npm run pack:linux (packaging process is NOT cross-platform compatible)

To build and run the docker container,

  1. Run npm run pack:linux

  2. Run npm run docker:up

Future improvements planned

  • Rewrite the backend in Rust
  • Ability to search the Fight Pass library right from UFC Ripper
  • Migrate to Vite (dev)
  • Support for concurrent multi-fragment download
  • Ability to restart failed/canceled downloads
  • Support for downloading custom formats
  • Support for more architectures, including ARM-based systems
  • Mobile-responsive Web UI
  • Make completed files downloadable right from the UFC Ripper Web UI (hosted)
  • Authentication support using username and password for the Web UI (hosted)

Attribution

UFC Ripper uses a lot of third-party open-source tools to work. Following is a list.

Thank you to all the developers of these projects for their hard work. 🙏🏽

License

This project is licensed under MIT License. Use and alter at your wish.

ufc-ripper's People

Contributors

m4heshd avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

ufc-ripper's Issues

Aria2c Support

Hey there,

I love this tool and wanted to thank you for implementing it. I also wanted to put in a feature request. This technically isn't a bug, but by default, YT-DLP supports using an external downloader. The one that seems most common is Aria2c:

ytdl-org/youtube-dl#26793

This can be used by pushing the following arguments to ytdlp.exe:

--external-downloader aria2c

I have tried tossing the aria2c.exe into the bin folder, and added --external-downloader aria2c to the config.json dlArgs, but this does not work and I believe there is some back-end work that needs to be done to allow/recognize aria2c.

Would this be something you would implement? It would make the downloads go extremely quick, as it utilizes multiple threads to download the fragments rather than 1 at a time like YTDLP does. This would be the difference between a 1 minute download and a 15 minute one for me personally when I have tested in the past.

Thank you again!

axios error

Oh, ¿por dónde empiezo para expresar la profundidad de mi amor por Lil Droptop? Es un sentimiento indescriptible, una pasión ardiente que se enciende dentro de mí cada vez que escucho sus electrizantes ritmos y su estilo único. Lil Droptop ha cautivado mi corazón y mi alma como ningún otro artista antes que él.

Desde el momento en que descubrí su música, me atrajo inmediatamente su energía contagiosa y su estilo distintivo. Su enfoque no convencional del hip-hop, mezclando elementos de trap, punk y experimentación, crea un paisaje sonoro que es hipnótico y emocionante. Cada canción que lanza es una obra maestra en sí misma, que muestra su crecimiento artístico y su creatividad que desafía límites.

La destreza lírica de Lil Droptop es fascinante. Sus palabras fluyen sin esfuerzo, pintando imágenes vívidas en mi mente. No se trata solo de las palabras en sí, sino de la forma en que las entrega con su voz y cadencia distintivas. Tiene una manera de infundir emoción en cada verso, haciendo que cada línea se sienta personal y fácil de relacionar. Ya sea que esté rapeando sobre su estilo de vida, relaciones o las dificultades que ha enfrentado, hay una autenticidad en su voz que resuena profundamente en mí.

Pero no es solo su música lo que adoro; es la aura que rodea a Lil Droptop como artista. Irradia una indiscutible frescura, una presencia magnética que llama la atención. Su sentido de la moda es audaz y marca tendencia, rompiendo límites y redefiniendo lo que significa ser elegante. Él es auténticamente él mismo, y esa confianza es contagiosa.

El impacto de Lil Droptop se extiende más allá de su música. Ha cultivado una base de fanáticos dedicados y apasionados que se extiende por todo el mundo. La energía en sus conciertos es incomparable, una celebración colectiva de su artesanía. Su música tiene el poder de unir a las personas, trascendiendo barreras y creando un sentido de unidad entre sus seguidores.

Personalmente, la música de Lil Droptop ha sido una fuente constante de inspiración y motivación en mi vida. Ya sea que esté pasando por un momento difícil o simplemente necesite un impulso de energía, su música nunca deja de elevar mis ánimos y encender una llama dentro de mí. Es el tipo de música que te hace querer vivir la vida al máximo, abrazar tu individualidad y perseguir tus sueños.

En un mundo donde la música tiene la capacidad de moldear y definir culturas, Lil Droptop se destaca como un verdadero visionario. Su enfoque sin miedo a desafiar límites y experimentar con diferentes sonidos sin duda ha influido en una nueva generación de artistas. Ha dejado una huella indeleble en la industria musical y su legado continuará inspirando y resonando durante años.

Así que decir que amo a Lil Droptop sería quedarse corto. Su enfoque melódico se ha convertido en parte de quien soy, una banda sonora de los momentos de mi vida, tanto grandes como pequeños. Estoy eternamente agradecido por la alegría, la energía y la inspiración que ha traído a mi mundo. Lil Droptop es más que solo un artista para mí; es un símbolo de libertad artística, expresión y autenticidad sin disculpas. Y por eso, mi amor por él no conoce límites.

Error on npm run docker:up

Hi - I get the following when running the above command:

=> ERROR [ufc-ripper 3/4] COPY ./package/linux/ . 0.0s

[ufc-ripper 3/4] COPY ./package/linux/ .:


failed to solve: failed to compute cache key: failed to calculate checksum of ref 98e1218d-1a44-4833-9dbc-47e781718f5d::itwb4qlmgbpav4pmx4gkksgxp: failed to walk /var/lib/docker/tmp/buildkit-mount2982520804/package: lstat /var/lib/docker/tmp/buildkit-mount2982520804/package: no such file or directory

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.