Skip to content
music tag pie chart generator for
Python HTML
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


scaicha is a python script for pie chart generation. It generates a music tag chart based on the top artists of an arbitrary user.

The data is gathered with the help of the API and charts are drawn using the python module pycha.

scaidermern 6 month pie chart


  • python (version 2)
  • pycha (shipped, also needs cairo)
  • account with a sufficient number of submitted songs
  • convert from imagemagick or graphicsmagick (could be omitted with the help of some small code changes)


get the latest version from github and extract it

Linux (Debian/Ubuntu)

apt-get install python python-cairo graphicsmagick graphicsmagick-imagemagick-compat


  • recommended python version is 2.7
  • instead of graphicsmagick graphicsmagick-imagemagick-compat you can also install imagemagick


  • get python (recommended: python 2.7)
  • get pycairo matching your python version

note: for the following examples to work you need to open cmd.exe and switch to the directory of the extracted scaicha archive.


standard mode

just execute the with your python installation and supply at least the -u option including your username.

example: generate a pie chart using the default options:

  • Linux: $ python -u username
  • Windows: python.exe -u username

there are several options to configure the behaviour of scaicha:

-u <arg>, --user <arg> user name (required)
-p <arg>, --period <arg>      period of top artists (3, 6, 12; default: overall)
-i <arg>, --ignores <arg>     comma separated list of tags to ignore, e.g. "hip hop,rap"
-j <arg>, --join <arg>        combines a list of tag groups. groups are separated by commas, tags by colon
-m <arg>, --minTagPerc <arg>  minimum tag percentage (default: 1.0), less occuring tags will be merged into "other tags"
-c <arg>, --colorScheme <arg> color scheme to use (rainbow (default) or gradient)
-b <arg>, --baseColor <arg>   base color to use (hex string or a HTML 4.0 color name)
-l <arg>, --lighten <arg>     lighten base color by given factor (between 0.0 and 1.0)
-r <arg>, --resize <arg>      resize image
-s      , --score             enable score drawing
-d      , --dump              enable dumping tags to file
-t,     , --tagSubstitution   disable substitution of misspelled tags
-h      , --help              print this help and exit

some examples:

use only the top artists from the past three months:
$ python -u KarlKartoffel -p 3

define some tags to ignore: $ python -u WilliamKidd -i "hip hop,french"

combine some tags, here: combine 'classic rock' and 'hard rock' into 'rock':
$ python -u CaptainFarell -j "rock:classic rock:hard rock"
combine even more tags (note the usage of ':' and ','):
$ python -u CaptainFarell -j "rock:classic rock:hard rock,metal:heavy metal:power metal"
you can even create new tags or rename existing ones if you like:
$ python -u CaptainFarell -j "good stuff:rock:metal,bad stuff:hiphop:rap,worst crap ever:indie"

draw a color gradient instead of the default rainbow colors:
$ python -u Pferdinand -c gradient

use another base color:
$ python -u AverageJoe -b "#7d00ff"
$ python -u JohnSmith -b maroon

lighten base color slightly:
$ python -u AaronAronsen -l 0.3

note: all parameters can be combined

CGI mode

  • enable CGI at your webserver
  • copy, and in your CGI directory
  • set CGI to True in
  • make sure your webserver is able to create new files inside the CGI directory in order to use the cache
  • place the cgi.html document in the webserver's html directory and adapt the location of in the form
  • open cgi.html in your browser

note: the CGI mode lacks proper testing, use at your own risk


GPL v3 (c) Alexander Heinlein, Deamon Hell

You can’t perform that action at this time.