Jump to content

Find unmatched items/folders w/files under it


Recommended Posts

Posted

Using the c# sdk whats the way to find unmatched items with media files under it?

This is semi close, except I still get some series folders where I dont actually have media files in them.

private List<BaseItem> GetMediaItems(VirtualFolderInfo librayInfo)
    {
        var query = new InternalItemsQuery
                    {
                        IsVirtualItem = false,
                        ParentIds = new[]
                                    {
                                        long.Parse(librayInfo.Id)
                                    },
                        OrderBy = new[]
                                  {
                                      new ValueTuple<string, SortOrder>(ItemSortBy.PremiereDate, SortOrder.Descending),
                                      new ValueTuple<string, SortOrder>(ItemSortBy.SeriesSortNameOrSortName,
                                                                        SortOrder.Ascending)
                                  }
                    };

        var mediaItems = _libraryManager.GetItemList(query)
                                        .Where(x => x.GetMediaStreams().Count > 0 && (x.GetProviderId(MetadataProviders.Imdb) == null && x.GetProviderId(MetadataProviders.Tmdb) == null && librayInfo.LibraryOptions.ContentType.ToLower() == "movies") || (x.GetProviderId(MetadataProviders.Imdb) == null && x.GetProviderId(MetadataProviders.Tmdb) == null) && x.GetProviderId(MetadataProviders.Tvdb) == null && librayInfo.LibraryOptions.ContentType.ToLower() == "tvshows")
                                        .ToList();
        return mediaItems;
    }

 

EX: I did some cleanup the one 30 rock folder with all the episodes now has a diff root folder name with the tvdbid included but I didnt delete the old folder, but the api returns it back to me in the above query

image.png.63b2f282e20c56b2b8f896ebf1d464d0.png

Posted

@Luke Is this how I would "match" or "identify" an unmatched item, basically set the providerid, then refresh the metadata? or is there some other special method I missed?

var mediaItems = _libraryManager.GetItemList(query)
                                .Where(x => (x.GetProviderId(MetadataProviders.Imdb) == null && x.GetProviderId(MetadataProviders.Tmdb) == null && librayInfo.LibraryOptions.ContentType.ToLower() == "movies") || (x.GetProviderId(MetadataProviders.Imdb) == null && x.GetProviderId(MetadataProviders.Tmdb) == null) && x.GetProviderId(MetadataProviders.Tvdb) == null && librayInfo.LibraryOptions.ContentType.ToLower() == "tvshows" && x.GetChildrenForValidationSorted().Length > 0)
                                .ToList();
mediaItems[1]
    .SetProviderId(MetadataProviders.Imdb, "tt123456");
mediaItems[1]
    .RefreshMetadata(default);

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...