async def parse(self, response): if response is None: return self.logger.info(response.url) self.logger.info("for BiliBiliItem.get_items ···") try: async for item in BiliBiliItem.get_items(html=response.html): self.logger.info("parsing one···") if item.time is None: item.time = GetUploadTimer.Get(item.url) self.logger.info(item.time) self.logger.info(item.title) self.logger.info(item.url) # 去除特殊字符,不包含后缀名 fileName = re.sub('[\/:*?"<>|]','-', item.title) fileName = item.time + "_" + fileName # 是否已经在本地扫描的时候找到了相同的文件名 vi = VideoInfo(item.url) vi.time = item.time vi.title = item.title vi.isDownloaded = False vi.loaclFileName = fileName try: await self.lock.acquire() if fileName in self.uper.VideoInfoDic_loaclFileName: # 存在,则赋值 url 等信息 self.uper.VideoInfoDic_loaclFileName[fileName].url = item.url self.uper.VideoInfoDic_loaclFileName[fileName].time = item.time self.uper.VideoInfoDic_loaclFileName[fileName].title = item.title else: # 不存在,新建 self.uper.VideoInfoDic_loaclFileName[fileName] = vi # 网络动态获取到的 self.uper.VideoInfoDic_NetFileName[fileName] = vi finally: self.lock.release() except Exception as ex: try: await self.lock.acquire() self.uper.ErrorUrl_Dic[response.url] = str(ex) self.logger.error("Error BiliBiliItem: " + ex) finally: self.lock.release() self.logger.info("parsing one Done·")