Example #1
0
 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'
Example #2
0
 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()
Example #3
0
    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)