Internet radio browser GUI for music/video streams from various directory services.

⌈⌋ ⎇ branch:  streamtuner2


history.py at [f17890596d]

File channels/history.py artifact d33de09886 part of check-in f17890596d


#
# api: streamtuner2
# title: History
# description: List recently played stations under favourites > history.
# version: 1.0
# type: category
# category: ui
# priority: optional
# 
# Lists last activated streams in a new [history] tab in the favourites
# channel.
#
#
#



from config import conf, __print__, dbg
from channels import *



class history:

    # plugin info
    module = "history"
    title = "History"
    
    
    # configuration settings
    config = [
        {
            "name": "history",
            "type": "int",
            "value": "20",
            "description": "Number of last played streams to keep in history list.",
            "category": "limit"
        }
    ]
    
    # store
    bm = None


    # hook up to main tab
    def __init__(self, parent):

        # keep reference to main window    
        self.bm = parent.channels["bookmarks"]

        # create category
        self.bm.add_category("history");
        self.bm.reload_if_current(self.module)

        # hook up to .play event
        parent.hooks["play"].append(self.queue)

        
    # add to favourites/history stream list
    def queue(self, row):
    
        # assert a present store
        streams = self.bm.streams
        if not "history" in streams:
            streams["history"] = []
        hist = streams["history"]

        # only new entries get added
        if not row in hist:
            hist.insert(0, row)
        
        # limit number of entries
        max = int(conf.history)
        while max > 0 and  len(hist) > max:
            hist.pop()

        # update store
        self.bm.save()
        self.bm.reload_if_current(self.module)