Always fun to play around with JSON-RPC
Except for the recent episodes by season thing, most of this is achievable with some Smartplaylists saved in the skin directory and a var for content. Except for recommended episodes, everything else library data provider can do can also be done with smartplaylists -- plus a whole bunch more.
For instance I have a playlist saved in skin.arctic.zephyr/extras/NewEpisodes.xsp
PHP Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<smartplaylist type="episodes">
<name>New Episodes</name>
<match>all</match>
<limit>10</limit>
<order direction="descending">dateadded</order>
</smartplaylist>
In the content tag I use something like
Code:
<content>$VAR[EpisodesContent]</content>
Code:
<variable name="EpisodesContent">
<value condition="**SOMECONDITION**">special://skin/extras/NewEpisodes.xsp</value>
etc. etc.
</variable>
In my experience, the smart playlist will update everytime it is accessed, which is useful if you want to refresh random content everytime.
----
Some other playlists I use:
RandomMovies.xsp -- Random Movies that haven't been watched recently
PHP Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<smartplaylist type="movies">
<name></name>
<match>all</match>
<rule field="lastplayed" operator="notinthelast">
<value>14 Days</value>
</rule>
<limit>10</limit>
<order direction="ascending">random</order>
</smartplaylist>
-----
RecentlyWatchedEpisodes.xsp
PHP Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<smartplaylist type="episodes">
<name></name>
<match>all</match>
<rule field="lastplayed" operator="inthelast">
<value>28 Days</value>
</rule>
<limit>10</limit>
<order direction="descending">lastplayed</order>
</smartplaylist>
-----
TVShows in progress ordered by most recently played. Used with target="video" in the content tag, this will jump to the show in the library -- Not quite jumping to the season, but close
PHP Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<smartplaylist type="tvshows">
<name></name>
<match>all</match>
<rule field="inprogress" operator="true" />
<limit>10</limit>
<order direction="descending">lastplayed</order>
</smartplaylist>