- automatically detect media insertion
- identify disc and get media info via online database
- rip media to the proper file format (FLAC or MP3 for CDs, MKV for DVDs and Blu-rays)
- recompress (DVDs & BrDs) using handbrake - possibly using logic to set compression level based on release year (i.e. use higher compression levels for old movies & TV shows where quality isn't going to be as good anyway.)
- place file in the proper directory/structure with the properly formatted (for XBMC) filename and with the proper ID3 tags
- notify me (by text message & email) that the rip is finished - with a link to a web page on the server that will let me edit the filename/tags in case the disc is misidentified and/or the retrieved info needs to be modified in some way (poorly chosen genre, format of artist name, etc.) and, if I make changes, edit the filename and/or ID3 tags and move the file (creating and deleting directories) as necessary
- eject the disc
Design aside, there are significant implementation issues for me...
- I've looked into detecting disc insertion on Linux and it doesn't appear to be trivial. (Help?)
- I have no idea how to implement code that will get genre/year/artist/album/track number/title info for CDs, or movie title/year info for movies, or series name/season/episode number/title for TV shows. (Help?)
- If I can fetch the aforementioned info, I'm comfortable using it to populate a text/XML file, then using that info to populate editable fields on a php page. I'm even comfortable renaming/moving files and/or creating/removing directories via php - but I have no idea how to programmatically update ID3 tags. (Help?)
- I'm not even sure what to use to as a coding platform. My inclination is to use Python- partly because I've been wanting to learn it, and partly because I like the idea that someone else would be able to reuse much of the code if they wanted to port it to Mac or Windows. If I do go with Python, I'd really like to find a python-centric forum where I could get good help as I try to muddle my way through this project. Any recommendations?