What you are looking for is called a database, (some people try to use a spreadsheet but just don't be one of them). It will allow you to store whatever data you need to store, query it, update it, query it, etc. You would need one set of records with details about the items movies, etc. with the title, originator, possibly cast, etc., another with reviews which would reference the items and have the review author, rating, date/time, text, etc. - the statistics, ratings, etc., would be generated by queries.
There are lots of databases for Linux available but probably the easiest to start with which ticks all of your boxes would be LibreOffice Base.
- Offline-friendly Yes
- Linux compatible (Windows is palatable) Yes - your Linux probably already has it installed but it is available for Windows & OS-X as well
- Open source Yes
- Create categories (eg movie, tv show, book) - Just add a field to the items then you can sort & filter
- Show top 100 in each category - Just add a query for this information.
- Group entries (eg episodes into a season) - Another query, note these details need to be fields in the items
- Group groups (eg seasons into a show) - Ditto
- Ability to review groups Yes
- Show average group rating Again a query
Another Open Source Option - Camelot
Another, lighter, way to go that is still open source and requires some self assembly, but with a detailed getting started guide that happens to target a Movie Database, is python-camelot.
- Detailed tutorial on creating a movie database here
- Based on Python, SQLAlchemy, QT & Spyder
- The Python programming language is very fast to start learning with lots of online tutorials, support groups, tutorials & books (several free).
- Cross Platform
- Free for personal use
Other things to consider
- You obviously wish this to be a long term project so going open source is a good way to go for sustainability.
- Wizards to help with database design, queries & user forms.
- If you go the LibreOffice route and your system grows the data can be moved, (exported), to a more powerful database back end and the existing forms, queries, etc. will still work with Base acting as a front end for the database.
- Don't be put off by having a few days, or weeks, of up front effort - your father has spent 40 years on this so far and you are looking to continue making this a multi-generational project
- If you father has a neat consistent hand, or better yet typed his records, it might be worth the effort of trying to scan in and OCR the records so as to capture the 40 years of effort as a starting point - there are free open source OCR projects, some of which support learning handwriting, many of which are either in python or can be interfaced from python. This is a starting point especially here.
- I would also look at interfacing to IMDb, using a tool such as IMDbPy, to drastically reduce the amount of data entry - such usage sounds compatible with the terms of use for IMDb.
- I would suggest asking your father a) how long it took for him to settle on the format that he now uses for his records & b) if there are any things that he wishes that he had included, or excluded, from the system but had been doing it for too long to easily change.