def infoload(self): """ データの読み込み 最初にやる """ try: nicodl = DL.nicoDL_DL(self.infofile_dir) self.nico_id = nicodl.pickup('nico_id') self.nico_pw = nicodl.pickup('nico_pw') self.gmail_id = nicodl.pickup('gmail_id') self.gmail_pw = nicodl.pickup('gmail_pw') self.toaddr = nicodl.pickup('toaddr') self.savedir = os.path.join(nicodl.pickup('savedir'))#, 'movies') except: # エラー print 'load error'
def OnSetting(self, evt): dlg = SettingDialog(parent=self, gmail_id=self.gmail_id, gmail_pw=self.gmail_pw, nico_id=self.nico_id, nico_pw=self.nico_pw, toaddr=self.toaddr, savedir=self.savedir) val = dlg.ShowModal() if val == wx.ID_OK: print u'情報を保存' nicodl = DL.nicoDL_DL(self.infofile_dir) infos = dlg.getvalues() self.gmail_id = infos['gmail_id'] self.gmail_pw = infos['gmail_pw'] self.nico_id = infos['nico_id'] self.nico_pw = infos['nico_pw'] self.toaddr = infos['toaddr'] self.savedir = infos['savedir'] # 保存 nicodl.infofilesave(nicodl.mkcliantinfoformat(self.gmail_id, self.gmail_pw, self.nico_id, self.nico_pw, self.toaddr, self.savedir)) self.myprint('Gmail ID', self.gmail_id) self.myprint('Gmail PW', u'*'*len(self.gmail_pw)) self.myprint('Nicovideo ID', self.nico_id) self.myprint('NIcovideo PW', u'*'*len(self.nico_pw)) self.myprint('toAddr', self.toaddr) self.myprint('Savedir', self.savedir) else: print 'Cancel' dlg.Destroy()
def download(self): u""" *ダウンロードの全体を統括する関数. *一通り終わったら、ループせずにself.running=Falseにする """ self.DLstart() nicodl = DL.nicoDL_DL(self.infofile_dir) various = Various.nicoDL_Various(self.libfile_dir) while True: try: print u'Gmailにアクセスしています...' myformat = nicodl.geturl() # Gmailチェック self.SetStatusText(u'Gmailにログイン') break except: self.SetStatusText(u'Gmailにログインできませんでした...') myformat = False break #print "myformat:", myformat if myformat == False: pass # Gamilが空 else: # library_ALL.ndl に追加 various.write_library(myformat) while True: if self.checkdir(self.savedir): self.savedir = self.checkdir(self.savedir) break else: # 空き容量不足でループをリセット print u"空き容量不足:\n ->%s" % self.savedir time.sleep(3) self.DLstop() if not self.running: return continue print self.savedir, u"に保存" if not self.running: return # RSS print u"RSSチェック中..." self.SetStatusText(u"RSSチェック中...") various.rsscheck() self.SetStatusText(u"RSSチェック完了") print u"RSSチェック完了!" """DL部分""" # 動画IDが保存されていない if various.getmovieIDs() == []: self.DLstop() wx.PostEvent(self, self.startevt) return # DL対象を決定 movies = [] for item in various.getmovieIDs(): if not (various.pickup(movie_id=item, choice='state')): movies.append(item) for movie in movies: if not self.running: return movie_obj = various.pickup(movie_id=movie) # obj if movie_obj.mylist_id != False: # マイリスから mylistflag = movie_obj.mylist_id nico = Nicovideo.Nicovideo(movie_id=movie_obj.movie_id, mylist_id=movie_obj.mylist_id) else: # マイリスからじゃない mylistflag = False nico = Nicovideo.Nicovideo(movie_id=movie_obj.movie_id) # 情報取得 if movie_obj.movie_name: title = movie_obj.movie_name else: title = nico.get_movie_title() self.movie_name_st.SetLabel(title) # 動画名セット description = nico.get_movie_description() # self.myprint(movie_obj.movie_id, title) # 終了時間計算 length = nico.get_movie_length() minute = int(length.split(':')[0]) second = int(length.split(':')[1]) now = datetime.datetime.now() end = now + datetime.timedelta(minutes=minute, seconds=second) end = end.strftime(u'%m/%d %H:%M') self.myprint(movie_obj.movie_id, "".join([end, u"頃終了します."])) # サムネ保存 self.myprint(movie_obj.movie_id, u" サムネイル取得中...") self.SetStatusText(u'サムネイル取得中...') thumbnail = nico.save_thumbnail(os.path.join(self.cwd, "data\\thumbnail")) # 動画保存 self.myprint(movie_obj.movie_id, u" 動画取得中...") self.SetStatusText(u'動画取得中...') self.SetTitle(u'%s - %s - %s' % (self.windowtitle, movie_obj.movie_id, end)) try: movie_path = self.movie_dl(myformat=movie_obj, mylist_id=mylistflag) except DownloadInterraptionException: print 'download() raise DLExcept' self.DLstop() return self.myprint(movie_obj.movie_id, "".join([u" 動画取得完了!"]))#, "\n =>", movie_path])) # コメント保存 self.myprint(movie_obj.movie_id, u" コメント取得中...") self.SetStatusText(u'コメント取得中...') ff = open(os.path.splitext(movie_path)[0] + '.xml', 'w') ff.write(nico.get_comment(self.nico_id, self.nico_pw, 1000)) ff.close() # 情報書き換え self.myprint(movie_obj.movie_id, u"情報を更新します...") various.rewrite_library(factor="thumbnail", value=thumbnail, movie_id=movie_obj.movie_id) various.rewrite_library(factor="state", value=True, movie_id=movie_obj.movie_id) various.rewrite_library(factor="movie_path", value=movie_path, movie_id=movie_obj.movie_id) # マイリスが登録されていたらそのマイリスのDL済みに追加 if movie_obj.mylist_id != False: ed = various.pickup(mylist_id=movie_obj.mylist_id, choice='downloaded') if not(movie_obj.movie_id in ed): # 入ってないとき various.rewrite_library(factor="downloaded", value=movie_obj.movie_id, mylist_id=movie_obj.mylist_id) # メール送信 if self.mailcheck: self.myprint(movie_obj.movie_id, u" 完了メール送信") mail = SendMail.nicodl_sendmail(self.gmail_id, self.gmail_pw, self.toaddr) mail.main("".join([title, "\n\n", description]), movie_obj.movie_id) #nicodl.extention() # 拡張 #break print u"次..." time.sleep(3) self.DLstop() print u'1セット終了' for i in xrange(300, 0): self.SetStatusText(u'待機中...残り%i秒' % i) time.sleep(1) wx.PostEvent(self, self.finishevt) wx.PostEvent(self, self.startevt)