Thursday, October 6, 2022

RIBBBIT media VOD

 RIBBBIT media Video On Demand!



Well, what is the point of this?!  

As a long-time cord-cutter, I've made some use of streaming services (mostly YouTube, but also Netflix and Amazon Prime), but I've often been frustrated by available solutions for streaming my own media at home.  Part of what frustrates me about the commercial VOD services is that I'm at the mercy of what their library managers decide will be available to me.  Let's say I want to watch "The Towering Inferno".  Well, if none of the services I'm subscribed to currently think that is worth having online, I'm out of luck.  Well, if I own the DVD, why not just watch it on that?  DVDs are great for getting "ownership" of the media into my possession, but once I have it, I'm very restricted in how I can consume it (to say nothing of maintaining and regularly interacting with a library).   Yes, "ripping" DVDs offers some solace, but now there are data storage issues, and how do you catalog and index such a library? For years, I simply hung an NFS share out there, and watched via VLC on a PC or laptop.  That has obvious limitations.  That DID scratch my itch for a time, but I wanted something more library-ish with indexing and searching and so on.  One obvious (but exhausting to maintain) way to achieve this would be a forest of symbolic links on that NFS share... but another way would be to use an RDBMS to maintain all those relationships, and simply query against that to get the filename of interest.  That has the potential to be much easier to maintain (and expand).

What's it made of?

Since HTML5 includes (among other things) handling for video playback, I figured it couldn't be TOO hard to implement a simple video player page.  I was right.

I've been working on re-ripping and/or transcoding my video library from MPEG2 to MPEG4.  As of this writing, I have over 2,500 TV Episodes and 350 movies in MP4 format (all ripped from DVDs I own) and logged in the DB, many with metadata (such as runtime, people and companies involved, synopsis, and so on).

The system consists of:

  • a static HTML page, which loads 2 JavaScript files, and sets up the layout of the page, 
  • a Python file which serves both as a Flask REST API and a CLI for interacting with the database, and 
  • a MariaDB database.  

All told, the HTML, JavaScript, Python, and SQL DDL currently fit in under 6000 lines of code (including comments and whitespace).  Some refactoring will likely bring that down a bit.



As of now, the ability to edit DB info for individual "artifacts" within the web page exists.  The CLI is for doing things like bulk-creation of artifacts from file lists, creating tags, assigning individual "episodes" to a "series", and so on.  On the bright side, the back-end code to achieve these things exists in the Python file, but I haven't gotten around to hanging a web UI on any of it yet.



Also, there is no authentication on the web side... You are J. Random User.  The back end keeps no stats on you, and currently places no restrictions on whether you can update DB information for any particular artifact.  Obviously, this is not intended for public use.  It's intended for a person (or family) to interact with their own video library.

Call to action(?)

Is this something that interests you?  Would you be interested in seeing this go up on a publicly accessible repo?  Comment!


No comments:

Post a Comment

RMVOD r0.9.3 is here!

 Hi folks!   Well, TV Series Playlists are here, as well as some fixes to Recommendations.  Here are the release notes: RIBBBITmedia Video O...