示例#1
0
    def test_lists_create_add_remove_clear_delete(self):
        kwargs = {
            'name': LIST_NAME,
            'description': LIST_DESCRIPTION,
        }
        status_message = SUCCESS_PERIOD
        lst = tmdb.Lists(0, SESSION_ID)
        #print(lst.session_id)
        response = lst.create_list(**kwargs)
        self.assertEqual(lst.status_message, status_message)

        list_id = lst.list_id

        status_code = SUCCESSFUL_UPDATE
        lst = tmdb.Lists(list_id, SESSION_ID)
        response = lst.add_item(media_id=LIST_ITEM_MEDIA_ID)
        self.assertEqual(lst.status_code, status_code)

        status_code = SUCCESSFUL_DELETE
        lst = tmdb.Lists(list_id, SESSION_ID)
        response = lst.remove_item(media_id=LIST_ITEM_MEDIA_ID)
        self.assertEqual(lst.status_code, status_code)

        status_code = SUCCESSFUL_UPDATE
        lst = tmdb.Lists(list_id, SESSION_ID)
        response = lst.clear_list(confirm='true')
        self.assertEqual(lst.status_code, status_code)

        status_code = SUCCESSFUL_DELETE
        lst = tmdb.Lists(list_id, SESSION_ID)
        response = lst.delete_list()
        self.assertEqual(lst.status_code, status_code)
示例#2
0
    def test_lists_create_add_remove_clear_delete(self):
        kwargs = {
            'name': LIST_NAME,
            'description': LIST_DESCRIPTION,
            'language': LIST_LANGUAGE,
        }
        status_message = SUCCESS_PERIOD
        lst = tmdb.Lists(0, SESSION_ID)
        lst.list_create(**kwargs)
        self.assertEqual(lst.status_message, status_message)

        status_code = SUCCESSFUL_UPDATE
        lst.add_item(media_id=LIST_ITEM_MEDIA_ID)
        self.assertEqual(lst.status_code, status_code)

        status_code = SUCCESSFUL_REMOVE_ITEM
        lst.remove_item(media_id=LIST_ITEM_MEDIA_ID)
        self.assertEqual(lst.status_code, status_code)

        status_code = SUCCESSFUL_UPDATE
        lst.list_clear(confirm='true')
        self.assertEqual(lst.status_code, status_code)
示例#3
0
 def test_lists_item_status(self):
     id = LIST_ID
     movie_id = LIST_MOVIE_ID
     lst = tmdb.Lists(id)
     response = lst.item_status(movie_id=movie_id)
     self.assertTrue(hasattr(lst, 'item_present'))
示例#4
0
 def test_lists_info(self):
     id = LIST_ID
     created_by = LIST_CREATED_BY
     lst = tmdb.Lists(id)
     response = lst.info()
     self.assertEqual(lst.created_by, created_by)
示例#5
0
def main():
    parser = ArgumentParser()
    parser.add_argument("-i", "--movie-id", dest="movie_id", help="Movie ID to link to")
    parser.add_argument(
        "-m", "--movie-name", dest="movie_name", help="Movie name to link to"
    )
    args = parser.parse_args()

    username = os.getenv('MOVIELINKER_USER')
    password = os.getenv('MOVIELINKER_PASSWORD')
    api_key = os.getenv('MOVIELINKER_API')
    
    if username is None: 
      home = os.path.expanduser("~")
      config = configparser.ConfigParser()
      config_file = os.path.join(home, ".movielinker")

      if not os.path.isfile(config_file):
          print("No configuration file found, creating")
          username = input("What is your TMDB Username? ")
          password = input("What is your TMDB Password? ")
          api_key = input("What is your TMDB API Key? ")
          config["movielinker"] = {
              "username": username,
              "password": password,
              "api_key": api_key,
          }
          with open(config_file, "w") as configfile:
              config.write(configfile)

      config.read(os.path.join(config_file))
      username = config["movielinker"]["username"]
      password = config["movielinker"]["password"]
      api_key = config["movielinker"]["api_key"]

    tmdb.API_KEY = api_key

    auth = tmdb.Authentication()
    response = auth.token_new()

    kwargs = {
        "request_token": auth.request_token,
        "username": username,
        "password": password,
    }
    auth = tmdb.Authentication()
    response = auth.token_validate_with_login(**kwargs)

    kwargs = {"request_token": auth.request_token}
    auth = tmdb.Authentication()
    response = auth.session_new(**kwargs)
    session_id = response["session_id"]

    account = tmdb.Account(session_id)
    response = account.info()
    response = account.lists()

    print("\nWhich list contains the movies you have already seen?\n")
    index = 0
    movie_lists = []
    for l in response["results"]:
        print(index, l["name"])
        movie_lists.append({"id": l["id"], "name": l["name"]})
        index += 1
    list_index = int(input())
    list_id = movie_lists[list_index]["id"]
    a = tmdb.Lists(list_id)

    movie_id = args.movie_id

    if args.movie_name != None:
        search = tmdb.Search()
        response = search.movie(query=args.movie_name)
        index = 0
        foundMovies = []
        for s in search.results:
            foundMovies.append({"id": s["id"], "title": s["title"]})
            print(index, s["title"], s["release_date"])
            index += 1
        movie_index = int(input("\nWhich Movie ID did you mean?\n"))
        movie_id = foundMovies[movie_index]["id"]
        print("\nGetting cast list for", foundMovies[movie_index]["title"], "\n")

    movie = tmdb.Movies(movie_id)

    collaboratorList = []
    index = 0
    for c in movie.credits()["cast"]:
        collaboratorList.append({"id": c["id"], "name": c["name"]})
        print(index, c["name"])
        index += 1

    excluded_collaborator_index = int(input("\nExclude a cast member?\n"))
    excluded_collaborator = collaboratorList[excluded_collaborator_index]
    print("Excluding", excluded_collaborator["name"])

    response = movie.info()
    list_response = a.info()
    seen = set()
    [seen.add(movie["id"]) for movie in a.items]

    cache = {}
    for c in movie.credits()["cast"]:
        if c["id"] == excluded_collaborator["id"]:
            continue
        person = tmdb.People(c["id"])
        response = person.info
        for p in person.movie_credits()["cast"]:
            if p["vote_count"] < 40:
                continue
            if p["id"] in seen:
                continue
            if p["id"] in cache:
                cache[p["id"]]["collaborators"].add(c["name"])
            else:
                p["collaborators"] = {c["name"]}
                cache[p["id"]] = p

    filename = "".join(x for x in movie.title if x.isalnum()) + ".csv"
    with open(filename, "w") as csv_file:
        fields = [
            "id",
            "title",
            "collaborators",
            "vote_average",
            "vote_count",
            "release_date",
            "overview",
        ]
        writer = csv.DictWriter(csv_file, fieldnames=fields, extrasaction="ignore")
        writer.writeheader()
        for movie in sorted(
            list(cache.values()), key=lambda x: x["vote_average"], reverse=True
        ):
            writer.writerow(movie)
            # print(str(movie['id']) + ", " + movie['title'] + ", " + str(movie['collaborators']) + ", " + str(movie['vote_average']))

    print("complete")