/TraktPlugin/TraktSettings.cs

https://github.com/Thorsten1982/Trakt-for-Mediaportal · C# · 265 lines · 237 code · 14 blank · 14 comment · 13 complexity · 73a5aa768b5a939fc432949392cb3bb0 MD5 · raw file

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Reflection;
  5. using System.Text;
  6. using MediaPortal.Profile;
  7. using TraktPlugin.TraktAPI;
  8. using TraktPlugin.TraktAPI.DataStructures;
  9. namespace TraktPlugin
  10. {
  11. public static class TraktSettings
  12. {
  13. #region Settings
  14. public static string Username { get; set; }
  15. public static string Password { get; set; }
  16. public static int MovingPictures { get; set; }
  17. public static int TVSeries { get; set; }
  18. public static int MyVideos { get; set; }
  19. public static int MyFilms { get; set; }
  20. public static int OnlineVideos { get; set; }
  21. public static int MyAnime { get; set; }
  22. public static bool KeepTraktLibraryClean { get; set; }
  23. public static List<String> BlockedFilenames { get; set; }
  24. public static List<String> BlockedFolders { get; set; }
  25. public static SyncMovieCheck SkippedMovies { get; set; }
  26. public static SyncMovieCheck AlreadyExistMovies { get; set; }
  27. public static int LogLevel { get; set; }
  28. public static int SyncTimerLength { get; set; }
  29. public static int TrendingMoviesDefaultLayout { get; set; }
  30. public static int TrendingShowsDefaultLayout { get; set; }
  31. public static int RecommendedMoviesDefaultLayout { get; set; }
  32. public static int RecommendedShowsDefaultLayout { get; set; }
  33. public static int WatchListMoviesDefaultLayout { get; set; }
  34. public static int WatchListShowsDefaultLayout { get; set; }
  35. public static int WatchListEpisodesDefaultLayout { get; set; }
  36. public static int DefaultCalendarView { get; set; }
  37. public static int DefaultCalendarStartDate { get; set; }
  38. public static bool DownloadFullSizeFanart { get; set; }
  39. public static bool DownloadFanart { get; set; }
  40. public static int WebRequestCacheMinutes { get; set; }
  41. public static bool GetFriendRequestsOnStartup { get; set; }
  42. public static int MovingPicturesCategoryId { get; set; }
  43. public static bool MovingPicturesCategories { get; set; }
  44. public static int MovingPicturesFiltersId { get; set; }
  45. public static bool MovingPicturesFilters { get; set; }
  46. public static bool CalendarHideTVShowsInWatchList { get; set; }
  47. #endregion
  48. #region Constants
  49. private const string cTrakt = "Trakt";
  50. private const string cUsername = "Username";
  51. private const string cPassword = "Password";
  52. private const string cMovingPictures = "MovingPictures";
  53. private const string cTVSeries = "TVSeries";
  54. private const string cMyVideos = "MyVideos";
  55. private const string cMyFilms = "MyFilms";
  56. private const string cOnlineVideos = "OnlineVideos";
  57. private const string cMyAnime = "MyAnime";
  58. private const string cKeepTraktLibraryClean = "KeepLibraryClean";
  59. private const string cBlockedFilenames = "BlockedFilenames";
  60. private const string cBlockedFolders = "BlockedFolders";
  61. private const string cSkippedMovies = "SkippedMovies";
  62. private const string cAlreadyExistMovies = "AlreadyExistMovies";
  63. private const string cSyncTimerLength = "SyncTimerLength";
  64. private const string cTrendingMoviesDefaultLayout = "TrendingMoviesDefaultLayout";
  65. private const string cTrendingShowsDefaultLayout = "TrendingShowsDefaultLayout";
  66. private const string cRecommendedMoviesDefaultLayout = "RecommendedMoviesDefaultLayout";
  67. private const string cRecommendedShowsDefaultLayout = "RecommendedShowsDefaultLayout";
  68. private const string cWatchListMoviesDefaultLayout = "WatchListMoviesDefaultLayout";
  69. private const string cWatchListShowsDefaultLayout = "WatchListShowsDefaultLayout";
  70. private const string cWatchListEpisodesDefaultLayout = "WatchListEpisodesDefaultLayout";
  71. private const string cDefaultCalendarView = "DefaultCalendarView";
  72. private const string cDefaultCalendarStartDate = "DefaultCalendarStartDate";
  73. private const string cDownloadFullSizeFanart = "DownloadFullSizeFanart";
  74. private const string cDownloadFanart = "DownloadFanart";
  75. private const string cWebRequestCacheMinutes = "WebRequestCacheMinutes";
  76. private const string cGetFriendRequestsOnStartup = "GetFriendRequestsOnStartup";
  77. private const string cMovingPicturesCategoryId = "MovingPicturesCategoryId";
  78. private const string cMovingPicturesCategories = "MovingPicturesCategories";
  79. private const string cMovingPicturesFilterId = "MovingPicturesFilterId";
  80. private const string cMovingPicturesFilters = "MovingPicturesFilters";
  81. private const string cCalendarHideTVShowsInWatchList = "CalendarHideTVShowsInWatchList";
  82. #endregion
  83. /// <summary>
  84. /// Get Movie Plugin Count
  85. /// </summary>
  86. public static int MoviePluginCount
  87. {
  88. get
  89. {
  90. int count = 0;
  91. if (MovingPictures >= 0) count++;
  92. if (MyVideos >= 0) count++;
  93. if (MyFilms >= 0) count++;
  94. return count;
  95. }
  96. }
  97. /// <summary>
  98. /// Get TV Show Plugin Count
  99. /// </summary>
  100. public static int TvShowPluginCount
  101. {
  102. get
  103. {
  104. int count = 0;
  105. if (TVSeries >= 0) count++;
  106. if (MyAnime >= 0) count++;
  107. return count;
  108. }
  109. }
  110. public static string Version
  111. {
  112. get
  113. {
  114. return Assembly.GetCallingAssembly().GetName().Version.ToString();
  115. }
  116. }
  117. public static string UserAgent
  118. {
  119. get
  120. {
  121. return string.Format("TraktForMediaPortal/{0}", Version);
  122. }
  123. }
  124. public static ConnectionState AccountStatus
  125. {
  126. get
  127. {
  128. if (_AccountStatus == ConnectionState.Pending)
  129. {
  130. // update state, to inform we are connecting now
  131. _AccountStatus = ConnectionState.Connecting;
  132. TraktLogger.Info("Signing into trakt.tv");
  133. if (string.IsNullOrEmpty(TraktSettings.Username) || string.IsNullOrEmpty(TraktSettings.Password))
  134. {
  135. TraktLogger.Info("Username and/or Password is empty in settings!");
  136. return ConnectionState.Disconnected;
  137. }
  138. // test connection
  139. TraktAccount account = new TraktAccount
  140. {
  141. Username = TraktSettings.Username,
  142. Password = TraktSettings.Password
  143. };
  144. TraktResponse response = TraktAPI.TraktAPI.TestAccount(account);
  145. if (response != null && response.Status == "success")
  146. {
  147. TraktLogger.Info("User {0} signed into trakt.", TraktSettings.Username);
  148. _AccountStatus = ConnectionState.Connected;
  149. }
  150. else
  151. {
  152. TraktLogger.Info("Username and/or Password is Invalid!");
  153. _AccountStatus = ConnectionState.Invalid;
  154. }
  155. }
  156. return _AccountStatus;
  157. }
  158. set
  159. {
  160. _AccountStatus = value;
  161. }
  162. }
  163. static ConnectionState _AccountStatus = ConnectionState.Pending;
  164. /// <summary>
  165. /// Loads the Settings
  166. /// </summary>
  167. public static void loadSettings()
  168. {
  169. TraktLogger.Info("Loading Settings");
  170. using (Settings xmlreader = new MPSettings())
  171. {
  172. Username = xmlreader.GetValueAsString(cTrakt, cUsername, "");
  173. Password = xmlreader.GetValueAsString(cTrakt, cPassword, "");
  174. MovingPictures = xmlreader.GetValueAsInt(cTrakt, cMovingPictures, -1);
  175. TVSeries = xmlreader.GetValueAsInt(cTrakt, cTVSeries, -1);
  176. MyVideos = xmlreader.GetValueAsInt(cTrakt, cMyVideos, -1);
  177. MyFilms = xmlreader.GetValueAsInt(cTrakt, cMyFilms, -1);
  178. OnlineVideos = xmlreader.GetValueAsInt(cTrakt, cOnlineVideos, -1);
  179. MyAnime = xmlreader.GetValueAsInt(cTrakt, cMyAnime, -1);
  180. KeepTraktLibraryClean = xmlreader.GetValueAsBool(cTrakt, cKeepTraktLibraryClean, false);
  181. BlockedFilenames = xmlreader.GetValueAsString(cTrakt, cBlockedFilenames, "").FromJSONArray<string>().ToList();
  182. BlockedFolders = xmlreader.GetValueAsString(cTrakt, cBlockedFolders, "").FromJSONArray<string>().ToList();
  183. SkippedMovies = xmlreader.GetValueAsString(cTrakt, cSkippedMovies, "{}").FromJSON<SyncMovieCheck>();
  184. AlreadyExistMovies = xmlreader.GetValueAsString(cTrakt, cAlreadyExistMovies, "{}").FromJSON<SyncMovieCheck>();
  185. LogLevel = xmlreader.GetValueAsInt("general", "loglevel", 1);
  186. SyncTimerLength = xmlreader.GetValueAsInt(cTrakt, cSyncTimerLength, 86400000);
  187. TrendingMoviesDefaultLayout = xmlreader.GetValueAsInt(cTrakt, cTrendingMoviesDefaultLayout, 0);
  188. TrendingShowsDefaultLayout = xmlreader.GetValueAsInt(cTrakt, cTrendingShowsDefaultLayout, 0);
  189. RecommendedMoviesDefaultLayout = xmlreader.GetValueAsInt(cTrakt, cRecommendedMoviesDefaultLayout, 0);
  190. RecommendedShowsDefaultLayout = xmlreader.GetValueAsInt(cTrakt, cRecommendedShowsDefaultLayout, 0);
  191. WatchListMoviesDefaultLayout = xmlreader.GetValueAsInt(cTrakt, cWatchListMoviesDefaultLayout, 0);
  192. WatchListShowsDefaultLayout = xmlreader.GetValueAsInt(cTrakt, cWatchListShowsDefaultLayout, 0);
  193. WatchListEpisodesDefaultLayout = xmlreader.GetValueAsInt(cTrakt, cWatchListEpisodesDefaultLayout, 0);
  194. DefaultCalendarView = xmlreader.GetValueAsInt(cTrakt, cDefaultCalendarView, 0);
  195. DefaultCalendarStartDate = xmlreader.GetValueAsInt(cTrakt, cDefaultCalendarStartDate, 0);
  196. DownloadFullSizeFanart = xmlreader.GetValueAsBool(cTrakt, cDownloadFullSizeFanart, false);
  197. DownloadFanart = xmlreader.GetValueAsBool(cTrakt, cDownloadFanart, true);
  198. WebRequestCacheMinutes = xmlreader.GetValueAsInt(cTrakt, cWebRequestCacheMinutes, 15);
  199. GetFriendRequestsOnStartup = xmlreader.GetValueAsBool(cTrakt, cGetFriendRequestsOnStartup, true);
  200. MovingPicturesCategoryId = xmlreader.GetValueAsInt(cTrakt, cMovingPicturesCategoryId, -1);
  201. MovingPicturesCategories = xmlreader.GetValueAsBool(cTrakt, cMovingPicturesCategories, false);
  202. MovingPicturesFiltersId = xmlreader.GetValueAsInt(cTrakt, cMovingPicturesFilterId, -1);
  203. MovingPicturesFilters = xmlreader.GetValueAsBool(cTrakt, cMovingPicturesFilters, false);
  204. CalendarHideTVShowsInWatchList = xmlreader.GetValueAsBool(cTrakt, cCalendarHideTVShowsInWatchList, false);
  205. }
  206. }
  207. /// <summary>
  208. /// Saves the Settings
  209. /// </summary>
  210. public static void saveSettings()
  211. {
  212. TraktLogger.Info("Saving Settings");
  213. using (Settings xmlwriter = new MPSettings())
  214. {
  215. xmlwriter.SetValue(cTrakt, cUsername, Username);
  216. xmlwriter.SetValue(cTrakt, cPassword, Password);
  217. xmlwriter.SetValue(cTrakt, cMovingPictures, MovingPictures);
  218. xmlwriter.SetValue(cTrakt, cTVSeries, TVSeries);
  219. xmlwriter.SetValue(cTrakt, cMyVideos, MyVideos);
  220. xmlwriter.SetValue(cTrakt, cMyFilms, MyFilms);
  221. xmlwriter.SetValue(cTrakt, cOnlineVideos, OnlineVideos);
  222. xmlwriter.SetValue(cTrakt, cMyAnime, MyAnime);
  223. xmlwriter.SetValueAsBool(cTrakt, cKeepTraktLibraryClean, KeepTraktLibraryClean);
  224. xmlwriter.SetValue(cTrakt, cBlockedFilenames, BlockedFilenames.ToJSON());
  225. xmlwriter.SetValue(cTrakt, cBlockedFolders, BlockedFolders.ToJSON());
  226. xmlwriter.SetValue(cTrakt, cSkippedMovies, SkippedMovies.ToJSON());
  227. xmlwriter.SetValue(cTrakt, cAlreadyExistMovies, AlreadyExistMovies.ToJSON());
  228. xmlwriter.SetValue(cTrakt, cSyncTimerLength, SyncTimerLength);
  229. xmlwriter.SetValue(cTrakt, cTrendingMoviesDefaultLayout, TrendingMoviesDefaultLayout);
  230. xmlwriter.SetValue(cTrakt, cTrendingShowsDefaultLayout, TrendingShowsDefaultLayout);
  231. xmlwriter.SetValue(cTrakt, cRecommendedMoviesDefaultLayout, RecommendedMoviesDefaultLayout);
  232. xmlwriter.SetValue(cTrakt, cRecommendedShowsDefaultLayout, RecommendedShowsDefaultLayout);
  233. xmlwriter.SetValue(cTrakt, cWatchListMoviesDefaultLayout, WatchListMoviesDefaultLayout);
  234. xmlwriter.SetValue(cTrakt, cWatchListShowsDefaultLayout, WatchListShowsDefaultLayout);
  235. xmlwriter.SetValue(cTrakt, cWatchListEpisodesDefaultLayout, WatchListEpisodesDefaultLayout);
  236. xmlwriter.SetValue(cTrakt, cDefaultCalendarView, DefaultCalendarView);
  237. xmlwriter.SetValue(cTrakt, cDefaultCalendarStartDate, DefaultCalendarStartDate);
  238. xmlwriter.SetValueAsBool(cTrakt, cDownloadFullSizeFanart, DownloadFullSizeFanart);
  239. xmlwriter.SetValueAsBool(cTrakt, cDownloadFanart, DownloadFanart);
  240. xmlwriter.SetValue(cTrakt, cWebRequestCacheMinutes, WebRequestCacheMinutes);
  241. xmlwriter.SetValueAsBool(cTrakt, cGetFriendRequestsOnStartup, GetFriendRequestsOnStartup);
  242. xmlwriter.SetValue(cTrakt, cMovingPicturesCategoryId, MovingPicturesCategoryId);
  243. xmlwriter.SetValueAsBool(cTrakt, cMovingPicturesCategories, MovingPicturesCategories);
  244. xmlwriter.SetValue(cTrakt, cMovingPicturesFilterId, MovingPicturesFiltersId);
  245. xmlwriter.SetValueAsBool(cTrakt, cMovingPicturesFilters, MovingPicturesFilters);
  246. xmlwriter.SetValueAsBool(cTrakt, cCalendarHideTVShowsInWatchList, CalendarHideTVShowsInWatchList);
  247. }
  248. Settings.SaveCache();
  249. }
  250. }
  251. }