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()
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)
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
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()
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
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"