Browse Source

添加 Dockerfile,注意 cgo 的问题

Signed-off-by: 716 <[email protected]>
716 4 years ago
parent
commit
6f78c1e351
7 changed files with 95 additions and 3 deletions
  1. 1 0
      .gitignore
  2. 32 0
      Dockerfile
  3. 45 2
      README.md
  4. 1 1
      go.mod
  5. 7 0
      main.go
  6. 8 0
      model/util.go
  7. 1 0
      videofolder/readme.txt

+ 1 - 0
.gitignore

@@ -8,3 +8,4 @@
 /model/result.png
 /sub_supplier/xunlei/Logs/*.log
 /config.yaml
+/ChineseSubFinder.exe

+ 32 - 0
Dockerfile

@@ -0,0 +1,32 @@
+FROM golang:1.15-buster AS builder
+
+LABEL stage=gobuilder
+
+ENV CGO_ENABLED 1
+ENV GO111MODULE=on
+ENV GOOS linux
+ENV GOPROXY https://goproxy.cn,direct
+
+# 切换工作目录
+WORKDIR /homelab/buildspace
+
+COPY . .
+# 执行编译,-o 指定保存位置和程序编译名称
+RUN go build -ldflags="-s -w" -o /app/chinesesubfinder
+
+FROM alpine:latest
+
+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
+# 主程序
+COPY --from=builder /app/chinesesubfinder /app/chinesesubfinder
+# 配置文件
+COPY --from=builder /homelab/buildspace/config.yaml.sample /app/config.yaml
+RUN chmod -R 777 /app
+EXPOSE 1200
+
+ENTRYPOINT ["/app/chinesesubfinder"]

+ 45 - 2
README.md

@@ -21,7 +21,14 @@
 
 ### 优先级
 
-优先级别暂定 :zimuku -> subhd -> xunlei -> shooter
+网站字幕优先级别暂定 :zimuku -> subhd -> xunlei -> shooter
+
+### 支持的视频格式
+
+* mp4
+* mkv
+* rmvb
+* iso
 
 ### 字幕格式优先级
 
@@ -37,7 +44,39 @@
 
 注意,使用本程序前,**强烈推荐**使用 emby 或者 tinyMediaManager 对你的视频进行基础的削刮,整理好视频的命名。
 
-### 设置本程序的配置文件
+### 使用 docker-compose 部署
+
+编写以下的配置文件,注意 docker-compose 文件需要与本程序的 config.yaml 配套,特别是 MovieFolder 这个。
+
+```yaml
+version: "3"
+services:
+  mikanarr:
+    image: allanpk716/chinesesubfinder:latest
+    volumes:
+      - /volume1/docker/chinesesubfinder/config.yaml:/app/config.yaml
+      - /volume1/Video/电影/机动战士高达 剧场版Ⅰ:高达站立在大地上 (1981):/app/videofolder
+    environment:
+      TZ: Asia/Shanghai
+    restart: unless-stopped
+```
+
+然后把 config.yaml.sample 复制一份,重命名为 config.yaml,内容如下(每个配置啥意思见《配置文件解析》):
+
+```yaml
+UseProxy: false
+HttpProxy: http://127.0.0.1:10809
+EveryTime: 6h
+DebugMode: false
+SaveMultiSub: false
+MovieFolder: /app/videofolder
+```
+
+### 直接运行
+
+
+
+### 配置文件解析
 
 把 config.yaml.sample 复制一份,重命名为 config.yaml,内容如下:
 
@@ -83,6 +122,10 @@ MovieFolder: X:\电影
 
 ![04](DesignFile/pics/04.png)
 
+## 版本
+
+* 完成初版,仅仅支持电影的字幕下载 -- 2021年6月13日
+
 ## TODO
 
 * 完成初版自动下载

+ 1 - 1
go.mod

@@ -17,7 +17,7 @@ require (
 	github.com/middelink/go-parse-torrent-name v0.0.0-20190301154245-3ff4efacd4c4
 	github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646
 	github.com/pkg/errors v0.9.1 // indirect
-	github.com/robfig/cron/v3 v3.0.0 // indirect
+	github.com/robfig/cron/v3 v3.0.0
 	github.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca
 	github.com/sirupsen/logrus v1.8.1
 	github.com/spf13/viper v1.7.1

+ 7 - 0
main.go

@@ -37,6 +37,13 @@ func main() {
 	if config.UseProxy == false {
 		httpProxy = ""
 	}
+	// 判断文件夹是否存在
+	if model.IsDir(config.MovieFolder) == false {
+		log.Errorln("MovieFolder not found")
+		return
+	}
+	log.Infoln("MovieFolder:", config.MovieFolder)
+
 	// 下载实例
 	downloader := NewDownloader(common.ReqParam{
 		HttpProxy: httpProxy,

+ 8 - 0
model/util.go

@@ -164,6 +164,14 @@ func CopyFile(dstName, srcName string) (written int64, err error) {
 	return io.Copy(dst, src)
 }
 
+func IsDir(path string) bool {
+	s, err := os.Stat(path)
+	if err != nil {
+		return false
+	}
+	return s.IsDir()
+}
+
 var (
 	defDebugFolder = ""
 	defTmpFolder = ""

+ 1 - 0
videofolder/readme.txt

@@ -0,0 +1 @@
+just a file