Browse Source

Merge branch 'master' into add_series_suport

# Conflicts:
#	.gitignore

Signed-off-by: 716 <[email protected]>
716 4 years ago
parent
commit
3dd3ad7c67
7 changed files with 38 additions and 39 deletions
  1. 26 4
      Dockerfile
  2. 7 13
      README.md
  3. 0 2
      common/config.go
  4. 0 4
      common/reqParam.go
  5. 0 1
      config.yaml.sample
  6. 5 13
      downloader.go
  7. 0 2
      main.go

+ 26 - 4
Dockerfile

@@ -14,11 +14,33 @@ COPY . .
 # 执行编译,-o 指定保存位置和程序编译名称
 RUN go build -ldflags="-s -w" -o /app/chinesesubfinder
 
-FROM alpine:latest
+FROM ubuntu:bionic
+
+RUN ln -s /root/.cache/rod/chromium-869685/chrome-linux/chrome /usr/bin/chrome && \
+    sed -i "s@http://deb.debian.org@http://mirrors.aliyun.com@g" /etc/apt/sources.list && rm -Rf /var/lib/apt/lists/* && \
+    apt-get update && \
+    apt-get install --no-install-recommends -y \
+    # C、C++ 支持库
+    libgcc-6-dev libstdc++6 \
+    # chromium dependencies
+    libnss3 \
+    libxss1 \
+    libasound2 \
+    libxtst6 \
+    libgtk-3-0 \
+    libgbm1 \
+    ca-certificates \
+    # fonts
+    fonts-liberation fonts-noto-color-emoji fonts-noto-cjk \
+    # timezone
+    tzdata \
+    # processs reaper
+    dumb-init \
+    # headful mode support, for example: $ xvfb-run chromium-browser --remote-debugging-port=9222
+    xvfb \
+    # cleanup
+    && rm -rf /var/lib/apt/lists/*
 
-RUN set -eux && sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories \
-    && apk update --no-cache \
-    && apk add --no-cache ca-certificates tzdata libc6-compat libgcc libstdc++
 ENV TZ Asia/Shanghai
 
 WORKDIR /app

+ 7 - 13
README.md

@@ -12,6 +12,11 @@
 
 ## 功能
 
+### 支持的部署方式
+
+* docker,见 How to use
+* Windows,需要去 Release 下载,见 How to use
+
 ### 支持的视频分类
 
 |  类型  | 是否支持 |                  备注                   |
@@ -25,7 +30,7 @@
 ### 支持的字幕下载站点
 
 * zimuku
-* subhd (注意,docker 下无法下载,原因看下面)
+* subhd
 * shooter
 * xunlei
 
@@ -56,8 +61,6 @@
 
 ### 使用 docker-compose 部署
 
-> 尝试后发现,目前无法用 docker 中的 browser 去模拟点击操作,所以,docker 部署,无法支持 subhd 的字幕下载
-
 编写以下的配置文件,注意 docker-compose 文件需要与本程序的 config.yaml 配套,特别是 MovieFolder 这个。
 
 ```yaml
@@ -82,18 +85,11 @@ EveryTime: 6h
 DebugMode: false
 SaveMultiSub: false
 FoundExistSubFileThanSkip: true
-UseUnderDocker: true
 MovieFolder: /app/videofolder
 ```
 
 ### 有图形界面的操作系统下直接运行
 
-> 注意,如果你是在 Windows(类似 Llinux MAC OS 有图形化界面的系统)上使用
->
-> 那么是可以支持在 subhd 的字幕下载的
->
-> 那么 config.yaml 中的 UseUnderDocker可以设置为 fasle
-
 举例,在 Windows 下运行。
 
 ```yaml
@@ -103,7 +99,6 @@ EveryTime: 6h
 DebugMode: false
 SaveMultiSub: false
 FoundExistSubFileThanSkip: true
-UseUnderDocker: false
 MovieFolder: X:\电影
 ```
 
@@ -118,7 +113,6 @@ EveryTime: 6h
 DebugMode: false
 SaveMultiSub: false
 FoundExistSubFileThanSkip: true
-UseUnderDocker: true
 MovieFolder: X:\电影
 ```
 
@@ -128,7 +122,6 @@ MovieFolder: X:\电影
 * DebugMode,默认 false。调试模式,会在每个视频的文件夹下,新建一个  subtmp 文件夹,把所有匹配到的字幕都缓存到这个目录,没啥事可以不开。开的话就可以让你手动选择一堆的字幕啦。
 * SaveMultiSub,默认值 false。true 会在每个视频下面保存每个网站找到的最佳字幕(见下面《如何手动刷新 emby 加载字幕》,会举例)。false ,那么每个视频下面就一个最优字幕。
 * FoundExistSubFileThanSkip,默认 true。是否跳过已经下载过 sub 的视频。
-* UseUnderDocker,默认值 true。如果是 ture,那么就不行启用 subhd 的下载(原因见《使用 docker-compose 部署》)
 * MovieFolder,填写你的电影的目录(暂时只支持电影,后续会支持其他的类型)
 
 ### 如何手动刷新 emby 加载字幕
@@ -159,6 +152,7 @@ MovieFolder: X:\电影
 
 ## 版本
 
+* v0.2.0 docker 版本支持 subhd 的下载了,镜像体积也变大了 -- 2021年6月14日
 * 完成初版,仅仅支持电影的字幕下载 -- 2021年6月13日
 
 ## TODO

+ 0 - 2
common/config.go

@@ -7,7 +7,5 @@ type Config struct {
 	DebugMode bool
 	SaveMultiSub bool
 	FoundExistSubFileThanSkip bool
-	UseUnderDocker	bool	// 是否在 docker 下使用
 	MovieFolder string
-
 }

+ 0 - 4
common/reqParam.go

@@ -5,11 +5,7 @@ type ReqParam struct {
 	UserExtList []string	// 用户确认的视频后缀名支持列表
 	SaveMultiSub bool		// 存储每个网站 Top1 的字幕
 	DebugMode bool			// 调试标志位
-
 	FoundExistSubFileThanSkip bool	// 如果视频的目录下面有字幕文件了,就跳过
-	UseUnderDocker	bool	// 是否在 docker 下使用
-
-
 	HttpProxy string		// HttpClient 相关
 	UserAgent string		// HttpClient 相关
 	Referer   string		// HttpClient 相关

+ 0 - 1
config.yaml.sample

@@ -4,5 +4,4 @@ EveryTime: 6h
 DebugMode: false
 SaveMultiSub: false
 FoundExistSubFileThanSkip: true
-UseUnderDocker: true
 MovieFolder: X:\电影

+ 5 - 13
downloader.go

@@ -89,19 +89,11 @@ func (d Downloader) DownloadSub4Movie(dir string) error {
 	}
 	// 构建每个字幕站点下载者的实例
 	var subSupplierHub *sub_supplier.SubSupplierHub
-	// 因为在 docker 下 rod 的模拟浏览器点击无效,所以···
-	if d.reqParam.UseUnderDocker == true {
-		subSupplierHub = sub_supplier.NewSubSupplierHub(shooter.NewSupplier(d.reqParam),
-			xunlei.NewSupplier(d.reqParam),
-			zimuku.NewSupplier(d.reqParam),
-		)
-	} else {
-		subSupplierHub = sub_supplier.NewSubSupplierHub(shooter.NewSupplier(d.reqParam),
-			subhd.NewSupplier(d.reqParam),
-			xunlei.NewSupplier(d.reqParam),
-			zimuku.NewSupplier(d.reqParam),
-		)
-	}
+	subSupplierHub = sub_supplier.NewSubSupplierHub(shooter.NewSupplier(d.reqParam),
+		subhd.NewSupplier(d.reqParam),
+		xunlei.NewSupplier(d.reqParam),
+		zimuku.NewSupplier(d.reqParam),
+	)
 
 	// TODO 后续再改为每个视频以上的流程都是一个 channel 来做,并且需要控制在一个并发量之下(很可能没必要,毕竟要在弱鸡机器上挂机用的)
 	// 一个视频文件同时多个站点查询,阻塞完毕后,在进行下一个

+ 0 - 2
main.go

@@ -50,8 +50,6 @@ func main() {
 		DebugMode: config.DebugMode,
 		SaveMultiSub: config.SaveMultiSub,
 		FoundExistSubFileThanSkip: config.FoundExistSubFileThanSkip,
-
-		UseUnderDocker: config.UseUnderDocker,
 		})
 	//任务还没执行完,下一次执行时间到来,下一次执行就跳过不执行
 	c := cron.New(cron.WithChain(cron.SkipIfStillRunning(cron.DefaultLogger)))