def getTvShowImages(self, showId, lang): try: if showId.startswith(TMDBScraper.showIdPrefix): # TMDB TV 에피소드 목록 조회 return TMDBScraper(SVC_NAME).getTvShowImages4Kodi(showId, lang) elif showId.startswith(DaumScraper.showIdPrefix): # Daum TV 에피소드 목록 조회 return DaumScraper(SVC_NAME).getTvShowImages4Kodi(showId, lang) elif showId.startswith(MockScraper.showIdPrefix): # 테스트용 return MockScraper(SVC_NAME).getTvShowImages4Kodi(showId, lang) else: return '{"error":"Invalid Id","id":"{0}"}'.format(showId) except Exception as e: log_err(str(e))
def getMovieDetail(self, movieId, lang, imageSrc): try: if movieId.startswith(TMDBScraper.movieIdPrefix) or movieId.startswith('tt') : # TMDB 영화정보 조회 return TMDBScraper(SVC_NAME).getMovieDetail4Kodi(movieId, lang, imageSrc) elif movieId.startswith(DaumScraper.movieIdPrefix): # Daum 영화정보 조회 return DaumScraper(SVC_NAME).getMovieDetail4Kodi(movieId, lang, imageSrc) elif movieId.startswith(DummyScraper.movieIdPrefix): # Dummy 영화정보 생성 return DummyScraper(SVC_NAME).getMovieDetail4Kodi(movieId, lang, imageSrc) elif movieId.startswith(MockScraper.movieIdPrefix): # 테스트용 return MockScraper(SVC_NAME).getMovieDetail4Kodi(movieId, lang, imageSrc) else: return '{"error":"Invalid Id","id":"{0}"}'.format(movieId) except Exception as e: log_err(str(e))
def findTvShows(self, query, year, lang, metaSrc): try: query = re.sub('[\.\[\]\-=:]', ' ', query) # 특수문자 제거 query = re.sub(' [ ]+', ' ', query) # 연속된 공백은 공백 하나로 변경 query = query.strip().rstrip() # 앞,뒤 공백 trim if (metaSrc == 'tmdb'): # TMDB에서 검색 return TMDBScraper(SVC_NAME).findTvShows4Kodi(query, year, lang) elif (metaSrc == 'daum'): # Daum에서 검색 return DaumScraper(SVC_NAME).findTvShows4Kodi(query, year, lang) elif (metaSrc == 'dummy'): # Dummy 검색결과 생성 return DummyScraper(SVC_NAME).findTvShows4Kodi(query, year, lang) elif (metaSrc == 'mock'): # 테스트용 return MockScraper(SVC_NAME).findTvShows4Kodi(query, year, lang) else: # TMDB에서 검색 tmdbListJson = TMDBScraper(SVC_NAME).findTvShows4Kodi(query, year, lang) # Daum에서 검색 daumListJson = DaumScraper(SVC_NAME).findTvShows4Kodi(query, year, lang) if (tmdbListJson is not None) and (daumListJson is not None): # 두 개의 검색 결과를 merge return self.mergeList(tmdbListJson, daumListJson) elif (tmdbListJson is not None): return tmdbListJson elif (daumListJson is not None): return daumListJson else: # Dummy 리턴 #return DummyScraper(SVC_NAME).findTvShows4Kodi(query, year, lang) return '{"error":"Nothing Found","query":"{0}"}'.format(query) except Exception as e: log_err(str(e))
def findMovies(self, query, year, lang, metaSrc): try: query = self.refineQuery(query) if (metaSrc == 'tmdb'): # TMDB에서 검색 return TMDBScraper(SVC_NAME).findMovies4Kodi(query, year, lang) elif (metaSrc == 'daum'): # Daum에서 검색 return DaumScraper(SVC_NAME).findMovies4Kodi(query, year, lang) elif (metaSrc == 'dummy'): # Dummy 검색결과 생성 return DummyScraper(SVC_NAME).findMovies4Kodi(query, year, lang) elif (metaSrc == 'mock'): # 테스트용 return MockScraper(SVC_NAME).findMovies4Kodi(query, year, lang) else: # TMDB에서 검색 tmdbListJson = TMDBScraper(SVC_NAME).findMovies4Kodi(query, year, lang) # Daum에서 검색 daumListJson = DaumScraper(SVC_NAME).findMovies4Kodi(query, year, lang) if (tmdbListJson is not None) and (daumListJson is not None): # 두 개의 검색 결과를 merge return self.mergeList(tmdbListJson, daumListJson) elif (tmdbListJson is not None): return tmdbListJson elif (daumListJson is not None): return daumListJson else: # Dummy 리턴 return DummyScraper(SVC_NAME).findMovies4Kodi(query, year, lang) #return '{"error":"Nothing Found","query":"{0}"}'.format(query) except Exception as e: log_err(str(e))
def __init__(self, loggerName): ''' Constructor ''' MockScraper.__init__(self, loggerName)
def __init__(self, loggerName): ''' Constructor ''' MockScraper.__init__(self, loggerName) self.__initDB()
PORT_NUMBER = 8880 # 기본 인코딩을 UTF-8로 변경 reload(sys) sys.setdefaultencoding('utf-8') # Logger 초기화 #LOG_FORMAT = '[%(asctime)-15s][%(name)s][%(module)s:%(funcName)s][%(levelname)s] %(message)s' LOG_FORMAT = '[%(asctime)-15s][%(name)s][%(levelname)s] %(message)s' #logFile = '{0}_{1}.log'.format(SVC_NAME, time.strftime('%Y%m%d')) #logging.basicConfig(filename=logFile, format=LOG_FORMAT, level=logging.DEBUG) logging.basicConfig(format=LOG_FORMAT, level=logging.DEBUG) __logger__ = logging.getLogger(SVC_NAME) log_inf('==[STARTED]======================================') # 오래된 캐시 파일 삭제 MockScraper(SVC_NAME).cache_clear() #Create a web server and define the handler to manage the #incoming request server = HTTPServer(('', PORT_NUMBER), ScraperProxyHandler) log_inf("Started httpserver on port {0}".format(PORT_NUMBER)) #Wait forever for incoming htto requests server.serve_forever() except KeyboardInterrupt: log_inf("^C received, shutting down the web server") server.socket.close()