| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- package downloader_helper
- import (
- subSupplier "github.com/allanpk716/ChineseSubFinder/internal/logic/sub_supplier"
- "github.com/allanpk716/ChineseSubFinder/internal/pkg/downloader"
- "github.com/allanpk716/ChineseSubFinder/internal/pkg/global_value"
- "github.com/allanpk716/ChineseSubFinder/internal/pkg/my_folder"
- "github.com/allanpk716/ChineseSubFinder/internal/pkg/my_util"
- "github.com/allanpk716/ChineseSubFinder/internal/pkg/notify_center"
- "github.com/allanpk716/ChineseSubFinder/internal/pkg/rod_helper"
- "github.com/allanpk716/ChineseSubFinder/internal/pkg/settings"
- "github.com/allanpk716/ChineseSubFinder/internal/pkg/sub_formatter"
- "github.com/sirupsen/logrus"
- "time"
- )
- type DownloaderHelper struct {
- subSupplierHub *subSupplier.SubSupplierHub
- downloader *downloader.Downloader
- settings *settings.Settings
- logger *logrus.Logger
- }
- func NewDownloaderHelper(settings *settings.Settings, logger *logrus.Logger, _subSupplierHub *subSupplier.SubSupplierHub) *DownloaderHelper {
- return &DownloaderHelper{
- subSupplierHub: _subSupplierHub,
- settings: settings,
- logger: logger,
- }
- }
- // Start 开启任务
- func (d *DownloaderHelper) Start() error {
- var err error
- // 下载实例
- d.downloader, err = downloader.NewDownloader(d.subSupplierHub, sub_formatter.GetSubFormatter(d.settings.AdvancedSettings.SubNameFormatter), d.settings, d.logger)
- if err != nil {
- d.logger.Errorln("NewDownloader", err)
- }
- // 最后的清理和通知统计
- defer func() {
- d.logger.Infoln("Download One End...")
- notify_center.Notify.Send()
- my_util.CloseChrome(d.logger)
- rod_helper.Clear()
- }()
- d.logger.Infoln("Download One Started...")
- // 优先级最高。读取特殊文件,启用一些特殊的功能,比如 forced_scan_and_down_sub
- err = d.downloader.ReadSpeFile()
- if err != nil {
- d.logger.Errorln("ReadSpeFile", err)
- }
- // 从 csf-bk 文件还原时间轴修复前的字幕文件
- if d.downloader.NeedRestoreFixTimeLineBK == true {
- err = d.downloader.RestoreFixTimelineBK()
- if err != nil {
- d.logger.Errorln("RestoreFixTimelineBK", err)
- }
- }
- // 先进行扫描
- scanResult, err := d.downloader.ScanMovieAndSeriesWait2DownloadSub()
- if err != nil {
- d.logger.Errorln("ScanMovieAndSeriesWait2DownloadSub", err)
- return err
- }
- // 过滤出需要下载的视频有那些,并放入队列中
- err = d.downloader.FilterMovieAndSeriesNeedDownload(scanResult)
- if err != nil {
- d.logger.Errorln("FilterMovieAndSeriesNeedDownload", err)
- return err
- }
- // 开始下载,电影
- err = d.downloader.DownloadSub4Movie()
- if err != nil {
- d.logger.Errorln("DownloadSub4Movie", err)
- return err
- }
- // 开始下载,连续剧
- err = d.downloader.DownloadSub4Series()
- if err != nil {
- d.logger.Errorln("DownloadSub4Series", err)
- return err
- }
- // 刷新 Emby 的字幕,下载完毕字幕了,就统一刷新一下
- err = d.downloader.RefreshEmbySubList()
- if err != nil {
- d.logger.Errorln("RefreshEmbySubList", err)
- return err
- }
- d.logger.Infoln("Will Scan SubFixCache Folder, Clear files that are more than 7 * 24 hours old")
- // 清理多天没有使用的时间轴字幕校正缓存文件
- err = my_folder.ClearIdleSubFixCacheFolder(d.logger, global_value.DefSubFixCacheFolder(), 7*24*time.Hour)
- if err != nil {
- d.logger.Errorln("ClearIdleSubFixCacheFolder", err)
- return err
- }
- return nil
- }
- // Cancel 提前取消任务的执行
- func (d *DownloaderHelper) Cancel() {
- d.downloader.Cancel()
- }
|