mirror of
https://github.com/ZuneDev/ZuneShell.dll.git
synced 2026-07-27 13:11:51 -07:00
208 lines
7.6 KiB
C#
208 lines
7.6 KiB
C#
// Decompiled with JetBrains decompiler
|
|
// Type: ZuneUI.RecommendationsHelper
|
|
// Assembly: ZuneShell, Version=4.7.0.0, Culture=neutral, PublicKeyToken=ddd0da4d3e678217
|
|
// MVID: FC8028F3-A47B-4FB4-B35B-11D1752D8264
|
|
// Assembly location: C:\Program Files\Zune\ZuneShell.dll
|
|
|
|
using Microsoft.Iris;
|
|
using Microsoft.Win32;
|
|
using Microsoft.Zune.Configuration;
|
|
using Microsoft.Zune.Service;
|
|
using Microsoft.Zune.Shell;
|
|
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using ZuneXml;
|
|
|
|
namespace ZuneUI
|
|
{
|
|
public class RecommendationsHelper
|
|
{
|
|
private static List<int> _uploadedArtistList;
|
|
private static int _maxSongsForYouTrackCount;
|
|
|
|
public static bool IncludeTrackCollection(
|
|
ICollection tracks,
|
|
TrackCollectionFilterType filterType)
|
|
{
|
|
bool flag1 = false;
|
|
if (tracks != null)
|
|
{
|
|
foreach (Track track in tracks)
|
|
{
|
|
if (!(track.Id == Guid.Empty))
|
|
{
|
|
bool flag2 = ZuneApplication.Service2.InVisibleCollection(track.Id, EContentType.MusicTrack);
|
|
if (filterType == TrackCollectionFilterType.IncludeIfAnyTrackNotInCollection)
|
|
{
|
|
if (!flag2)
|
|
{
|
|
flag1 = true;
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (flag2)
|
|
{
|
|
flag1 = false;
|
|
break;
|
|
}
|
|
flag1 = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return flag1;
|
|
}
|
|
|
|
public static bool IsArtistInCollection(Guid artistId)
|
|
{
|
|
bool flag = false;
|
|
if (artistId != Guid.Empty)
|
|
flag = ZuneApplication.Service2.InVisibleCollection(artistId, EContentType.Artist);
|
|
return flag;
|
|
}
|
|
|
|
public static object GetKeyValue(IDictionary dictionary, object key)
|
|
{
|
|
object obj = null;
|
|
if (dictionary != null && dictionary.Contains(key))
|
|
obj = dictionary[key];
|
|
return obj;
|
|
}
|
|
|
|
public static int GetKeyValueInt(IDictionary dictionary, object key, int defaultValue)
|
|
{
|
|
int num = defaultValue;
|
|
if (dictionary != null && dictionary.Contains(key) && dictionary[key] is int val)
|
|
num = val;
|
|
return num;
|
|
}
|
|
|
|
public static DateTime RecommendationsDate
|
|
{
|
|
get => ServiceUserGuidConfiguration.RecommendationsDate.ToUniversalTime();
|
|
set => ServiceUserGuidConfiguration.RecommendationsDate = value;
|
|
}
|
|
|
|
public static DateTime LastRecommendationsShuffleDate
|
|
{
|
|
get => ServiceUserGuidConfiguration.RecommendationsRefreshDate.ToUniversalTime();
|
|
set => ServiceUserGuidConfiguration.RecommendationsRefreshDate = value;
|
|
}
|
|
|
|
public static TimeSpan RefreshPeriod => new TimeSpan(24, 0, 0);
|
|
|
|
public static int ShuffleSeed
|
|
{
|
|
get => ServiceUserGuidConfiguration.Seed;
|
|
set => ServiceUserGuidConfiguration.Seed = value;
|
|
}
|
|
|
|
public static int MaxSongsForYouTrackCount
|
|
{
|
|
get
|
|
{
|
|
if (_maxSongsForYouTrackCount == 0)
|
|
_maxSongsForYouTrackCount = ClientConfiguration.Service.RecommendationsMaxTrackCount;
|
|
return _maxSongsForYouTrackCount;
|
|
}
|
|
}
|
|
|
|
public static ServiceUserGuidConfiguration ServiceUserGuidConfiguration => new ServiceUserGuidConfiguration(RegistryHive.CurrentUser, ClientConfiguration.Service.ConfigurationPath, string.Format("{0}", ClientConfiguration.Service.LastSignedInUserGuid));
|
|
|
|
public static int GetUserRating(DataProviderObject item)
|
|
{
|
|
int num = 0;
|
|
if (item is Track)
|
|
{
|
|
Guid id = ((MiniMedia)item).Id;
|
|
if (id != Guid.Empty)
|
|
{
|
|
int piRating = 0;
|
|
if (ZuneApplication.Service2.GetUserRating(SignIn.Instance.LastSignedInUserId, id, EContentType.MusicTrack, ref piRating))
|
|
num = piRating;
|
|
}
|
|
}
|
|
return num;
|
|
}
|
|
|
|
public static bool SetUserRating(DataProviderObject item, string propertyName, int rating)
|
|
{
|
|
bool flag = false;
|
|
if (item is Track)
|
|
{
|
|
Track track = (Track)item;
|
|
flag = ZuneApplication.Service2.SetUserTrackRating(SignIn.Instance.LastSignedInUserId, rating, track.Id, track.AlbumId, track.TrackNumber, track.Title, track.Duration.Milliseconds, track.AlbumTitle, track.Artist, track.PrimaryGenre.Title, (string)track.GetProperty("ReferrerContext"));
|
|
if (flag)
|
|
track.UserRating = rating;
|
|
}
|
|
return flag;
|
|
}
|
|
|
|
public static bool SetArtistUserRating(Guid id, string name, int rating) => ZuneApplication.Service2.SetUserArtistRating(SignIn.Instance.LastSignedInUserId, rating, id, name);
|
|
|
|
public static string GetRecommendationsEndpoint() => Service.GetEndPointUri(EServiceEndpointId.SEID_Recommendations);
|
|
|
|
private static List<int> GetUploadedArtistUserList()
|
|
{
|
|
if (_uploadedArtistList != null)
|
|
return _uploadedArtistList;
|
|
string haveUploadedArtists = ClientConfiguration.Picks.UsersWhoHaveUploadedArtists;
|
|
if (!string.IsNullOrEmpty(haveUploadedArtists))
|
|
{
|
|
string[] strArray = haveUploadedArtists.Split(',');
|
|
_uploadedArtistList = new List<int>(strArray.Length);
|
|
foreach (string str in strArray)
|
|
{
|
|
int result;
|
|
if (!string.IsNullOrEmpty(str) && int.TryParse(str.Trim(), out result))
|
|
_uploadedArtistList.Add(result);
|
|
}
|
|
}
|
|
return _uploadedArtistList;
|
|
}
|
|
|
|
private static void AddUserToArtistUploadList(int userId)
|
|
{
|
|
if (_uploadedArtistList == null)
|
|
_uploadedArtistList = new List<int>();
|
|
foreach (int uploadedArtist in _uploadedArtistList)
|
|
{
|
|
if (uploadedArtist == userId)
|
|
return;
|
|
}
|
|
_uploadedArtistList.Add(userId);
|
|
}
|
|
|
|
private static void SaveArtistUserListToRegistry()
|
|
{
|
|
string str = string.Empty;
|
|
foreach (int uploadedArtist in _uploadedArtistList)
|
|
str = !string.IsNullOrEmpty(str) ? string.Format("{0},{1}", str, uploadedArtist.ToString()) : uploadedArtist.ToString();
|
|
ClientConfiguration.Picks.UsersWhoHaveUploadedArtists = str;
|
|
}
|
|
|
|
public static bool HasUserUploadedArtists(int userId)
|
|
{
|
|
List<int> uploadedArtistUserList = GetUploadedArtistUserList();
|
|
if (uploadedArtistUserList != null)
|
|
{
|
|
foreach (int num in uploadedArtistUserList)
|
|
{
|
|
if (num == userId)
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public static void UserHasUploadArtists(int userId)
|
|
{
|
|
AddUserToArtistUploadList(userId);
|
|
SaveArtistUserListToRegistry();
|
|
}
|
|
}
|
|
}
|