home
products
contribute
download
documentation
forum
Home
Forums
New posts
Search forums
What's new
New posts
All posts
Latest activity
Members
Registered members
Current visitors
Donate
Log in
Register
What's new
Search
Search
Search titles only
By:
New posts
Search forums
Search titles only
By:
Menu
Log in
Register
Navigation
Install the app
Install
More options
Contact us
Close Menu
Forums
MediaPortal 2
Plugin Development
Get every episode from a Season
Contact us
RSS
JavaScript is disabled. For a better experience, please enable JavaScript in your browser before proceeding.
You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an
alternative browser
.
Reply to thread
Message
<blockquote data-quote="FreakyJ" data-source="post: 1154848" data-attributes="member: 106003"><p>In case anybody should ever have the same problem <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="smilie smilie--sprite smilie--sprite1" alt=":)" title="Smile :)" loading="lazy" data-shortname=":)" /></p><p></p><p>[CODE=C#]HttpParam httpParam = request.Param;</p><p> if (httpParam["id"].Value == null)</p><p> throw new BadRequestException("GetMediaItem: no id is null");</p><p></p><p> ISet<Guid> necessaryMIATypes = new HashSet<Guid>();</p><p> necessaryMIATypes.Add(MediaAspect.ASPECT_ID);</p><p></p><p> // this is the MediaItem from the Season</p><p> MediaItem item = GetMediaItems.GetMediaItemById(httpParam["id"].Value, necessaryMIATypes);</p><p></p><p> if (item == null)</p><p> throw new BadRequestException(String.Format("GetTVEpisodeCountForSeason: No MediaItem found with id: {0}", httpParam["id"].Value));</p><p></p><p> int seasonNumer;</p><p> try</p><p> {</p><p> seasonNumer = Convert.ToInt32(((string)item[MediaAspect.ASPECT_ID][MediaAspect.ATTR_TITLE]).Split(' ')[1]);</p><p> }</p><p> catch (Exception ex)</p><p> {</p><p> throw new BadRequestException(String.Format("GetTVEpisodeCountForSeason: Couldn't convert Title to int: {0}", ex.Message));</p><p> }</p><p></p><p> // Get all episodes for this season</p><p> ISet<Guid> necessaryMIATypesEpisodes = new HashSet<Guid>();</p><p> necessaryMIATypes.Add(MediaAspect.ASPECT_ID);</p><p> necessaryMIATypes.Add(SeriesAspect.ASPECT_ID);</p><p></p><p> IList<MediaItem> episodes = GetMediaItems.GetMediaItemsByInt(seasonNumer, necessaryMIATypesEpisodes, null, SeriesAspect.ATTR_SEASON, null);</p><p></p><p> WebIntResult webIntResult = new WebIntResult { Result = episodes.Count };</p><p></p><p> return webIntResult;[/CODE]</p><p></p><p>[CODE=C#]using System;</p><p>using System.Collections.Generic;</p><p>using System.Linq;</p><p>using System.Text;</p><p>using System.Threading.Tasks;</p><p>using MediaPortal.Backend.MediaLibrary;</p><p>using MediaPortal.Common;</p><p>using MediaPortal.Common.MediaManagement;</p><p>using MediaPortal.Common.MediaManagement.DefaultItemAspects;</p><p>using MediaPortal.Common.MediaManagement.MLQueries;</p><p></p><p>namespace MediaPortal.Plugins.MP2Extended.ResourceAccess</p><p>{</p><p> internal class GetMediaItems</p><p> {</p><p> #region ById</p><p></p><p> internal static MediaItem GetMediaItemById(string id, ISet<Guid> necessaryMIATypes)</p><p> {</p><p> return GetMediaItemById(id, necessaryMIATypes, null);</p><p> }</p><p> </p><p> internal static MediaItem GetMediaItemById(string id, ISet<Guid> necessaryMIATypes, ISet<Guid> optionalMIATypes)</p><p> {</p><p> return GetMediaItemById(Guid.Parse(id), necessaryMIATypes, optionalMIATypes);</p><p> }</p><p></p><p> internal static MediaItem GetMediaItemById(Guid id, ISet<Guid> necessaryMIATypes)</p><p> {</p><p> return GetMediaItemById(id, necessaryMIATypes, null);</p><p> }</p><p></p><p> internal static MediaItem GetMediaItemById(Guid id, ISet<Guid> necessaryMIATypes, ISet<Guid> optionalMIATypes)</p><p> {</p><p> IList<MediaItem> items = GetMediaItemsById(id, necessaryMIATypes, optionalMIATypes, 1);</p><p> if (items.Count != 0)</p><p> return items[0];</p><p> return null;</p><p> }</p><p></p><p> internal static IList<MediaItem> GetMediaItemsById(string id, ISet<Guid> necessaryMIATypes, uint limit)</p><p> {</p><p> return GetMediaItemsById(id, necessaryMIATypes, null, limit);</p><p> }</p><p></p><p> internal static IList<MediaItem> GetMediaItemsById(string id, ISet<Guid> necessaryMIATypes, ISet<Guid> optionalMIATypes, uint limit)</p><p> {</p><p> return GetMediaItemsById(Guid.Parse(id), necessaryMIATypes, optionalMIATypes, limit);</p><p> }</p><p></p><p> internal static IList<MediaItem> GetMediaItemsById(Guid id, ISet<Guid> necessaryMIATypes, ISet<Guid> optionalMIATypes, uint limit)</p><p> {</p><p> IFilter searchFilter = new MediaItemIdFilter(id);</p><p> MediaItemQuery searchQuery = new MediaItemQuery(necessaryMIATypes, optionalMIATypes, searchFilter) { Limit = limit };</p><p></p><p> return ServiceRegistration.Get<IMediaLibrary>().Search(searchQuery, false);</p><p> }</p><p></p><p> #endregion ByID</p><p></p><p> #region ByName</p><p></p><p> internal static MediaItem GetMediaItemByName(string name, ISet<Guid> necessaryMIATypes)</p><p> {</p><p> return GetMediaItemByName(name, necessaryMIATypes, null);</p><p> }</p><p></p><p></p><p> /// <summary></p><p> /// Filters by MediaAspect.ATTR_TITLE</p><p> /// </summary></p><p> /// <param name="name"></param></p><p> /// <param name="necessaryMIATypes">Must contain MediaAspect</param></p><p> /// <param name="optionalMIATypes"></param></p><p> /// <returns></returns></p><p> internal static MediaItem GetMediaItemByName(string name, ISet<Guid> necessaryMIATypes, ISet<Guid> optionalMIATypes)</p><p> {</p><p> IList<MediaItem> items = GetMediaItemsByName(name, necessaryMIATypes, optionalMIATypes, 1);</p><p> if (items.Count != 0)</p><p> return items[0];</p><p> return null;</p><p> }</p><p></p><p> internal static IList<MediaItem> GetMediaItemsByName(string name, ISet<Guid> necessaryMIATypes, uint limit)</p><p> {</p><p> if (necessaryMIATypes == null)</p><p> {</p><p> necessaryMIATypes = new HashSet<Guid> { MediaAspect.ASPECT_ID };</p><p> }</p><p></p><p> return GetMediaItemsByName(name, necessaryMIATypes, null, limit);</p><p> }</p><p></p><p> /// <summary></p><p> /// Filters by MediaAspect.ATTR_TITLE</p><p> /// </summary></p><p> /// <param name="name"></param></p><p> /// <param name="necessaryMIATypes">Must contain MediaAspect</param></p><p> /// <param name="optionalMIATypes"></param></p><p> /// <param name="limit"></param></p><p> /// <returns></returns></p><p> internal static IList<MediaItem> GetMediaItemsByName(string name, ISet<Guid> necessaryMIATypes, ISet<Guid> optionalMIATypes, uint? limit)</p><p> {</p><p> return GetMediaItemsByString(name, necessaryMIATypes, optionalMIATypes, MediaAspect.ATTR_TITLE, limit);</p><p> }</p><p></p><p> internal static IList<MediaItem> GetMediaItemsByString(string name, ISet<Guid> necessaryMIATypes, ISet<Guid> optionalMIATypes, MediaItemAspectMetadata.AttributeSpecification attributeSpecification, uint? limit)</p><p> {</p><p> IFilter searchFilter = new RelationalFilter(attributeSpecification, RelationalOperator.EQ, name);</p><p> MediaItemQuery searchQuery = new MediaItemQuery(necessaryMIATypes, optionalMIATypes, searchFilter) { Limit = limit };</p><p></p><p> return ServiceRegistration.Get<IMediaLibrary>().Search(searchQuery, false);</p><p> }</p><p></p><p> internal static IList<MediaItem> GetMediaItemsByInt(int number, ISet<Guid> necessaryMIATypes, ISet<Guid> optionalMIATypes, MediaItemAspectMetadata.AttributeSpecification attributeSpecification, uint? limit)</p><p> {</p><p> IFilter searchFilter = new RelationalFilter(attributeSpecification, RelationalOperator.EQ, number);</p><p> MediaItemQuery searchQuery = new MediaItemQuery(necessaryMIATypes, optionalMIATypes, searchFilter) { Limit = limit };</p><p></p><p> return ServiceRegistration.Get<IMediaLibrary>().Search(searchQuery, false);</p><p> }</p><p></p><p> #endregion ByName</p><p> }</p><p>}</p><p>[/CODE]</p></blockquote><p></p>
[QUOTE="FreakyJ, post: 1154848, member: 106003"] In case anybody should ever have the same problem :) [CODE=C#]HttpParam httpParam = request.Param; if (httpParam["id"].Value == null) throw new BadRequestException("GetMediaItem: no id is null"); ISet<Guid> necessaryMIATypes = new HashSet<Guid>(); necessaryMIATypes.Add(MediaAspect.ASPECT_ID); // this is the MediaItem from the Season MediaItem item = GetMediaItems.GetMediaItemById(httpParam["id"].Value, necessaryMIATypes); if (item == null) throw new BadRequestException(String.Format("GetTVEpisodeCountForSeason: No MediaItem found with id: {0}", httpParam["id"].Value)); int seasonNumer; try { seasonNumer = Convert.ToInt32(((string)item[MediaAspect.ASPECT_ID][MediaAspect.ATTR_TITLE]).Split(' ')[1]); } catch (Exception ex) { throw new BadRequestException(String.Format("GetTVEpisodeCountForSeason: Couldn't convert Title to int: {0}", ex.Message)); } // Get all episodes for this season ISet<Guid> necessaryMIATypesEpisodes = new HashSet<Guid>(); necessaryMIATypes.Add(MediaAspect.ASPECT_ID); necessaryMIATypes.Add(SeriesAspect.ASPECT_ID); IList<MediaItem> episodes = GetMediaItems.GetMediaItemsByInt(seasonNumer, necessaryMIATypesEpisodes, null, SeriesAspect.ATTR_SEASON, null); WebIntResult webIntResult = new WebIntResult { Result = episodes.Count }; return webIntResult;[/CODE] [CODE=C#]using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using MediaPortal.Backend.MediaLibrary; using MediaPortal.Common; using MediaPortal.Common.MediaManagement; using MediaPortal.Common.MediaManagement.DefaultItemAspects; using MediaPortal.Common.MediaManagement.MLQueries; namespace MediaPortal.Plugins.MP2Extended.ResourceAccess { internal class GetMediaItems { #region ById internal static MediaItem GetMediaItemById(string id, ISet<Guid> necessaryMIATypes) { return GetMediaItemById(id, necessaryMIATypes, null); } internal static MediaItem GetMediaItemById(string id, ISet<Guid> necessaryMIATypes, ISet<Guid> optionalMIATypes) { return GetMediaItemById(Guid.Parse(id), necessaryMIATypes, optionalMIATypes); } internal static MediaItem GetMediaItemById(Guid id, ISet<Guid> necessaryMIATypes) { return GetMediaItemById(id, necessaryMIATypes, null); } internal static MediaItem GetMediaItemById(Guid id, ISet<Guid> necessaryMIATypes, ISet<Guid> optionalMIATypes) { IList<MediaItem> items = GetMediaItemsById(id, necessaryMIATypes, optionalMIATypes, 1); if (items.Count != 0) return items[0]; return null; } internal static IList<MediaItem> GetMediaItemsById(string id, ISet<Guid> necessaryMIATypes, uint limit) { return GetMediaItemsById(id, necessaryMIATypes, null, limit); } internal static IList<MediaItem> GetMediaItemsById(string id, ISet<Guid> necessaryMIATypes, ISet<Guid> optionalMIATypes, uint limit) { return GetMediaItemsById(Guid.Parse(id), necessaryMIATypes, optionalMIATypes, limit); } internal static IList<MediaItem> GetMediaItemsById(Guid id, ISet<Guid> necessaryMIATypes, ISet<Guid> optionalMIATypes, uint limit) { IFilter searchFilter = new MediaItemIdFilter(id); MediaItemQuery searchQuery = new MediaItemQuery(necessaryMIATypes, optionalMIATypes, searchFilter) { Limit = limit }; return ServiceRegistration.Get<IMediaLibrary>().Search(searchQuery, false); } #endregion ByID #region ByName internal static MediaItem GetMediaItemByName(string name, ISet<Guid> necessaryMIATypes) { return GetMediaItemByName(name, necessaryMIATypes, null); } /// <summary> /// Filters by MediaAspect.ATTR_TITLE /// </summary> /// <param name="name"></param> /// <param name="necessaryMIATypes">Must contain MediaAspect</param> /// <param name="optionalMIATypes"></param> /// <returns></returns> internal static MediaItem GetMediaItemByName(string name, ISet<Guid> necessaryMIATypes, ISet<Guid> optionalMIATypes) { IList<MediaItem> items = GetMediaItemsByName(name, necessaryMIATypes, optionalMIATypes, 1); if (items.Count != 0) return items[0]; return null; } internal static IList<MediaItem> GetMediaItemsByName(string name, ISet<Guid> necessaryMIATypes, uint limit) { if (necessaryMIATypes == null) { necessaryMIATypes = new HashSet<Guid> { MediaAspect.ASPECT_ID }; } return GetMediaItemsByName(name, necessaryMIATypes, null, limit); } /// <summary> /// Filters by MediaAspect.ATTR_TITLE /// </summary> /// <param name="name"></param> /// <param name="necessaryMIATypes">Must contain MediaAspect</param> /// <param name="optionalMIATypes"></param> /// <param name="limit"></param> /// <returns></returns> internal static IList<MediaItem> GetMediaItemsByName(string name, ISet<Guid> necessaryMIATypes, ISet<Guid> optionalMIATypes, uint? limit) { return GetMediaItemsByString(name, necessaryMIATypes, optionalMIATypes, MediaAspect.ATTR_TITLE, limit); } internal static IList<MediaItem> GetMediaItemsByString(string name, ISet<Guid> necessaryMIATypes, ISet<Guid> optionalMIATypes, MediaItemAspectMetadata.AttributeSpecification attributeSpecification, uint? limit) { IFilter searchFilter = new RelationalFilter(attributeSpecification, RelationalOperator.EQ, name); MediaItemQuery searchQuery = new MediaItemQuery(necessaryMIATypes, optionalMIATypes, searchFilter) { Limit = limit }; return ServiceRegistration.Get<IMediaLibrary>().Search(searchQuery, false); } internal static IList<MediaItem> GetMediaItemsByInt(int number, ISet<Guid> necessaryMIATypes, ISet<Guid> optionalMIATypes, MediaItemAspectMetadata.AttributeSpecification attributeSpecification, uint? limit) { IFilter searchFilter = new RelationalFilter(attributeSpecification, RelationalOperator.EQ, number); MediaItemQuery searchQuery = new MediaItemQuery(necessaryMIATypes, optionalMIATypes, searchFilter) { Limit = limit }; return ServiceRegistration.Get<IMediaLibrary>().Search(searchQuery, false); } #endregion ByName } } [/CODE] [/QUOTE]
Insert quotes…
Verification
Post reply
Forums
MediaPortal 2
Plugin Development
Get every episode from a Season
Contact us
RSS
Top
Bottom