public static string ForShow(PlexMetadataResponse response) { using var ms = new MemoryStream(); using var bw = new BinaryWriter(ms); // video key bw.Write(response.Key); // video added at bw.Write(response.AddedAt); // video updated at bw.Write(response.UpdatedAt); // genre ids foreach (PlexGenreResponse genre in Optional(response.Genre).Flatten()) { bw.Write((byte)FieldKey.GenreTag); bw.Write(genre.Tag); } // collection ids foreach (PlexCollectionResponse collection in Optional(response.Collection).Flatten()) { bw.Write((byte)FieldKey.CollectionTag); bw.Write(collection.Tag); } // role ids foreach (PlexRoleResponse role in Optional(response.Role).Flatten()) { bw.Write((byte)FieldKey.RoleTag); bw.Write(role.Tag); } // label ids foreach (PlexLabelResponse label in Optional(response.Label).Flatten()) { bw.Write((byte)FieldKey.LabelTag); bw.Write(label.Tag); } ms.Position = 0; byte[] hash = SHA1.Create().ComputeHash(ms); return BitConverter.ToString(hash).Replace("-", string.Empty); }
public static string ForMovie(PlexMetadataResponse response) { using var ms = new MemoryStream(); using var bw = new BinaryWriter(ms); // video key bw.Write(response.Key); // video added at bw.Write(response.AddedAt); // video updated at bw.Write(response.UpdatedAt); foreach (PlexMediaResponse<PlexPartResponse> media in response.Media) { // media id bw.Write((byte)FieldKey.MediaId); bw.Write(media.Id); // media part id foreach (PlexPartResponse part in media.Part) { bw.Write((byte)FieldKey.PartId); bw.Write(part.Id); } } // genre ids foreach (PlexGenreResponse genre in Optional(response.Genre).Flatten()) { bw.Write((byte)FieldKey.GenreTag); bw.Write(genre.Tag); } // label ids foreach (PlexLabelResponse label in Optional(response.Label).Flatten()) { bw.Write((byte)FieldKey.LabelTag); bw.Write(label.Tag); } // director ids foreach (PlexDirectorResponse director in Optional(response.Director).Flatten()) { bw.Write((byte)FieldKey.DirectorTag); bw.Write(director.Tag); } // writer ids foreach (PlexWriterResponse writer in Optional(response.Writer).Flatten()) { bw.Write((byte)FieldKey.WriterTag); bw.Write(writer.Tag); } // collection ids foreach (PlexCollectionResponse collection in Optional(response.Collection).Flatten()) { bw.Write((byte)FieldKey.CollectionTag); bw.Write(collection.Tag); } // role ids foreach (PlexRoleResponse role in Optional(response.Role).Flatten()) { bw.Write((byte)FieldKey.RoleTag); bw.Write(role.Tag); } ms.Position = 0; byte[] hash = SHA1.Create().ComputeHash(ms); return BitConverter.ToString(hash).Replace("-", string.Empty); }