I've looked into the same idea some time ago. Normal Audio/Video/Picture add-ons could profit from this in regards of the loading time.
On the other hand, I have the feeling that we shouldn't cache the raw http page, but the extracted results instead. This would reduce file sizes and the waiting time on low power systems by eliminating the scraping of the file.
I've wrote an minimal abstaction layer for my video add-ons, which allows me to store any results as a json file. I've used this for a Krypton related workaround.
My next version of the Unithek (a german equivalent to USTV VOD) will feature a static cached list of all provided shows from the national TV channels. A planned version will fetch updates directly on the clients.
The "API" is quite simple. The content plugin itself passes a list of entries (dicts) to the wrapper, which handles everything xbmc* related (listitem stuff, xbmcvfs, ...).
Here is an example encoded as json file:
Code:
{
"list":[
{"_type": "shows", "_assetId": "100000004", "_tvshowtitle": "3satbuchzeit", "_originChannelId": "100000004", "_channelLogo": "http://www.3sat.de/mediaplayer/contentblob/logos/3sat_91x17.jpg", "_name": "3satbuchzeit", "url": "http://www.3sat.de/mediathek/xmlservice/web/aktuellste?maxLength=50&id=100000004", "mode": "xmlListPage", "_url": "http://www.3sat.de/mediathek/?red=buchzeit", "_fanart": "http://www.3sat.de/mediaplayer/stills/100000004_946x532.jpg", "_plot": "Buchzeit - viertelj\u00e4hrlich, anl\u00e4sslich der Buchmessen in Frankfurt und Leipzig, zu Beginn der Sommerferien und zu Weihnachten. Im Szenelokal \"Oosten\" am Frankfurter Osthafen...", "_channel": "3sat", "_duration": "10", "_thumb": "http://www.3sat.de/mediaplayer/stills/100000004_946x532.jpg"},
{"_type": "shows", "_assetId": "100000006", "_tvshowtitle": "Ab 18!", "_originChannelId": "100000006", "_channelLogo": "http://www.3sat.de/mediaplayer/contentblob/logos/3sat_91x17.jpg", "_name": "Ab 18!", "url": "http://www.3sat.de/mediathek/xmlservice/web/aktuellste?maxLength=50&id=100000006", "mode": "xmlListPage", "_url": "http://www.3sat.de/mediathek/?red=ab18", "_fanart": "http://www.3sat.de/mediaplayer/stills/100000006_946x532.jpg", "_plot": "Die Sendereihe pr\u00e4sentiert neue Dokumentarfilme, die in die Erlebnis- und Gef\u00fchlswelt junger Erwachsener eintauchen und spannende Geschichten von Erwachsenwerden heute, von Entdeckungen und...", "_channel": "3sat", "_duration": "6", "_thumb": "http://www.3sat.de/mediaplayer/stills/100000006_946x532.jpg"}
],
"cachetime":"TODO cachetime",
"scriptname":"lib3sat",
"scriptpath":"script.module.lib3sat",
"ttl":"TODO ttl",
"channel":"3sat"
}
I'm not saying that this is the way things should get done, but it might provide a bit of input for some of you.