Compare commits

...

2 Commits

Author SHA1 Message Date
8dcc153806 - Added show-airing-list switch
- Handled shows announced with seasons > 1
- Handled cases where status posting failed
2026-03-17 13:09:52 -04:00
41c75ee3f2 Handled case where showResult.NextEpisodeToAir was null due to non-dubbed series finishing airing before dubbed 2025-04-06 15:48:47 -04:00
3 changed files with 43 additions and 12 deletions

View File

@@ -70,4 +70,9 @@ public class TMDBCache
var db = redis.GetDatabase();
await db.StringSetAsync(key, value);
}
public async Task<String?> GetStringValue(String key)
{
var db = redis.GetDatabase();
return await db.StringGetAsync(key);
}
}

View File

@@ -5,6 +5,7 @@ using System.Security.Cryptography.X509Certificates;
using AnimeAnnouncer.Cache;
using AnimeAnnouncer.RSS;
using Mastonet;
using Mastonet.Entities;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
using TMDbLib.Client;
@@ -60,15 +61,32 @@ namespace AnimeAnnouncer
if(airingSoonList == null)
airingSoonList = new List<AiringSoonItem>();
if (args.Any(p => p == "--show-airing-list"))
{
PrintAiringList();
return;
}
nyaaIndexer.NewPost += OnNewPost;
nyaaIndexer.RssReadFinished += OnRssReadFinished;
//nyaaIndexer.IterationSleepTime = 60;
nyaaIndexer.Start(true);
nyaaIndexer.IterationSleepTime = 60;
nyaaIndexer.Start(false);
Console.WriteLine("Press enter to quit...");
Console.ReadLine();
}
private static void PrintAiringList()
{
var airingThisHalf = airingSoonList.Where(a => a.LastAirDate > DateTime.Now && a.LastAirDate.Value.Subtract(DateTime.Now) < TimeSpan.FromDays(180)).ToList();
int cnt = 1;
for(int i = 0;i < airingThisHalf.Count;i++)
{
var airing = airingThisHalf[i];
Console.WriteLine($"{cnt++}. {airing.Title} on {airing.LastAirDate:MM/dd/yyyy}{Environment.NewLine}");
}
}
static async void OnNewPost(RSS.NyaaItem item)
{
try
@@ -270,7 +288,8 @@ namespace AnimeAnnouncer
seasonOverride = finaleConfirmed = true;
_ = tmdbCache.SetCacheItem($"ShowCache-{title}", cachedShow);
if(targetSeason != null && (targetSeason.Episodes.OrderBy(e => e.Order).First().AirDate + TimeSpan.FromDays(180)) > DateTime.Now && (showResult.NextEpisodeToAir.AirDate + TimeSpan.FromDays(30)) > DateTime.Now)
if(targetSeason != null && (targetSeason.Episodes.OrderBy(e => e.Order).First().AirDate + TimeSpan.FromDays(180)) > DateTime.Now &&
((showResult.NextEpisodeToAir ?? showResult.LastEpisodeToAir).AirDate + TimeSpan.FromDays(30)) > DateTime.Now)
UpdateAiringShowList(cachedShow);
}
else
@@ -303,7 +322,10 @@ namespace AnimeAnnouncer
}
// Announce if unique
if(await tmdbCache.KeyExists($"ShowAnnounced-{supposedShowId}"))
var lastAnnouncedSeason = await tmdbCache.GetStringValue($"ShowAnnounced-{supposedShowId}");
Int32 lastSeason = 0;
if (lastAnnouncedSeason != null && Int32.TryParse(lastAnnouncedSeason, out lastSeason) &&
latestSeasonNumber <= lastSeason)
{
Console.WriteLine($"{title} has been previously announced, so avoiding announcing it again.");
return;
@@ -408,8 +430,12 @@ namespace AnimeAnnouncer
}
statusText += $"..{anidbLink}";
_ = mastodonClient.PublishStatus(statusText,
var status = await mastodonClient.PublishStatus(statusText,
Visibility.Public, mediaIds: attachment != null ? new String[] { attachment.Id } : null);
if(String.IsNullOrEmpty(status.Id))
{
Console.WriteLine("An error has occurred posting the status update");
}
}
private static async void UpdateAiringShowList(TMDBCacheItem cachedShow)

View File

@@ -70,7 +70,7 @@ namespace MassTorrentAdd
transmissionDirectoryName = System.Text.RegularExpressions.Regex.Replace(transmissionDirectoryName, @"E\d{2,3}.*?(\d{3,4}p)", " $1");
transmissionDirectoryName = System.Text.RegularExpressions.Regex.Replace(transmissionDirectoryName, @"\s\(.*?\)$", "");
transmissionDirectoryName = destinationFolder + (destinationFolder.EndsWith("/") ? String.Empty : "/") + transmissionDirectoryName.Replace(" ", ".");
Console.WriteLine("to " + transmissionDirectoryName);
Console.WriteLine($"{items.Count()} item(s) to {transmissionDirectoryName}");
Console.WriteLine("Continue?");
if(Console.ReadKey().KeyChar != 'y')