Kodi Community Forum
Maraschino (formerly HTPC Frontend) - a summary web interface for your XBMC HTPC - Printable Version

+- Kodi Community Forum (https://forum.kodi.tv)
+-- Forum: Support (https://forum.kodi.tv/forumdisplay.php?fid=33)
+--- Forum: Supplementary Tools for Kodi (https://forum.kodi.tv/forumdisplay.php?fid=116)
+--- Thread: Maraschino (formerly HTPC Frontend) - a summary web interface for your XBMC HTPC (/showthread.php?tid=113136)



- mrkipling - 2011-11-10

niietzshe Wrote:Thanks. Yeah I think only XBMC and Sabnzbd is in there. But I haven't updated for a day or two Wink

DejaVu added a whole bunch of new icons which you can see in the repository here, so if you update the repo then you should be good to go.


- mrkipling - 2011-11-10

Archigos Wrote:I tried doing that and not sure exactly why, but I assume it's a Windows issue, but when you run the CherryPy version it throws errors and refuses to run, that's why I wrote those that way since it worked without a problem. If you'd like, I can try running the CherryPy version again and screenshot the error for you.

If you wouldn't mind then that would be great, I'd like to have a look at it. I'm hesitant to add a method which uses Flask's dev server to the "official" list of methods because it's pretty unstable. Even so, it might be worth linking to from the site (with a warning) so that Windows users at least have some way of testing it out...


- mrkipling - 2011-11-10

gugahoi Wrote:Dude, this project seems to be advancing really quickly! I gotta go get me the latest version to see how it performs!!

Can't wait for next week when I finally have some free time and can start my attempt at some python coding!

Thanks! I've had some spare time these past three weeks so have spent a lot of time getting this project underway good and proper. I'm starting a new job on Monday so won't be able to put in 8 hour days any more :p but will still find time on weekends and some evenings, I'm sure.


- Archigos - 2011-11-10

I edited the above post with the error for you. I think I may know why it's having an issue with wsgi (at least on my system) so I'm running some tests and will let you know shortly.

--EDIT--
I managed to fix the issue and updated the instructions to match those. For those curious, the issue wasn't because of Maraschino, it was because I use both Python 2.6 and Python 2.7 on the same system due to compatibility for some other things I use. So initially when I tried to run the CherryPy version it was accidentally running Python 2.6 instead of 2.7, so I just installed CherryPy to that one as well and it's all good no matter which it decided to do now. If others encounter this issue, just run ONLY the 'easy_install cherrypy' command to Python 2.6 and leave everything else connected to 2.7.


- mrkipling - 2011-11-10

Archigos Wrote:I edited the above post with the error for you. I think I may know why it's having an issue with wsgi (at least on my system) so I'm running some tests and will let you know shortly.

From the above, it looks CherryPy isn't installed, at least as far as Python is concerned.

I need to install a VM anyway so that I can use Photoshop again (the only reason I don't have one at the moment is because I reinstalled my entire system a few weeks ago) - I'll probably do that this afternoon and have a go at getting Maraschino running too.


- snoopy1492 - 2011-11-10

mrkipling Wrote:Excellent! I was planning on implementing click-to-seek on the progress bar, but if you're thinking of giving it a go then I'll focus on other things for now Smile

I'll see what I can do this weekend but I wanted to do something precise (not just a random click but more like holding the click while moving left or right and setting by releasing ) and I may have problem with the refresh every 5 seconds...

Any idea?


- mrkipling - 2011-11-10

snoopy1492 Wrote:I'll see what I can do this weekend but I wanted to do something precise (not just a random click but more like holding the click while moving left or right and setting by releasing ) and I may have problem with the refresh every 5 seconds...

Any idea?

That's a nice idea. I'll have a think and get back to you.


- gugahoi - 2011-11-10

It's running with the single downside that I'm still using Dharma.... but WOW!

This looks so polished! I love how you implemented configurations as well... I guess I'm going to have to learn a lot of python to start making some new modules for this...! Thanks for your work! It is highly appreciated.


- Mar2zz - 2011-11-10

@ gugahoi and dejavu:
since you both are going to dev in this is mediafrontpage slowed down or abandoned by that?


- gugahoi - 2011-11-10

Mar2zz Wrote:@ gugahoi and dejavu:
since you both are going to dev in this is mediafrontpage slowed down or abandoned by that?

I still want to do some modifications in MFP, light ones tho, while this is developing. MFP will probably still be my main Web Interface until this is a bit more advanced (the way it is progressing, it seems like it won't take long) but to be honest I haven't coded much in the past couple of months since I have been so busy. I believe Deja is the one who should answer this...


Anyone knows a good place to start learning intermediate python stuff?


- mrkipling - 2011-11-10

I've just pushed a fun little addition (nothing major) - the option to choose a random background on page load. You can also add your own custom backgrounds. From the updated FAQ:

How do I add my own custom backgrounds?

First of all, enter settings mode and make sure that "Use a random background when not watching media" is set to "Yes". When this setting is enabled, a random background will be selected when you first load the page. If you also have "Show fanart background when watching media" enabled then the fanart of whatever you're currently watching will replace it, provided that you're actually watching something.

Now, add whatever JPG and PNG files you like to "static/images/backgrounds/custom". This directory is in the gitignore file, which means that anything that you put in here will not be replaced when updating to a new version of Maraschino.

Special thanks to uribaani for providing the lovely Glowen background!


- mrkipling - 2011-11-10

gugahoi Wrote:It's running with the single downside that I'm still using Dharma.... but WOW!

This looks so polished! I love how you implemented configurations as well... I guess I'm going to have to learn a lot of python to start making some new modules for this...! Thanks for your work! It is highly appreciated.

Thanks for the support - to be honest I'm surprised and a little taken aback that so many people are using it already, it just started out as little thing I made one day when I was bored to list recently added episodes and link to my various applications Smile

gugahoi Wrote:Anyone knows a good place to start learning intermediate python stuff?

If you've done any programming at all in the past then clone the repository and have a poke around. Python is very intuitive, it's kind of like natural English - it quite often just "makes sense". When I started my previous web development job a couple of years ago I had never used Python at all (I'm primarily a front-end developer) but Python is so intuitive that I was able to jump in and start writing stuff pretty much from the get go. So yeah, don't underestimate learning by looking at existing code!

Dive Into Python is a pretty good ebook, so you might want to have a look at that to get an overview of the language.

Maraschino uses Flask, which is a beautiful, minimal framework. There's a nice quickstart guide here. Again, very intuitive - I used it for the first time three weeks ago when I started development on Maraschino. Part of the reason that I created Maraschino was because I wanted an excuse to learn Flask Smile

Flask (and therefore Maraschino) uses Jinja2, which is a template engine. Again, it just "makes sense" - you might want to take a look here.


- gugahoi - 2011-11-10

mrkipling Wrote:Thanks for the support - to be honest I'm surprised and a little taken aback that so many people are using it already, it just started out as little thing I made one day when I was bored to list recently added episodes and link to my various applications Smile

If you've done any programming at all in the past then clone the repository and have a poke around. Python is very intuitive, it's kind of like natural English - it quite often just "makes sense". When I started my previous web development job a couple of years ago I had never used Python at all (I'm primarily a front-end developer) but Python is so intuitive that I was able to jump in and start writing stuff pretty much from the get go. So yeah, don't underestimate learning by looking at existing code!

Dive Into Python is a pretty good ebook, so you might want to have a look at that to get an overview of the language.

Maraschino uses Flask, which is a beautiful, minimal framework. There's a nice quickstart guide here. Again, very intuitive - I used it for the first time three weeks ago when I started development on Maraschino. Part of the reason that I created Maraschino was because I wanted an excuse to learn Flask Smile

Flask (and therefore Maraschino) uses Jinja2, which is a template engine. Again, it just "makes sense" - you might want to take a look here.

Most programming I know came from need. So hopefully I'll be able to learn this too. One thing I'm trying to figure out tho. In the add_edit_application_dialog.html template, what kind of variables are accessible to me? If I want to create another variable, how should I pass it to this template? Is it through the render_template function you have already created? And if so, I presume I'd have to modify it to accomodate other variables right?

This is what I'm doing by the way.

Image

But instead of these options, I have a variable with the contents of the application icons folder. I think you understand what I'm trying to accomplish right?

Cheers


- dannycorker - 2011-11-10

Archigos Wrote:Instructions for installing on Windows 7 or Windows Server 2008 R2

If you haven't done so already, install Python 2.7 and Python Setuptools.

Once these are installed, open an Administrative Command Prompt (Click Start and in the run box type 'cmd' and right-click on 'cmd' and "Run as Administrator")

In Command Prompt
Code:
cd %SystemDrive%\Python27\Scripts
Once in the script folder, do the following commands (one per line)
Code:
Python easy_install cherrypy
Python easy_install Flask
Python easy_install Flask-SQLAlchemy
Python easy_install jsonrpclib
Once each of those have been installed, change back to the folder you have downloaded the Maraschino files to and:
Code:
copy settings_example.py settings.py
notepad settings.py
Set the correct path to the Database file.

Next (still in command prompt)
Code:
python setup.py
start python maraschino-cherrypy.py
Only do the second command if the first one stated it was successful. Congrats.

If you want this to run on each boot, the easiest way is to create a bat file and put it in your Startup folder (this method only works while someone is logged in) there are other ways of making it run without log in.

Maraschino.bat
Code:
cd "Path to Maraschino"
Python maraschino-cherrypy.py

For the setup tools, should I download the Windows exe version? I have tried it with that, using the easy_install.exe provided, and everything seemed to go fine, but I get an error when I run setup:

Code:
You need to specify DATABASE in settings.py, and ensure that Flask-SQLalchemy is installed.

This is the database section of settings.py:

Quote:DATABASE = 'C:/Users/Danny/.maraschino/maraschino.db'

So I assume something must have gone wrong with the easy installs, although I didn't see anything to suggest it did. Interestingly, if I run the easy install the way you did, I get this error message:

Code:
SyntaxError: Non-ASCII character '\x90' in file easy_install on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

The easy installs seemed to work fine by adding the scripts folder to my PATH and using the exe file :S

Any help would be great!


- mrkipling - 2011-11-10

@gugahoi:

I can see that you're trying to make the icons list a dropdown. Neat! Let me give you a little background on how the modules system is set up. Hopefully it will help others, too, and the more people that understand the system and want to develop, the better Smile

render_template is a part of Flask - you pass it the file name of the template and whatever variables/objects/whatever you want and it (as you may have guessed) renders the template.

Modules are defined in modules.py, in the array AVAILABLE_MODULES.

* name is the internal name of the module - basically its ID - and must be unique.

* label is the title that is displayed in the module when it's on the page.

* description is the descriptive text used in the "add module" dialog.

* static defines whether module is static or not. If set to True then it is included on the page on page load, like the applications dialog for example. If a module is static then the poll and delay values are ignored, as it's static, and they won't be exposed to the user in the settings dialog. If a module is not static then it is lazily-loaded after page load using AJAX; this is a good thing as it means that the page will load faster.

* poll is how frequently the module should be polled (in seconds), and delay will delay loading of the module. It's quite important to know that these are just the default values for the module - once a user adds the module to the page, we add an entry to the "modules" table which contains information about the module (column, position, poll, delay) and the settings in the database are now used.

* Finally, we have settings. This describes extra settings that are added as key/value pairs to the "settings" table. An example of extra settings are the API key / username / password fields in the trakt module.

This system allows for most modules to use the same basic code to store settings, edit settings, etc. and makes development a lot easier.

Now, some modules are a bit different because they don't lend themselves very well to key/value settings - Applications is one of these modules because you can have lots of applications added, and creating settings like "application1_name", "application2_name" etc. would gross. To get round this we store applications in their own table, "applications".

Okay, so that's the basics of the module system. I'll split this up into two posts so that this one isn't too long, and will explain how I'd go about making the icon field a dropdown in the next post.