chore: remove scheduled refresh tasks

This commit is contained in:
cxfksword
2025-05-10 10:46:07 +08:00
parent 68cc0907f1
commit 647e583add
2 changed files with 0 additions and 153 deletions

View File

@@ -1,151 +0,0 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Jellyfin.Data.Enums;
using Jellyfin.Plugin.Danmu.Model;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Entities.Movies;
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Model.Tasks;
using MediaBrowser.Model.Entities;
using Microsoft.Extensions.Logging;
using Jellyfin.Plugin.Danmu.Core.Extensions;
using Jellyfin.Plugin.Danmu.Scrapers;
using System.Collections.ObjectModel;
namespace Jellyfin.Plugin.Danmu.ScheduledTasks
{
public class RefreshDanmuTask : IScheduledTask
{
private readonly ILibraryManager _libraryManager;
private readonly ScraperManager _scraperManager;
private readonly ILogger _logger;
private readonly LibraryManagerEventsHelper _libraryManagerEventsHelper;
public string Key => $"{Plugin.Instance.Name}RefreshDanmu";
public string Name => "更新弹幕文件";
public string Description => $"根据视频元数据下载最新的弹幕文件。";
public string Category => Plugin.Instance.Name;
/// <summary>
/// Initializes a new instance of the <see cref="RefreshDanmuTask"/> class.
/// </summary>
/// <param name="loggerFactory">Instance of the <see cref="ILoggerFactory"/> interface.</param>
/// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
public RefreshDanmuTask(ILoggerFactory loggerFactory, ILibraryManager libraryManager, LibraryManagerEventsHelper libraryManagerEventsHelper, ScraperManager scraperManager)
{
_logger = loggerFactory.CreateLogger<RefreshDanmuTask>();
_libraryManager = libraryManager;
_scraperManager = scraperManager;
_libraryManagerEventsHelper = libraryManagerEventsHelper;
}
public IEnumerable<TaskTriggerInfo> GetDefaultTriggers()
{
return new List<TaskTriggerInfo>();
// yield return new TaskTriggerInfo
// {
// Type = TaskTriggerInfo.TriggerWeekly,
// DayOfWeek = DayOfWeek.Monday,
// TimeOfDayTicks = TimeSpan.FromHours(4).Ticks
// };
}
public async Task ExecuteAsync(IProgress<double> progress, CancellationToken cancellationToken)
{
await Task.Yield();
progress?.Report(0);
var scrapers = this._scraperManager.All();
var items = _libraryManager.GetItemList(new InternalItemsQuery
{
// MediaTypes = new[] { MediaType.Video },
HasAnyProviderId = GetScraperFilter(scrapers),
IncludeItemTypes = new[] { BaseItemKind.Movie, BaseItemKind.Season }
}).ToList();
_logger.LogInformation("Refresh danmu for {0} videos.", items.Count);
var successCount = 0;
var failCount = 0;
foreach (var (item, idx) in items.WithIndex())
{
cancellationToken.ThrowIfCancellationRequested();
progress?.Report((double)idx / items.Count * 100);
try
{
// 没epid元数据的不处理
if (!this.HasAnyScraperProviderId(scrapers, item))
{
successCount++;
continue;
}
// item所在的媒体库不启用弹幕插件忽略处理
if (_libraryManagerEventsHelper.IsIgnoreItem(item))
{
continue;
}
// 推送下载最新的xml (season刷新会同时刷新episode所以不需要再推送episode而且season是bv号的只能通过season来刷新)
switch (item)
{
case Movie:
await _libraryManagerEventsHelper.ProcessQueuedMovieEvents(new List<LibraryEvent>() { new LibraryEvent { Item = item, EventType = EventType.Update } }, EventType.Update).ConfigureAwait(false);
break;
case Season:
await _libraryManagerEventsHelper.ProcessQueuedSeasonEvents(new List<LibraryEvent>() { new LibraryEvent { Item = item, EventType = EventType.Update } }, EventType.Update).ConfigureAwait(false);
break;
}
successCount++;
}
catch (Exception ex)
{
_logger.LogError(ex, "Refresh danmu failed for video {0}: {1}", item.Name, ex.Message);
failCount++;
}
}
progress?.Report(100);
_logger.LogInformation("Exectue task completed. success: {0} fail: {1}", successCount, failCount);
}
private bool HasAnyScraperProviderId(ReadOnlyCollection<AbstractScraper> scrapers, BaseItem item)
{
foreach (var scraper in scrapers)
{
var providerVal = item.GetProviderId(scraper.ProviderId);
if (!string.IsNullOrEmpty(providerVal))
{
return true;
}
}
return false;
}
private Dictionary<string, string> GetScraperFilter(ReadOnlyCollection<AbstractScraper> scrapers)
{
var filter = new Dictionary<string, string>();
foreach (var scraper in scrapers)
{
filter.Add(scraper.ProviderId, string.Empty);
}
return filter;
}
}
}

View File

@@ -10,7 +10,6 @@ jellyfin弹幕自动下载插件已支持的弹幕来源b站弹弹play
* 自动下载xml格式弹幕
* 生成ass格式弹幕
* 可配置定时更新
* 支持api访问弹幕
![logo](doc/logo.png)
@@ -38,7 +37,6 @@ jellyfin弹幕自动下载插件已支持的弹幕来源b站弹弹play
4. 假如弹幕匹配错误,请在电影或剧集中使用**修改字幕**功能搜索修正
5. 对于电视剧或动画,需要保证每季视频集数一致,并正确填写集号,这样每季视频的弹幕才会自动获取
6. 同时生成ass弹幕需要在插件配置中打开默认是关闭的
7. 定时更新需要自己到计划任务中添加定时时间,默认手工执行更新
> B站电影或季元数据也支持手动指定BV/AV号来匹配UP主上传的视频弹幕。多P视频和剧集是按顺序一一对应匹配的所以保证jellyfin中剧集有正确的集号很重要