Crunchy-Downloader/CRD/Utils/Enums/EnumCollection.cs
Elwador d9813191ad - Added **Global Pause button** for the download queue [#418](https://github.com/Crunchy-DL/Crunchy-Downloader/issues/418)
- Added **fallback for sync failures** [#407](https://github.com/Crunchy-DL/Crunchy-Downloader/issues/407)
- Added **history setting** to remove non-existent series/episodes on refresh [#420](https://github.com/Crunchy-DL/Crunchy-Downloader/issues/420)
- Added **movies to history**
- Added **queue persistence**
- Changed **download item state handling**
- Changed **download item removal processing**
- Made small changes to **font detection**
- Changed **rate limit error handling**
- Fixed issue where **files were not always cleaned up** for removed downloads
- Fixed **crash when the queue list was modified**
- Fixed **changelog parsing** not handling versions like `vX.X.X.X`, which caused changes to be re-added on every restart
2026-04-20 15:40:58 +02:00

317 lines
5.9 KiB
C#

using System;
using System.Runtime.Serialization;
using CRD.Utils.JsonConv;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
namespace CRD.Utils;
[JsonConverter(typeof(StringEnumConverter))]
public enum StreamingService{
[EnumMember(Value = "Crunchyroll")]
Crunchyroll,
[EnumMember(Value = "Unknown")]
Unknown
}
[JsonConverter(typeof(StringEnumConverter))]
public enum CrunchyrollEndpoints{
[EnumMember(Value = "android/phone")]
Android,
[EnumMember(Value = "tv/android_tv")]
AndroidTv,
[EnumMember(Value = "Guest")]
Guest,
[EnumMember(Value = "Unknown")]
Unknown
}
[JsonConverter(typeof(StringEnumConverter))]
public enum EpisodeType{
[EnumMember(Value = "MusicVideo")]
MusicVideo,
[EnumMember(Value = "Concert")]
Concert,
[EnumMember(Value = "Episode")]
Episode,
[EnumMember(Value = "Unknown")]
Unknown
}
[JsonConverter(typeof(StringEnumConverter))]
public enum SeriesType{
[EnumMember(Value = "Artist")]
Artist,
[EnumMember(Value = "Series")]
Series,
[EnumMember(Value = "Movie")]
Movie,
[EnumMember(Value = "Unknown")]
Unknown
}
[DataContract]
[JsonConverter(typeof(LocaleConverter))]
public enum Locale{
[EnumMember(Value = "")]
DefaulT,
[EnumMember(Value = "un")]
Unknown,
[EnumMember(Value = "en-US")]
EnUs,
[EnumMember(Value = "es-LA")]
EsLa,
[EnumMember(Value = "es-419")]
Es419,
[EnumMember(Value = "es-ES")]
EsEs,
[EnumMember(Value = "pt-BR")]
PtBr,
[EnumMember(Value = "fr-FR")]
FrFr,
[EnumMember(Value = "de-DE")]
DeDe,
[EnumMember(Value = "ar-ME")]
ArMe,
[EnumMember(Value = "ar-SA")]
ArSa,
[EnumMember(Value = "it-IT")]
ItIt,
[EnumMember(Value = "ru-RU")]
RuRu,
[EnumMember(Value = "tr-TR")]
TrTr,
[EnumMember(Value = "hi-IN")]
HiIn,
[EnumMember(Value = "zh-CN")]
ZhCn,
[EnumMember(Value = "ko-KR")]
KoKr,
[EnumMember(Value = "ja-JP")]
JaJp,
[EnumMember(Value = "id-ID")]
IdId,
[EnumMember(Value = "en-IN")]
EnIn,
[EnumMember(Value = "pt-PT")]
PtPt,
[EnumMember(Value = "zh-TW")]
ZhTw,
[EnumMember(Value = "zh-HK")]
ZhHk,
[EnumMember(Value = "ca-ES")]
CaEs,
[EnumMember(Value = "pl-PL")]
PlPl,
[EnumMember(Value = "th-TH")]
ThTh,
[EnumMember(Value = "ta-IN")]
TaIn,
[EnumMember(Value = "ms-MY")]
MsMy,
[EnumMember(Value = "vi-VN")]
ViVn,
[EnumMember(Value = "te-IN")]
TeIn,
}
public static class EnumExtensions{
public static string GetEnumMemberValue(this Enum value){
var type = value.GetType();
var name = Enum.GetName(type, value);
if (name != null){
var field = type.GetField(name);
if (field != null){
var attr = Attribute.GetCustomAttribute(field, typeof(EnumMemberAttribute)) as EnumMemberAttribute;
if (attr != null){
return attr.Value ?? string.Empty;
}
}
}
return string.Empty;
}
}
[DataContract]
public enum ImageType{
[EnumMember(Value = "poster_tall")]
PosterTall,
[EnumMember(Value = "poster_wide")]
PosterWide,
[EnumMember(Value = "promo_image")]
PromoImage,
[EnumMember(Value = "thumbnail")]
Thumbnail,
}
[DataContract]
public enum DownloadMediaType{
[EnumMember(Value = "Video")]
Video,
[EnumMember(Value = "SyncVideo")]
SyncVideo,
[EnumMember(Value = "Audio")]
Audio,
[EnumMember(Value = "AudioRoleDescription")]
AudioRoleDescription,
[EnumMember(Value = "Chapters")]
Chapters,
[EnumMember(Value = "Subtitle")]
Subtitle,
[EnumMember(Value = "Description")]
Description,
[EnumMember(Value = "Cover")]
Cover,
}
[JsonConverter(typeof(StringEnumConverter))]
public enum ScaledBorderAndShadowSelection{
[EnumMember(Value = "Dont Add")]
DontAdd,
[EnumMember(Value = "ScaledBorderAndShadow Yes")]
ScaledBorderAndShadowYes,
[EnumMember(Value = "ScaledBorderAndShadow No")]
ScaledBorderAndShadowNo,
}
[JsonConverter(typeof(StringEnumConverter))]
public enum HistoryViewType{
[EnumMember(Value = "Posters")]
Posters,
[EnumMember(Value = "Table")]
Table,
}
[JsonConverter(typeof(StringEnumConverter))]
public enum SortingType{
[EnumMember(Value = "Series Title")]
SeriesTitle,
[EnumMember(Value = "Next Air Date")]
NextAirDate,
[EnumMember(Value = "History Series Add Date")]
HistorySeriesAddDate,
}
[JsonConverter(typeof(StringEnumConverter))]
public enum FilterType{
[EnumMember(Value = "All")]
All,
[EnumMember(Value = "Missing Episodes")]
MissingEpisodes,
[EnumMember(Value = "Missing Episodes Sonarr")]
MissingEpisodesSonarr,
[EnumMember(Value = "Continuing Only")]
ContinuingOnly,
[EnumMember(Value = "Active")]
Active,
[EnumMember(Value = "Inactive")]
Inactive,
}
[JsonConverter(typeof(StringEnumConverter))]
public enum CrunchyUrlType{
[EnumMember(Value = "Artist")]
Artist,
[EnumMember(Value = "MusicVideo")]
MusicVideo,
[EnumMember(Value = "Concert")]
Concert,
[EnumMember(Value = "Episode")]
Episode,
[EnumMember(Value = "Series")]
Series,
[EnumMember(Value = "Unknown")]
Unknown
}
public enum EpisodeDownloadMode{
Default,
OnlyVideo,
OnlyAudio,
OnlySubs,
}
public enum DownloadState{
Queued,
Downloading,
Paused,
Processing,
Done,
Error
}
public enum HistoryRefreshMode{
DefaultAll = 0,
DefaultActive = 1,
FastNewReleases = 50
}
public enum SonarrCoverType{
Unknown,
Poster,
Banner,
FanArt,
Screenshot,
Headshot,
ClearLogo,
}
public enum SonarrSeriesType{
Anime,
Standard,
Daily
}
public enum SonarrStatus{
Continuing,
Upcoming,
Ended,
Deleted
};