예제 #1
0
def scrape_movie(movie_id: str) -> Dict:
    url = f'{ENDPOINT}p/{movie_id}'
    try:
        html = RequestService(url).get()
        movie = Scraper(html=html).get_movie_detail()
        set_movie(movie_id, movie)
        return movie
    except Exception as e:
        Slack().post_message(f'{url}\n動画スクレイピングに失敗しました。\n{str(e)}')
        raise e
예제 #2
0
def scrape_movie_list(movie_id_list: List[str]):
    result: List[str] = []
    for movie_id in movie_id_list:
        url = f'{ENDPOINT}p/{movie_id}'
        try:
            html = RequestService(url).get()
            movie = Scraper(html=html).get_movie_detail()
            set_movie(movie_id, movie)
            result.append(movie_id)
        except Exception as e:
            Slack().post_message(f'{url}\n動画スクレイピングに失敗しました。\n{str(e)}')
            return result
    return result
예제 #3
0
def grant_seq_batch_execute():
    MAX_PAGE = 535
    seq = 0
    for idx in range(MAX_PAGE):
        page = MAX_PAGE - idx
        movie_id_list = list(reversed(_get_movie_id_list(page=page)))
        for movie_id in movie_id_list:
            if get_movie(movie_id=movie_id) is not None:
                seq = grant_seq(movie_id=movie_id, seq=seq)
            else:
                print(f'データがなかったため新規作成しました {movie_id}')
                movie: Dict = scrape_movie(movie_id=movie_id)
                movie['seq'] = seq
                set_movie(movie_id, movie)
                seq = seq + 1
예제 #4
0
def _only_in_japan():
    """
    これだけローカルで処理する
    """
    url = 'https://front.njpwworld.com/search?query=BRITISH%20J%20CUP'
    html = RequestService(url).get()
    movie_id_list = Scraper(html=html).get_movie_id_list()

    result: List[str] = []
    for movie_id in movie_id_list:
        print(movie_id)
        if get_movie(movie_id=movie_id) is not None:
            continue
        movie: Dict = scrape_movie(movie_id=movie_id)
        set_movie(movie_id, movie)
        result.append(movie_id)
    return result
예제 #5
0
def scrape_page(page: int, stop_if_exists: bool = True) -> List[str]:
    """
    指定されたページにある動画をスクレイピングしてデータベースに登録します。
    すでに存在する動画をスクレイピングした場合は、その時点でスクレイピングを終了します。
    return 登録完了した動画のIDリスト
    """
    movie_id_list: List[str] = _get_movie_id_list(page=page)

    result: List[str] = []
    for movie_id in movie_id_list:
        if get_movie(movie_id=movie_id) is not None:
            if stop_if_exists:
                break
            else:
                continue
        movie: Dict = scrape_movie(movie_id=movie_id)
        set_movie(movie_id, movie)
        result.append(movie_id)
    return result
def test_set_movie():
    # setup
    tag = Tag(div='tag-man', id='tagtest', name='タグテスト')
    movie = {
        "id": movie_id,
        "title": 'test',
        "tags": [tag.to_dict()],
        "like_count": 0
    }

    # execute
    # データがないときはTrueを返す
    actual = firestore.set_movie(movie_id=movie_id, movie=movie)
    assert actual

    # データが存在するとFalseを返す
    actual = firestore.set_movie(movie_id=movie_id, movie=movie)
    assert not actual

    # データのクリーニング
    firestore.delete_movie(movie_id=movie_id)