Engines change plus they can support multiple protocols. I thought of it too but protocol number is the proper thing to use.
My idea was quite similar:
<zipfile>_<bspfile>_ <skill>_(complete)_ <YYYY-MM-DD>_ <playername>_ (protocol).zip
And inside the zip:
<zipfile>_<bspfile>_ <skill>_(complete)_ <YYYY-MM-DD>_ <playername>_ (protocol)-#.dem
where # would be a number, 0-9 or 01-99.
*m*s is a good addition, on the long run one could find out how long a map is. I'd put it in the zip name (or the dem if it is one single file) before the <YYYY-MM-DD>, so:
<zipfile>_<bspfile>_ <skill>_(complete)_ (*h*m*s)_<YYYY-MM-DD>_ <playername>_ (protocol).zip
Other meta information would be saved in the db:
Is it the first time the player played the map (or skill?)?
Short description/comment
How many deaths (0 to "I lost count")
URL to captured video :)
I thought about writing some simple parser (or rather ask someone to do that) but then I looked at
http://quakewiki.org/wiki/Network_Protocols and no, no.
It would not be a random dump but a highly nazi-&stasified system meaning that uploads would be linked to your account and the naming scheme is enforced (if you fail to do it, you just wasted your time uploading :\ ). If I was a smart programmer I would rename files as needed but I am not...