So... I have mostly kept my promise to myself: not to waste my life to build killa-app for JAV database but only made small tweaks that both improve the usability and along the way help me learn Python killaskills. Which is to say until now I have nothing to report here.
Then one day I had a lunch time to kill and I decided to really learn OO on Python, and I would learn it by (gingerly) developing a "big" new feature on JAV database: bilingual support for (to start with) performers (in my program, I follow IMDB internal format call them all "actor" even thought I am only tracking actresses now).
So what I created (one lunch time and a long coffee break later) was an independent module that augment my JAV database but can also be added to any Python project. The database is kept as an Excel file and you add and edit entries using Excel (or many free software can also do it), and my module let you easily translate between Japanese and English full names or partial names.
The Excel format is super simple. There are quite a few extra fields for future expansion, for now "EngName" and "JapName" are the required fields. AKAs provides a placeholder for multiple aliases for the same performer.
"avactors" is implemented as a Python class derived from DataFrame (from pandas, Python's standard library for data analysis). So you immediately can use pandas' powerful tools to work with the database without me writing any code. I only added a few E2J and J2E methods to DataFrame. So a little demo:
(in following, all the 'NaN' and 'NaT' are missing data)
So you can supply a full or partial Japanese or English name and get back one or more records (each record holds all the data for that idol), or get one or more names in Japanese or English. You can also just straight up do J2E or E2J translation (provided you have the correctly spelled name).
pandas' features let you slice and dice the data any which way. So for example (assuming you have filled Excel file with such data) it's easy to request all the performers who debuted when her age was over 24.
One more fancy demo, say I kind of forgot my idol's name, only there 'ami' in there somewhere. So I do a partial name with Epart(), but I got 12 results... too many, say I remember she's "ami" but not "nami", so I exclude all the "nami", which give me 9 results (let's pretend I decide to accept 9 as narrow/precise enough). So finally I get those 9 names in Japanese: