Exemplo n.º 1
0
 def get_refresh_video_barrage(self, cid, row_barrages):
     barrage_file_path = FileUtil.get_barrage_file_path(cid)
     # 检查该cid的弹幕文件是否存在,如果不存在,那么此时的row_barrages数据将全部写入文件中,
     # 如果存在,那么就只要找到更新的弹幕记录。
     barrage_count = 0
     if FileUtil.is_file_exists(barrage_file_path):
         last_barrage_index = -1  # 记录文件中最后一条弹幕在row_barrages中的下标。
         barrage_count = FileUtil.get_file_line_count(barrage_file_path)
         last_n_barrages = FileUtil.get_file_last_n_line_content(barrage_file_path, 5)
         Logger.print_console_info(u"当前文件的最后n条弹幕:\n" + u"\n".join(last_n_barrages))
         for index in xrange(len(row_barrages) - 1, -1, -1):
             if self.__is_same_barrage(last_n_barrages, row_barrages[index]):
                 # 获得存储在弹幕文件中的最后一条弹幕,在更新弹幕序列中的位置。
                 last_barrage_index = index
                 break
         # 当前弹幕数据没有更新
         if last_barrage_index == (len(row_barrages) - 1):
             row_barrages = []
             Logger.print_console_info(unicode(DateTimeUtil.get_cur_timestamp("%Y-%m-%d %H:%M:%S")) +
                                            u"\t" + u"弹幕数据没有更新。")
         # 此时部分的弹幕数据需要更新
         elif last_barrage_index >= 0:
             Logger.print_console_info(unicode(DateTimeUtil.get_cur_timestamp("%Y-%m-%d %H:%M:%S")) +
                                            u"\t" + u"有弹幕数据更新:" +
                                            u"\t" + str(len(row_barrages) - last_barrage_index - 1))
             row_barrages = row_barrages[last_barrage_index + 1: len(row_barrages)]
         # 弹幕全文都要更新
         elif last_barrage_index == -1:
             Logger.print_console_info(unicode(DateTimeUtil.get_cur_timestamp("%Y-%m-%d %H:%M:%S")) + u"\t" +
                                            u"有弹幕数据更新:" + u"\t" + str(len(row_barrages)))
     barrage_count += len(row_barrages)
     Logger.print_console_info(unicode(DateTimeUtil.get_cur_timestamp("%Y-%m-%d %H:%M:%S")) +
                                    u" 当前弹幕总条数:" + unicode(barrage_count) + u"\n\n")
     return row_barrages
 def get_refresh_video_barrage(self, cid, row_barrages):
     barrage_file_path = FileUtil.get_barrage_file_path(cid)
     # 检查该cid的弹幕文件是否存在,如果不存在,那么此时的row_barrages数据将全部写入文件中,
     # 如果存在,那么就只要找到更新的弹幕记录。
     barrage_count = 0
     if FileUtil.is_file_exists(barrage_file_path):
         last_barrage_index = -1  # 记录文件中最后一条弹幕在row_barrages中的下标。
         barrage_count = FileUtil.get_file_line_count(barrage_file_path)
         last_n_barrages = FileUtil.get_file_last_n_line_content(barrage_file_path, 5)
         Logger.print_console_info(u"当前文件的最后n条弹幕:\n" + u"\n".join(last_n_barrages))
         for index in xrange(len(row_barrages) - 1, -1, -1):
             if self.__is_same_barrage(last_n_barrages, row_barrages[index]):
                 # 获得存储在弹幕文件中的最后一条弹幕,在更新弹幕序列中的位置。
                 last_barrage_index = index
                 break
         # 当前弹幕数据没有更新
         if last_barrage_index == (len(row_barrages) - 1):
             row_barrages = []
             Logger.print_console_info(unicode(DateTimeUtil.get_cur_timestamp("%Y-%m-%d %H:%M:%S")) +
                                            u"\t" + u"弹幕数据没有更新。")
         # 此时部分的弹幕数据需要更新
         elif last_barrage_index >= 0:
             Logger.print_console_info(unicode(DateTimeUtil.get_cur_timestamp("%Y-%m-%d %H:%M:%S")) +
                                            u"\t" + u"有弹幕数据更新:" +
                                            u"\t" + str(len(row_barrages) - last_barrage_index - 1))
             row_barrages = row_barrages[last_barrage_index + 1: len(row_barrages)]
         # 弹幕全文都要更新
         elif last_barrage_index == -1:
             Logger.print_console_info(unicode(DateTimeUtil.get_cur_timestamp("%Y-%m-%d %H:%M:%S")) + u"\t" +
                                            u"有弹幕数据更新:" + u"\t" + str(len(row_barrages)))
     barrage_count += len(row_barrages)
     Logger.print_console_info(unicode(DateTimeUtil.get_cur_timestamp("%Y-%m-%d %H:%M:%S")) +
                                    u" 当前弹幕总条数:" + unicode(barrage_count) + u"\n\n")
     return row_barrages
Exemplo n.º 3
0
 def save_barrages_to_local(self, cid, row_barrages, is_corpus=False):
     barrage_count = len(row_barrages)
     if barrage_count <= 0:  # 是对于要存储入数据库的弹幕来说的。
         return
     barrage_file_path = FileUtil.get_barrage_file_path(cid, is_corpus)
     if is_corpus:
         if barrage_count < 100:  # 弹幕数量小于100的弹幕不作为语料库弹幕数据。
             return
         row_barrages = self.sort_barrages(row_barrages)
         # 如果需要作为语料库的信息,那么 弹幕数量 频率至少为每10秒钟 一条,这样才能保持内容的连贯性。
         try:
             total_seconds = float(row_barrages[-1][0].strip())
             if (total_seconds / 10) > barrage_count:
                 return
         except Exception as exception:
             print exception
             return
     with codecs.open(barrage_file_path, "ab", "utf-8") as output_file:
         for barrage in row_barrages:
             if barrage is not None:
                 output_file.write(u"\t".join(barrage) + u"\n")
 def save_barrages_to_local(self, cid, row_barrages, is_corpus=False):
     barrage_count = len(row_barrages)
     if barrage_count <= 0:  # 是对于要存储入数据库的弹幕来说的。
         return
     barrage_file_path = FileUtil.get_barrage_file_path(cid, is_corpus)
     if is_corpus:
         if barrage_count < 100:  # 弹幕数量小于100的弹幕不作为语料库弹幕数据。
             return
         row_barrages = self.sort_barrages(row_barrages)
         # 如果需要作为语料库的信息,那么 弹幕数量 频率至少为每10秒钟 一条,这样才能保持内容的连贯性。
         try:
             total_seconds = float(row_barrages[-1][0].strip())
             if (total_seconds / 10) > barrage_count:
                 return
         except Exception as exception:
             print exception
             return
     with codecs.open(barrage_file_path, "ab", "utf-8") as output_file:
         for barrage in row_barrages:
             if barrage is not None:
                 output_file.write(u"\t".join(barrage) + u"\n")