from canto_curses.taglist import TagListPlugin
from canto_curses.command import command_format

import traceback
import logging
import codecs
import locale
import os

log = logging.getLogger("SAVE")

SAVE_PATH="~/canto-saves"

class SaveCommand(TagListPlugin):
    def __init__(self):
        self.path = os.path.expanduser(SAVE_PATH)
        self.enc = locale.getpreferredencoding()

    @command_format([("items", "listof_items")])
    def cmd_save(self, taglist, **kwargs):
        try:
            f = codecs.open(self.path, "a", self.enc, "ignore")
            for item in kwargs["items"]:
                f.write("title: %s\n" % item.content["title"])
                f.write("link: %s\n" % item.content["link"])
                f.write("\n")
            f.close()
        except Exception, e:
            tb = traceback.format_exc(e)
            log.error("Save plugin exception:")
            log.error("\n" + "".join(tb))

