Exemplo n.º 1
0
    def register(self, mid):
        """
        register in database mid
        if mid is already registered, it marks unload

        mid: mylistid or movieid
        return: bool
        """
        db = Database(self.databasePath)
        if mid[0:2] == "sm":
            if db.extMovieidInTable(mid):
                db.setMovieState(mid, 0)
            else:
                apiMovie = NicovideoAPI(movie_id=mid)
                movieTitle = apiMovie.get_movie_title()
                db.addMovie(mid)
                db.setMovieTitle(mid, movieTitle)
        else:
            if db.extMylistInTable(mid):
                db.setMylistRss(mid, 1)
            else:
                api = NicovideoAPI(mylist_id=mid)
                mylistTitle = api.get_mylist_title().decode(self.sysenc)
                db.addMylist(mid)
                db.setMylistTitle(mylistTitle)
        db.close()
Exemplo n.º 2
0
    def main(self):
        """
        call each daemons
        """
        db = Database(self.databasePath)
        db.ctTable()
        db.close()

        daemon = (self.daemonRss,
                  self.daemonScan,
                  self.daemonLoad,
                  )
        for func in daemon:
            th = threading.Thread(target=func)
            th.daemon = True
            th.start()
            time.sleep(3)
Exemplo n.º 3
0
    def _scanning(self):
        """
        scanning the database
        add to queue videos id unloaded
        should be called at regular intervals

        retunrn: added movieid num in queue
        """
        num = 0
        self.logging("scanning")
        db = Database(self.databasePath)
        for movieid in db.getMovieState0():
            self.queue.add(movieid)
            self.logging("AddQueue: %s" % movieid)
            num += 1
        db.close()
        return num
Exemplo n.º 4
0
 def _rss(self):
     """
     check new movieid from include mylistid
     register in database to the new movieid
     """
     self.logging("rss")
     db = Database(self.databasePath)
     for mylistid in db.getMylistAll():
         if db.getMylistRss(mylistid):
             self.logging("RSS: %s" % mylistid)
             hitNum = 0
             apiMylist = NicovideoAPI.Nicovideo(mylistid=mylistid)
             for movieid in apiMylist.get_mylist_movies():
                 if not(movieid in db.getMylistHasMovieFromMylistId(mylistid)):
                     self.logging("RSS: Hit: %s" % movieTitle)
                     db.addMylistHasMovie(mylistid, movieid)
                     self.register(movieid)
                     db.setMovieTitle(movieid, movieTitle)
                     hitNum += 1
             self.logging("RSS: %s: %2dhit" % (mylistid, hitNum))
     db.close()
Exemplo n.º 5
0
 def load(self, movieid):
     """
     load movieid
     """
     movieid = movieid
     self.logging("load: %s" % movieid)
     # 各データの取得
     db = Database(self.databasePath)
     sdb = SystemDatabase(self.systemDatabasePath)
     nicoid = sdb.getNicoid()
     nicopw = sdb.getNicopw()
     savedir = sdb.getSavedir()
     sdb.close()
     api = NicovideoAPI(movie_id=movieid)
     title = api.get_movie_title()
     moviePath = api.save_movie(nicoid, nicopw, savedir)  # 保存専用のクラスを定義する。一時停止可能なもの
     # 登録
     db.setMoviePath(movieid, moviePath)
     db.setMovieState(movieid, 1)
     self.queue.done()
     db.close()
     return True
Exemplo n.º 6
0
    def __init__(self, *args, **kwds):
        Log.__init__(self)
        self.__queueList = []
        self.__queueDict = {}
        if platform.system().lower() == "windows":
            # win用に書く
            pass
        else:
            home = os.getenv("HOME")
        nmlHome = os.path.join(home, WORKDIR)
        if not os.path.exists(nmlHome):
            os.mkdir(nmlHome)
        self.databasePath = os.path.join(nmlHome, DATABASE_FILE)
        self.systemDatabasePath = os.path.join(nmlHome, SYSTEM_DATABASE_FILE)

        db = Database(self.databasePath)
        db.ctTable()
        db.close()
        sdb = SystemDatabase(self.systemDatabasePath)
        sdb.ctTable()
        nid = sdb.getNicoid() if sdb.getNicoid() else u""
        npw = sdb.getNicopw() if sdb.getNicopw() else u""
        gid = sdb.getGmailid() if sdb.getGmailid() else u""
        gpw = sdb.getGmailpw() if sdb.getGmailpw() else u""
        sdr = sdb.getSavedir() if sdb.getSavedir() else u""
        sdb.close()

        self.nicoTable = NTable(nid, npw, gid, gpw, sdr)

        # begin wxGlade: NicoMovieLoadGUI.__init__
        kwds["style"] = wx.DEFAULT_FRAME_STYLE
        wx.Frame.__init__(self, *args, **kwds)
        self.treeCtrl = gizmos.TreeListCtrl(self, -1, style=wx.TR_HAS_BUTTONS | wx.TR_NO_LINES | wx.TR_FULL_ROW_HIGHLIGHT | wx.TR_HIDE_ROOT | wx.TR_DEFAULT_STYLE)
        self.pnlCenter = wx.Panel(self, -1)
        self.lblUrl = wx.StaticText(self.pnlCenter, -1, "URL:")
        self.tclUrl = wx.TextCtrl(self.pnlCenter, -1, "", style=wx.TE_PROCESS_ENTER)
        self.pnlBottom = wx.Panel(self, -1)
        self.lblQueueList = wx.StaticText(self.pnlBottom, -1, "QueueList:")
        self.lclQueueList = wx.ListCtrl(self.pnlBottom, -1, style=wx.LC_REPORT | wx.LC_AUTOARRANGE | wx.LC_NO_HEADER | wx.SUNKEN_BORDER)
        self.lblLog = wx.StaticText(self.pnlBottom, -1, "Log:")
        self.tclLog = wx.TextCtrl(self.pnlBottom, -1, "", style=wx.TE_MULTILINE | wx.TE_READONLY)
        self.static_line_1 = wx.StaticLine(self, -1, style=wx.LI_VERTICAL)
        self.pnlRight = wx.Panel(self, -1)
        self.btnRss = wx.ToggleButton(self.pnlRight, -1, "RSS")
        self.btnAdd = wx.Button(self.pnlRight, -1, u"新規登録")
        self.btnLoad = wx.Button(self.pnlRight, -1, u"再ロード")
        self.btnClearLog = wx.Button(self.pnlRight, -1, u"ログ消去")
        self.btnDelete = wx.Button(self.pnlRight, -1, u"削除")
        self.btnSettings = wx.Button(self.pnlRight, -1, u"設定")
        self.btnExit = wx.Button(self.pnlRight, -1, "Exit")

        self.__set_properties()
        self.__do_layout()
        # end wxGlade
        self.__bind()
        self.__setTreeListCtrl()
        self.__set_QueueListCtrl()
        # other wigets
        self.dlgSettings = SettingsDialog(self.nicoTable, self.logging, self)
        # main
        self.nicoMain = NicoMovieLoadMain(self.databasePath, self.systemDatabasePath, self.logging)
        self.nicoMain.main()
        # timer
        timer = wx.Timer(self)
        timer.Start(3 * 1000)
        print "timer start"