This page is to track the proposed Theme Downloader. This involves three components: mythfrontend (Theme chooser), mythbackend (downloader), and services.mythtv.org (hosts Themes available for download).
Components
- Services webpage - http://services.mythtv.org/themes/
- Hosts an 'index generator' that generates static html pages for each aspect
ratio for each version of MythTV. These are 'index.html' files put into
subdirectories for the aspect ratio with a parent dir of the MythTV version
number. The Frontend will reference these via the subdirectory without
specifying the 'index.html' portion. This will allow us the future option of
switching to a dynamic page such as index.php without breaking existing
frontends already deployed. These pages are nothing fancy, they return just
a list of theme names that are of the given aspect ratio and compatible with
the given MythTV version. The index generator also modifies the themeinfo.xml
files to add a downloadurl tag to tell mythfrontend where to download the
theme tarball from. This gives us the flexibility of moving the download
location or changing the tarball file naming convention at any time. These
downloads will probably come directly off the OSUOSL mirrors, so this index
generator script will run after the OSUOSL rsync.
This index generator may also optionally generate a 'details.html' in each
subdirectory which can be viewed in a web browser to view details about the
the themes compatible with that version/aspect. This detail includes
information from the themeinfo.xml file and also shows the preview image
and a link to the download URL. This is for people who want to manually
browse the themes rather than using the Frontend theme browser.
- Serves up static index pages listing what themes are available for a given
MythTV version.
Example full URLs:
http://services.mythtv.org/themes/repository/0.23/index/All/index.html
http://services.mythtv.org/themes/repository/0.23/index/4:3/index.html
http://services.mythtv.org/themes/repository/0.23/index/16:9/index.html
http://services.mythtv.org/themes/repository/0.23/index/16:10/index.html
Frontend will access like this:
http://services.mythtv.org/themes/repository/0.23/index/All/
http://services.mythtv.org/themes/repository/0.23/index/4:3/
http://services.mythtv.org/themes/repository/0.23/index/16:9/
http://services.mythtv.org/themes/repository/0.23/index/16:10/
Example Result for /themes/repository/0.23/16:9/:
Arclight
Graphite
LCARS
Mythbuntu
- Serves up static themeinfo.xml files for the above-named themes. These
have been modified by the index generator to include a downloadurl tag
to specify where to download the theme from.
Query:
http://services.mythtv.org/themes/repository/0.23/Graphite/themeinfo.xml
Example:
http://mythtv.bc2va.org/themes/repository/0.23/Graphite/themeinfo.xml
- Serves up static preview images for the above-named themes.
Query:
http://services.mythtv.org/themes/repository/0.23/Arclight/preview.png
Example:
http://mythtv.bc2va.org/themes/repository/0.23/Arclight/preview.png
- Optionally Serve up static tarballs for the above-named themes. We could
include an alternate download url in the themeinfo.xml file for use when
the rsync process had not completed yet and a tarball was not available from
the mirrors. This might come in handy once we have a theme uploader UI on
the website which allows people to upload and/or update their own themes
on the website.
Query:
http://services.mythtv.org/themes/downloads/Graphite/Graphite-1.1_0.23.tar.gz
Example:
http://mythtv.bc2va.org/themes/download/Graphite/Graphite-1.1_0.23.tar.gz
- Installing a new theme on the services website is as simple as:
- Copy tarball to .../themes/download/THEMENAME/THEMENAME-THEMEVERSION_MYTHVERSION.tgz
(NOTE: this location may change or their may need to be a script which puts the files
in the proper location for the OSUOSL rsync job)
ie, .../themes/download/Graphite/Graphite-1.1_0.23.tgz
- Theme tarball should included a versioned subdir (ie, 'Graphite-1.1_0.23', not 'Graphite')
- Unpack themeinfo.xml and preview images into repository dir for correct MythTV version
.../themes/repository/0.23/Graphite/themeinfo.xml
.../themes/repository/0.23/Graphite/preview.png
- Run the 'index generator' script.
- The sample services page above parses the themeinfo.xml files to check the aspect ratio as
well as to display the Theme information on the human-readable version of the webpage.
- mythfrontend
- Theme chooser
- Gets list of theme names from services webpage
- downloads themeinfo.xml file for each theme.
downloaded to temp directory under GetConfDir() ~/.mythtv/themedownloader/Graphite-1.1_0.23/themeinfo.xml
- parses themeinfo.xml using existing ThemeInfo class to allow displaying theme info on screen.
- downloads preview(s) for each theme
- presents user with a screen to download/install one or multiple themes
- Requests backend to download theme tarball when user picks a theme
- Can use a remote theme from the master BE over mythproto or D/L theme from MBE and install locally.
- mythbackend (master backend only)
- Downloads theme tarballs when requested by the frontend
- Sends out myth event when theme is downloaded
- Extracts downloaded themes to GetConfDir()/themes
- Serves up themes in GetConfDir()/themes subdir via normal mythproto file serving
- Serves up theme tarballs over myth proto for any FE to download locally and install.
Last modified
15 years ago
Last modified on 07/19/10 13:23:00
Note:
See TracWiki
for help on using the wiki.
