updated
This commit is contained in:
parent
8473b10615
commit
be62ccfa4b
1
.gitignore
vendored
1
.gitignore
vendored
@ -4,3 +4,4 @@ WinFormsApp1/bin
|
|||||||
WinFormsApp1/bin
|
WinFormsApp1/bin
|
||||||
*.cache
|
*.cache
|
||||||
*.cache
|
*.cache
|
||||||
|
WinFormsApp1/obj
|
||||||
|
|||||||
@ -570,8 +570,7 @@ namespace WinFormsApp1
|
|||||||
LogOutput = ":debug",
|
LogOutput = ":debug",
|
||||||
#endif
|
#endif
|
||||||
UIRefresh = false,
|
UIRefresh = false,
|
||||||
UIRefreshInterval = 250,
|
UIRefreshInterval = 250
|
||||||
UICurTimePerSecond = true,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
Config_Player = new Config();
|
Config_Player = new Config();
|
||||||
@ -11243,12 +11242,11 @@ namespace WinFormsApp1
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
lastActivity = DateTime.Now;
|
lastActivity = DateTime.Now;
|
||||||
await markAsHOT(player_CurrentItem!);
|
await RenameAndResumeAsync(makeHot: true);
|
||||||
await GetPlayerItemInfo();
|
|
||||||
}
|
}
|
||||||
catch (System.Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
System.Windows.Forms.MessageBox.Show(ex.Message, "button_player_AlsHOTmarkieren_Click");
|
MessageBox.Show(ex.Message, "button_player_AlsHOTmarkieren_Click");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -11257,62 +11255,286 @@ namespace WinFormsApp1
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
lastActivity = DateTime.Now;
|
lastActivity = DateTime.Now;
|
||||||
await markAsCold(player_CurrentItem!);
|
await RenameAndResumeAsync(makeHot: false);
|
||||||
await GetPlayerItemInfo();
|
|
||||||
}
|
}
|
||||||
catch (System.Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
System.Windows.Forms.MessageBox.Show(ex.Message, "button_player_AlsColdMarkieren_Click");
|
MessageBox.Show(ex.Message, "button_player_AlsColdMarkieren_Click");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void button_player_DateiBehalten_Click(object sender, EventArgs e)
|
/// <summary>
|
||||||
|
/// Stoppt aktive Wiedergabe (Player/Editor) für das aktuelle File,
|
||||||
|
/// benennt Datei (+Thumbnail) um und setzt Wiedergabe exakt an alter Position fort.
|
||||||
|
/// </summary>
|
||||||
|
private async Task RenameAndResumeAsync(bool makeHot)
|
||||||
|
{
|
||||||
|
var item = player_CurrentItem;
|
||||||
|
if (item == null) return;
|
||||||
|
|
||||||
|
var oldFullPath = item.SubItems[6].Text;
|
||||||
|
if (string.IsNullOrWhiteSpace(oldFullPath) || !File.Exists(oldFullPath)) return;
|
||||||
|
|
||||||
|
var dir = Path.GetDirectoryName(oldFullPath)!;
|
||||||
|
var oldFileName = Path.GetFileName(oldFullPath);
|
||||||
|
|
||||||
|
// Basisname ohne evtl. vorhandenes "HOT "
|
||||||
|
var baseName = oldFileName.StartsWith("HOT ", StringComparison.OrdinalIgnoreCase)
|
||||||
|
? oldFileName.Substring(4)
|
||||||
|
: oldFileName;
|
||||||
|
|
||||||
|
var newFileName = makeHot ? $"HOT {baseName}" : baseName;
|
||||||
|
if (string.Equals(newFileName, oldFileName, StringComparison.Ordinal))
|
||||||
|
return; // nichts zu tun
|
||||||
|
|
||||||
|
var newFullPath = Path.Combine(dir, newFileName);
|
||||||
|
|
||||||
|
// ── Zustand merken & Wiedergabe wirklich stoppen/entladen ─────────────────
|
||||||
|
bool reopenPlayer = false, reopenEditor = false;
|
||||||
|
|
||||||
|
double pPosMs = 0; int pVol = 100; bool pMute = false;
|
||||||
|
double ePosMs = 0; int eVol = 100; bool eMute = false;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (flyleafHost_Player.Player?.VideoDecoder?.VideoStream?.Demuxer?.Url == oldFullPath
|
||||||
|
&& latestmedia1 == oldFullPath)
|
||||||
|
{
|
||||||
|
// CurTime ist bei dir in Ticks → auf Millisekunden normieren
|
||||||
|
long ticks = flyleafHost_Player.Player.CurTime;
|
||||||
|
pPosMs = TimeSpan.FromTicks(ticks).TotalMilliseconds;
|
||||||
|
|
||||||
|
pVol = flyleafHost_Player.Player.Audio.Volume;
|
||||||
|
pMute = flyleafHost_Player.Player.Audio.Mute;
|
||||||
|
|
||||||
|
// wirklich stoppen & freigeben (deine eigene Routine nutzt du ja schon beim Löschen)
|
||||||
|
StopVideoPlayer(flyleafHost_Player);
|
||||||
|
reopenPlayer = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch { /* defensiv */ }
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (flyleafHost_Editor.Player?.VideoDecoder?.VideoStream?.Demuxer?.Url == oldFullPath
|
||||||
|
&& latestmedia2 == oldFullPath)
|
||||||
|
{
|
||||||
|
long ticks = flyleafHost_Editor.Player.CurTime;
|
||||||
|
ePosMs = TimeSpan.FromTicks(ticks).TotalMilliseconds;
|
||||||
|
|
||||||
|
eVol = flyleafHost_Editor.Player.Audio.Volume;
|
||||||
|
eMute = flyleafHost_Editor.Player.Audio.Mute;
|
||||||
|
|
||||||
|
StopVideoPlayer(flyleafHost_Editor);
|
||||||
|
reopenEditor = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch { /* defensiv */ }
|
||||||
|
|
||||||
|
// ganz kleinen Moment geben, bis OS-Handles freigegeben sind
|
||||||
|
await Task.Delay(100);
|
||||||
|
|
||||||
|
// ── Umbenennen (mit kleinem Retry, falls Handle minimal später freikommt) ──
|
||||||
|
await RenameWithRetryAsync(oldFullPath, newFullPath, retries: 10, delayMs: 50);
|
||||||
|
|
||||||
|
// Thumbnail parallel mit umbenennen (best effort)
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (thumbnailPath != null)
|
||||||
|
{
|
||||||
|
string oldBase = Path.GetFileNameWithoutExtension(baseName); // ohne evtl. HOT
|
||||||
|
string newBase = Path.GetFileNameWithoutExtension(baseName); // gleicher Basename
|
||||||
|
|
||||||
|
string oldThumb = Path.Combine(thumbnailPath.FullName, oldBase + ".jpg");
|
||||||
|
string newThumb = Path.Combine(thumbnailPath.FullName,
|
||||||
|
(makeHot ? "HOT " : "") + newBase + ".jpg");
|
||||||
|
|
||||||
|
if (File.Exists(oldThumb))
|
||||||
|
{
|
||||||
|
// Falls Ziel schon existiert: überschreiben
|
||||||
|
if (File.Exists(newThumb)) File.Delete(newThumb);
|
||||||
|
File.Move(oldThumb, newThumb);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch { /* optional */ }
|
||||||
|
|
||||||
|
// ── ListView/Labels aktualisieren ─────────────────────────────────────────
|
||||||
|
item.SubItems[2].Text = newFileName; // Dateiname-Spalte
|
||||||
|
item.SubItems[6].Text = newFullPath; // FullPath
|
||||||
|
label_Filename_Value.Text = newFileName.Length >= 33 ? newFileName[..30] + "..." : newFileName;
|
||||||
|
|
||||||
|
// HOT-Icon/Buttons toggeln
|
||||||
|
pictureBox_HotIcon.Visible = makeHot;
|
||||||
|
button_player_AlsHOTmarkieren.Visible = !makeHot;
|
||||||
|
button_player_AlsColdMarkieren.Visible = makeHot;
|
||||||
|
|
||||||
|
// ── Wiedergabe wiederherstellen (Player/Editor) ───────────────────────────
|
||||||
|
// Wartehelfer
|
||||||
|
static async Task WaitUntilSeekableAsync(FlyleafLib.Controls.WinForms.FlyleafHost host, int timeoutMs = 4000)
|
||||||
|
{
|
||||||
|
var start = Environment.TickCount;
|
||||||
|
while (Environment.TickCount - start < timeoutMs)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (host.Player != null && host.Player.Duration > 0) return;
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
await Task.Delay(50);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (reopenPlayer)
|
||||||
|
{
|
||||||
|
latestmedia1 = newFullPath;
|
||||||
|
flyleafHost_Player.Player.Open(newFullPath);
|
||||||
|
await WaitUntilSeekableAsync(flyleafHost_Player);
|
||||||
|
|
||||||
|
// SeekAccurate erwartet Millisekunden
|
||||||
|
flyleafHost_Player.Player.SeekAccurate((int)Math.Round(pPosMs));
|
||||||
|
flyleafHost_Player.Player.Audio.Volume = pVol;
|
||||||
|
flyleafHost_Player.Player.Audio.Mute = pMute;
|
||||||
|
flyleafHost_Player.Player.Play();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (reopenEditor)
|
||||||
|
{
|
||||||
|
latestmedia2 = newFullPath;
|
||||||
|
flyleafHost_Editor.Player.Open(newFullPath);
|
||||||
|
await WaitUntilSeekableAsync(flyleafHost_Editor);
|
||||||
|
|
||||||
|
flyleafHost_Editor.Player.SeekAccurate((int)Math.Round(ePosMs));
|
||||||
|
flyleafHost_Editor.Player.Audio.Volume = eVol;
|
||||||
|
flyleafHost_Editor.Player.Audio.Mute = eMute;
|
||||||
|
flyleafHost_Editor.Player.Play();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Restliches UI auffrischen (setzt z. B. Buttons, Watch/Fav-Anzeigen etc.)
|
||||||
|
await GetPlayerItemInfo();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Versucht ein File mehrfach umzubenennen – hilfreich, wenn Handles noch kurz blockieren.
|
||||||
|
/// </summary>
|
||||||
|
private static async Task RenameWithRetryAsync(string oldPath, string newPath, int retries, int delayMs)
|
||||||
|
{
|
||||||
|
for (int i = 0; i <= retries; i++)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (File.Exists(newPath)) File.Delete(newPath);
|
||||||
|
File.Move(oldPath, newPath);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
catch when (i < retries)
|
||||||
|
{
|
||||||
|
await Task.Delay(delayMs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// letzter Versuch wirft echte Exception
|
||||||
|
if (File.Exists(oldPath)) File.Move(oldPath, newPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ClosePlayerTabFast()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
lastActivity = DateTime.Now;
|
// Player sicher stoppen (wenn aktuelles File offen ist)
|
||||||
await keepFile(player_CurrentItem!);
|
var filePath = player_CurrentItem?.SubItems[6].Text;
|
||||||
tabControl1.SelectedTab = previousTabPage;
|
|
||||||
tabControl1.TabPages.Remove(tabPage_Player);
|
if (!string.IsNullOrEmpty(filePath))
|
||||||
}
|
{
|
||||||
catch (System.Exception ex)
|
if (flyleafHost_Player.Player?.VideoDecoder?.VideoStream?.Demuxer?.Url == filePath && latestmedia1 == filePath)
|
||||||
{
|
StopVideoPlayer(flyleafHost_Player);
|
||||||
System.Windows.Forms.MessageBox.Show(ex.Message, "button_player_DateiBehalten_Click");
|
|
||||||
|
if (flyleafHost_Editor.Player?.VideoDecoder?.VideoStream?.Demuxer?.Url == filePath && latestmedia2 == filePath)
|
||||||
|
StopVideoPlayer(flyleafHost_Editor);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tab sofort schließen/wechseln
|
||||||
|
if (previousTabPage != null && tabControl1.Contains(tabPage_Player))
|
||||||
|
{
|
||||||
|
tabControl1.SelectedTab = previousTabPage;
|
||||||
|
tabControl1.TabPages.Remove(tabPage_Player);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
catch { /* defensiv */ }
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void button_player_DateiLöschen_Click(object sender, EventArgs e)
|
|
||||||
|
private void button_player_DateiBehalten_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
lastActivity = DateTime.Now;
|
lastActivity = DateTime.Now;
|
||||||
|
|
||||||
FileInfo file = new FileInfo(player_CurrentItem!.SubItems[6].Text);
|
// Kopien, damit Lambdas stabil sind
|
||||||
|
var item = player_CurrentItem!;
|
||||||
|
var listview = item.ListView;
|
||||||
|
|
||||||
System.Windows.Forms.ListView? listview = player_CurrentItem.ListView;
|
// UI sofort aktualisieren
|
||||||
|
ClosePlayerTabFast();
|
||||||
|
|
||||||
|
// Datei verschieben/umlabeln im Hintergrund
|
||||||
|
_ = Task.Run(async () =>
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
await keepFile(item);
|
||||||
|
// Falls du danach die ListViews aktualisieren willst:
|
||||||
|
await this.InvokeAsync(async () => await GetPlayerItemInfo());
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
// Fehler ins UI bringen
|
||||||
|
BeginInvoke(new Action(() =>
|
||||||
|
MessageBox.Show(ex.Message, "button_player_DateiBehalten_Click (Background)")));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show(ex.Message, "button_player_DateiBehalten_Click");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void button_player_DateiLöschen_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
lastActivity = DateTime.Now;
|
||||||
|
|
||||||
|
var item = player_CurrentItem!;
|
||||||
|
var listview = item.ListView;
|
||||||
if (listview == null) return;
|
if (listview == null) return;
|
||||||
|
|
||||||
if (flyleafHost_Player.Player != null && flyleafHost_Player.Player.VideoDecoder.VideoStream != null && !String.IsNullOrEmpty(flyleafHost_Player.Player.VideoDecoder.VideoStream.Demuxer.Url) && flyleafHost_Player.Player.VideoDecoder.VideoStream.Demuxer.Url == file.FullName && latestmedia1 == file.FullName)
|
// UI sofort aktualisieren
|
||||||
{
|
ClosePlayerTabFast();
|
||||||
StopVideoPlayer(flyleafHost_Player);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (flyleafHost_Editor.Player != null && flyleafHost_Editor.Player.VideoDecoder.VideoStream != null && !String.IsNullOrEmpty(flyleafHost_Editor.Player.VideoDecoder.VideoStream.Demuxer.Url) && flyleafHost_Editor.Player.VideoDecoder.VideoStream.Demuxer.Url == file.FullName && latestmedia2 == file.FullName)
|
// Löschen im Hintergrund
|
||||||
|
_ = Task.Run(async () =>
|
||||||
{
|
{
|
||||||
StopVideoPlayer(flyleafHost_Editor);
|
try
|
||||||
}
|
{
|
||||||
|
await deleteFile(item);
|
||||||
await deleteFile(player_CurrentItem);
|
await deleteItemFromListview(item, listview);
|
||||||
await deleteItemFromListview(player_CurrentItem, listview);
|
}
|
||||||
tabControl1.SelectedTab = previousTabPage;
|
catch (Exception ex)
|
||||||
tabControl1.TabPages.Remove(tabPage_Player);
|
{
|
||||||
|
BeginInvoke(new Action(() =>
|
||||||
|
MessageBox.Show(ex.Message, "button_player_DateiLöschen_Click (Background)")));
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
catch (System.Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
System.Windows.Forms.MessageBox.Show(ex.Message, "button_player_DateiLöschen_Click");
|
MessageBox.Show(ex.Message, "button_player_DateiLöschen_Click");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void checkBox_useInternalPlayer_CheckedChanged(object sender, EventArgs e)
|
private void checkBox_useInternalPlayer_CheckedChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
lastActivity = DateTime.Now;
|
lastActivity = DateTime.Now;
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
<!-- https://go.microsoft.com/fwlink/?LinkID=208121. -->
|
<!-- https://go.microsoft.com/fwlink/?LinkID=208121. -->
|
||||||
<Project>
|
<Project>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<History>True|2025-11-10T08:34:59.9819614Z||;True|2025-11-10T09:31:52.9893994+01:00||;True|2025-11-07T07:27:09.2818809+01:00||;True|2025-10-28T07:54:43.4835993+01:00||;True|2025-10-28T07:49:48.9691140+01:00||;False|2025-10-28T07:48:40.9934972+01:00||;True|2025-10-28T07:41:40.9364570+01:00||;True|2025-10-28T07:34:30.3216200+01:00||;True|2025-10-27T07:38:02.5307378+01:00||;True|2025-10-24T12:49:33.3476720+02:00||;True|2025-10-24T12:45:56.3409114+02:00||;True|2025-10-24T12:37:06.7053780+02:00||;True|2025-10-24T12:21:52.0779529+02:00||;True|2025-10-24T11:39:34.0711190+02:00||;True|2025-10-24T11:32:06.8084304+02:00||;True|2025-10-24T10:49:19.8451151+02:00||;True|2025-10-24T10:35:58.7368296+02:00||;True|2025-09-22T09:12:21.1738434+02:00||;True|2025-09-22T08:41:28.2063145+02:00||;True|2025-09-11T09:25:26.7487573+02:00||;True|2025-09-05T10:35:16.3265491+02:00||;True|2025-08-13T07:12:45.6489499+02:00||;True|2025-08-08T07:25:38.8935816+02:00||;True|2025-08-08T07:19:07.3835648+02:00||;True|2025-08-06T07:38:46.3420158+02:00||;True|2025-07-16T07:41:34.3557961+02:00||;True|2025-07-15T11:01:48.5566218+02:00||;True|2025-07-07T14:59:37.1240379+02:00||;False|2025-07-07T14:57:39.0613209+02:00||;True|2025-07-07T06:29:53.8853096+02:00||;True|2025-07-06T23:39:21.1017631+02:00||;True|2025-07-06T23:24:37.7792733+02:00||;False|2025-07-06T23:19:52.7135594+02:00||;True|2025-07-06T05:55:51.5281444+02:00||;True|2025-07-06T05:14:26.6590895+02:00||;True|2025-07-06T05:07:43.4335057+02:00||;False|2025-07-06T05:06:42.5442365+02:00||;True|2025-06-27T09:56:34.6625992+02:00||;True|2025-06-27T09:55:33.6399545+02:00||;True|2025-06-27T09:35:44.7409289+02:00||;True|2025-06-27T09:35:11.7955472+02:00||;True|2025-06-27T09:23:44.1433728+02:00||;True|2025-06-27T09:10:34.1084041+02:00||;True|2025-06-27T09:06:49.8646149+02:00||;True|2025-06-27T08:55:00.3110860+02:00||;True|2025-06-27T08:47:18.4476580+02:00||;True|2025-06-11T14:42:56.1622930+02:00||;True|2025-06-11T12:33:26.7419370+02:00||;True|2025-06-11T07:48:58.3963584+02:00||;True|2025-06-11T07:42:53.0277862+02:00||;False|2025-06-11T07:39:31.7470335+02:00||;True|2025-06-03T19:58:59.1868907+02:00||;True|2025-06-03T14:33:55.4389500+02:00||;True|2025-06-03T14:16:34.6963918+02:00||;True|2025-06-03T13:26:58.4834917+02:00||;True|2025-06-02T19:01:22.1305699+02:00||;True|2025-06-02T18:27:48.1629252+02:00||;True|2025-06-02T18:12:01.0339452+02:00||;True|2025-04-25T14:02:07.8958669+02:00||;True|2025-04-24T07:32:32.3215936+02:00||;True|2025-04-23T14:24:27.8051379+02:00||;True|2025-04-22T07:23:33.4961515+02:00||;True|2025-04-22T07:16:30.0019927+02:00||;True|2025-04-17T07:35:19.5003910+02:00||;True|2025-04-16T07:51:44.2105982+02:00||;True|2025-04-15T17:39:22.9354819+02:00||;True|2025-04-15T13:59:38.1491035+02:00||;True|2025-04-15T13:26:09.1911007+02:00||;False|2025-04-15T13:24:05.8283613+02:00||;True|2025-04-15T12:05:53.7928484+02:00||;True|2025-04-14T11:46:19.0213400+02:00||;True|2025-04-14T11:19:57.9110025+02:00||;False|2025-04-14T11:18:49.2970157+02:00||;True|2025-04-14T10:56:19.4313583+02:00||;True|2025-04-14T10:09:57.0472222+02:00||;True|2025-04-11T09:36:58.9281719+02:00||;True|2025-04-11T07:56:15.1143584+02:00||;True|2025-04-10T08:08:20.7849097+02:00||;True|2025-04-09T12:56:06.8510589+02:00||;True|2025-04-09T12:39:21.5101756+02:00||;True|2025-04-09T12:35:02.6306664+02:00||;True|2025-04-09T07:53:00.7307516+02:00||;True|2025-04-07T15:17:24.3233000+02:00||;True|2025-04-04T18:09:18.8844877+02:00||;True|2025-04-03T12:27:18.9922316+02:00||;True|2025-04-03T09:48:50.2518754+02:00||;True|2025-03-31T13:53:07.3910797+02:00||;True|2025-03-31T12:46:18.3638787+02:00||;True|2025-03-31T11:01:06.0182900+02:00||;True|2025-03-31T10:55:30.7399322+02:00||;True|2025-03-31T10:41:08.8975919+02:00||;True|2025-03-31T10:15:29.6315309+02:00||;True|2025-03-31T08:53:20.4511304+02:00||;True|2025-03-29T14:23:34.4407251+01:00||;True|2025-03-29T13:42:06.7348581+01:00||;True|2025-03-28T18:06:37.5932036+01:00||;True|2025-03-27T13:26:13.4721799+01:00||;True|2025-03-27T11:19:53.3525657+01:00||;True|2025-03-27T10:09:53.9177515+01:00||;True|2025-03-27T07:56:40.2542279+01:00||;</History>
|
<History>True|2025-11-13T13:18:25.1199192Z||;True|2025-11-10T09:34:59.9819614+01:00||;True|2025-11-10T09:31:52.9893994+01:00||;True|2025-11-07T07:27:09.2818809+01:00||;True|2025-10-28T07:54:43.4835993+01:00||;True|2025-10-28T07:49:48.9691140+01:00||;False|2025-10-28T07:48:40.9934972+01:00||;True|2025-10-28T07:41:40.9364570+01:00||;True|2025-10-28T07:34:30.3216200+01:00||;True|2025-10-27T07:38:02.5307378+01:00||;True|2025-10-24T12:49:33.3476720+02:00||;True|2025-10-24T12:45:56.3409114+02:00||;True|2025-10-24T12:37:06.7053780+02:00||;True|2025-10-24T12:21:52.0779529+02:00||;True|2025-10-24T11:39:34.0711190+02:00||;True|2025-10-24T11:32:06.8084304+02:00||;True|2025-10-24T10:49:19.8451151+02:00||;True|2025-10-24T10:35:58.7368296+02:00||;True|2025-09-22T09:12:21.1738434+02:00||;True|2025-09-22T08:41:28.2063145+02:00||;True|2025-09-11T09:25:26.7487573+02:00||;True|2025-09-05T10:35:16.3265491+02:00||;True|2025-08-13T07:12:45.6489499+02:00||;True|2025-08-08T07:25:38.8935816+02:00||;True|2025-08-08T07:19:07.3835648+02:00||;True|2025-08-06T07:38:46.3420158+02:00||;True|2025-07-16T07:41:34.3557961+02:00||;True|2025-07-15T11:01:48.5566218+02:00||;True|2025-07-07T14:59:37.1240379+02:00||;False|2025-07-07T14:57:39.0613209+02:00||;True|2025-07-07T06:29:53.8853096+02:00||;True|2025-07-06T23:39:21.1017631+02:00||;True|2025-07-06T23:24:37.7792733+02:00||;False|2025-07-06T23:19:52.7135594+02:00||;True|2025-07-06T05:55:51.5281444+02:00||;True|2025-07-06T05:14:26.6590895+02:00||;True|2025-07-06T05:07:43.4335057+02:00||;False|2025-07-06T05:06:42.5442365+02:00||;True|2025-06-27T09:56:34.6625992+02:00||;True|2025-06-27T09:55:33.6399545+02:00||;True|2025-06-27T09:35:44.7409289+02:00||;True|2025-06-27T09:35:11.7955472+02:00||;True|2025-06-27T09:23:44.1433728+02:00||;True|2025-06-27T09:10:34.1084041+02:00||;True|2025-06-27T09:06:49.8646149+02:00||;True|2025-06-27T08:55:00.3110860+02:00||;True|2025-06-27T08:47:18.4476580+02:00||;True|2025-06-11T14:42:56.1622930+02:00||;True|2025-06-11T12:33:26.7419370+02:00||;True|2025-06-11T07:48:58.3963584+02:00||;True|2025-06-11T07:42:53.0277862+02:00||;False|2025-06-11T07:39:31.7470335+02:00||;True|2025-06-03T19:58:59.1868907+02:00||;True|2025-06-03T14:33:55.4389500+02:00||;True|2025-06-03T14:16:34.6963918+02:00||;True|2025-06-03T13:26:58.4834917+02:00||;True|2025-06-02T19:01:22.1305699+02:00||;True|2025-06-02T18:27:48.1629252+02:00||;True|2025-06-02T18:12:01.0339452+02:00||;True|2025-04-25T14:02:07.8958669+02:00||;True|2025-04-24T07:32:32.3215936+02:00||;True|2025-04-23T14:24:27.8051379+02:00||;True|2025-04-22T07:23:33.4961515+02:00||;True|2025-04-22T07:16:30.0019927+02:00||;True|2025-04-17T07:35:19.5003910+02:00||;True|2025-04-16T07:51:44.2105982+02:00||;True|2025-04-15T17:39:22.9354819+02:00||;True|2025-04-15T13:59:38.1491035+02:00||;True|2025-04-15T13:26:09.1911007+02:00||;False|2025-04-15T13:24:05.8283613+02:00||;True|2025-04-15T12:05:53.7928484+02:00||;True|2025-04-14T11:46:19.0213400+02:00||;True|2025-04-14T11:19:57.9110025+02:00||;False|2025-04-14T11:18:49.2970157+02:00||;True|2025-04-14T10:56:19.4313583+02:00||;True|2025-04-14T10:09:57.0472222+02:00||;True|2025-04-11T09:36:58.9281719+02:00||;True|2025-04-11T07:56:15.1143584+02:00||;True|2025-04-10T08:08:20.7849097+02:00||;True|2025-04-09T12:56:06.8510589+02:00||;True|2025-04-09T12:39:21.5101756+02:00||;True|2025-04-09T12:35:02.6306664+02:00||;True|2025-04-09T07:53:00.7307516+02:00||;True|2025-04-07T15:17:24.3233000+02:00||;True|2025-04-04T18:09:18.8844877+02:00||;True|2025-04-03T12:27:18.9922316+02:00||;True|2025-04-03T09:48:50.2518754+02:00||;True|2025-03-31T13:53:07.3910797+02:00||;True|2025-03-31T12:46:18.3638787+02:00||;True|2025-03-31T11:01:06.0182900+02:00||;True|2025-03-31T10:55:30.7399322+02:00||;True|2025-03-31T10:41:08.8975919+02:00||;True|2025-03-31T10:15:29.6315309+02:00||;True|2025-03-31T08:53:20.4511304+02:00||;True|2025-03-29T14:23:34.4407251+01:00||;True|2025-03-29T13:42:06.7348581+01:00||;True|2025-03-28T18:06:37.5932036+01:00||;True|2025-03-27T13:26:13.4721799+01:00||;True|2025-03-27T11:19:53.3525657+01:00||;True|2025-03-27T10:09:53.9177515+01:00||;</History>
|
||||||
<LastFailureDetails />
|
<LastFailureDetails />
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
</Project>
|
</Project>
|
||||||
Binary file not shown.
@ -65,22 +65,19 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="CefSharp.Common" Version="139.0.280" />
|
<PackageReference Include="CefSharp.Common" Version="141.0.110" />
|
||||||
<PackageReference Include="CefSharp.WinForms.NETCore" Version="139.0.280" />
|
<PackageReference Include="CefSharp.WinForms.NETCore" Version="141.0.110" />
|
||||||
<PackageReference Include="chromiumembeddedframework.runtime.win-arm64" />
|
<PackageReference Include="chromiumembeddedframework.runtime.win-arm64" />
|
||||||
<PackageReference Include="chromiumembeddedframework.runtime.win-x64" />
|
<PackageReference Include="chromiumembeddedframework.runtime.win-x64" />
|
||||||
<PackageReference Include="chromiumembeddedframework.runtime.win-x86" />
|
<PackageReference Include="chromiumembeddedframework.runtime.win-x86" />
|
||||||
<PackageReference Include="FlyleafLib" Version="3.8.10" />
|
<PackageReference Include="FlyleafLib" Version="3.9.6" />
|
||||||
<PackageReference Include="Google.Protobuf" Version="3.32.0" />
|
|
||||||
<PackageReference Include="Magick.NET-Q16-AnyCPU" Version="14.8.2" />
|
|
||||||
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
|
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
|
||||||
<PackageReference Include="Microsoft.Data.Sqlite" Version="9.0.8" />
|
<PackageReference Include="Microsoft.Data.Sqlite" Version="10.0.0" />
|
||||||
<PackageReference Include="Microsoft.NETCore.Platforms" Version="7.0.4" />
|
<PackageReference Include="Microsoft.NETCore.Platforms" Version="7.0.4" />
|
||||||
<PackageReference Include="Microsoft.Toolkit.Uwp.Notifications" Version="7.1.3" />
|
<PackageReference Include="Microsoft.Toolkit.Uwp.Notifications" Version="7.1.3" />
|
||||||
<PackageReference Include="Microsoft.VisualBasic" Version="10.3.0" />
|
<PackageReference Include="Microsoft.VisualBasic" Version="10.3.0" />
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
|
||||||
<PackageReference Include="NsfwSpy" Version="3.5.0" />
|
<PackageReference Include="NsfwSpy" Version="3.5.0" />
|
||||||
<PackageReference Include="System.Drawing.Common" Version="9.0.8" />
|
<PackageReference Include="System.Drawing.Common" Version="10.0.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@ -160,15 +157,15 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Update="chromiumembeddedframework.runtime.win-arm64" Version="139.0.28" />
|
<PackageReference Update="chromiumembeddedframework.runtime.win-arm64" Version="141.0.11" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Update="chromiumembeddedframework.runtime.win-x64" Version="139.0.28" />
|
<PackageReference Update="chromiumembeddedframework.runtime.win-x64" Version="141.0.11" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Update="chromiumembeddedframework.runtime.win-x86" Version="139.0.28" />
|
<PackageReference Update="chromiumembeddedframework.runtime.win-x86" Version="141.0.11" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
Loading…
x
Reference in New Issue
Block a user