from urllib.parse import quote
from xbmcplugin import addDirectoryItem
from lib.clients.tmdb.utils.utils import mdblist_get, tmdb_get
from lib.utils.general.utils import (
build_list_item,
make_listing,
set_content_type,
set_pluging_category,
)
from lib.utils.kodi.utils import (
ADDON_HANDLE,
build_url,
end_of_directory,
notification,
show_keyboard,
translation,
)
def search_mdbd_lists(params):
mode = params.get("mode", "movie")
page = int(params.get("page", 1))
set_pluging_category("MDblist - Search Lists")
query = ""
# Show keyboard for search query
query = show_keyboard(id=90006, default=query)
if not query:
end_of_directory(cache=False)
return
results = mdblist_get(path="search_lists", params={"query": query, "page": page})
if not results:
notification(translation(90519))
end_of_directory(cache=False)
return
for item in results:
label = item.get("name", "Unnamed List")
list_id = item.get("id")
list_item = build_list_item(label, "mdblist.png")
addDirectoryItem(
ADDON_HANDLE,
build_url("show_mdblist_list", list_id=list_id, mode=mode),
list_item,
isFolder=True,
)
end_of_directory()
def user_mdbd_lists(params):
mode = params.get("mode", "movie")
set_pluging_category("MDblist - User Lists")
results = mdblist_get(path="get_user_lists")
if not results:
notification(translation(90520))
return
for item in results:
label = item.get("name", "Unnamed List")
list_id = item.get("id")
list_item = build_list_item(label, "mdblist.png")
addDirectoryItem(
ADDON_HANDLE,
build_url("show_mdblist_list", list_id=list_id, mode=mode),
list_item,
isFolder=True,
)
end_of_directory()
def top_mdbd_lists(params):
mode = params.get("mode", "movie")
set_pluging_category("MDblist - Top Lists")
results = mdblist_get(path="top_mdbd_lists")
if not results:
notification(translation(90521))
return
for item in results:
label = item.get("name", "Unnamed List")
list_id = item.get("id")
list_item = build_list_item(label, "mdblist.png")
addDirectoryItem(
ADDON_HANDLE,
build_url("show_mdblist_list", list_id=list_id, mode=mode),
list_item,
isFolder=True,
)
end_of_directory()
def show_mdblist_list(params):
list_id = params.get("list_id")
mode = params.get("mode", "movies")
offset = int(params.get("offset", 0))
limit = int(params.get("limit", 10))
set_pluging_category(f"MDblist List {list_id}")
set_content_type(mode)
result = mdblist_get(
"get_list_items",
params={
"list_id": list_id,
"limit": limit,
"offset": offset,
"append_to_response": "genre,poster",
"unified": True,
},
)
if not result:
notification(translation(90431))
return
for item in result:
ids = {
"tmdb_id": item.get("id", ""),
"tvdb_id": item.get("tvdb_id", ""),
"imdb_id": item.get("imdb_id", ""),
}
res = tmdb_get("find_by_imdb_id", ids.get("imdb_id"))
if res:
if res.get("tv_results"):
overview = res["tv_results"][0]["overview"]
poster_path = res["tv_results"][0]["poster_path"]
elif res.get("movie_results"):
overview = res["movie_results"][0]["overview"]
poster_path = res["movie_results"][0]["poster_path"]
else:
overview = None
poster_path = None
item.update({"overview": overview})
item.update({"poster_path": poster_path})
item["ids"] = ids
if item.get("mediatype") == "show":
url = build_url(
"show_seasons_details",
ids=ids,
mode="tv",
)
is_folder = True
else:
url = build_url(
"search",
mode="movies",
query=quote(item.get("title", "") or ""),
ids=ids,
)
is_folder = False
list_item = make_listing(item)
addDirectoryItem(
ADDON_HANDLE,
url,
list_item,
isFolder=is_folder,
)
list_item = build_list_item("Next Page", "nextpage.png")
addDirectoryItem(
ADDON_HANDLE,
build_url(
"show_mdblist_list",
list_id=list_id,
mode=mode,
offset=offset + limit,
limit=limit,
),
list_item,
isFolder=True,
)
end_of_directory()