Skip to content
This repository has been archived by the owner on Dec 4, 2023. It is now read-only.

Commit

Permalink
20220209 重构
Browse files Browse the repository at this point in the history
  • Loading branch information
VergilGao committed Feb 9, 2022
1 parent b1415f7 commit 6909e82
Show file tree
Hide file tree
Showing 9 changed files with 188 additions and 115 deletions.
8 changes: 5 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ on:
push:
tags:
- v*
workflow_dispatch:
inputs:
build:
description: '构建并上传镜像'

jobs:
build:
Expand Down Expand Up @@ -35,13 +39,11 @@ jobs:
with:
context: .
file: ./Dockerfile
platforms: linux/amd64,linux/arm64
platforms: linux/amd64
push: true
tags: |
vergilgao/mdc:${{ env.MDC_VERSION }}
vergilgao/mdc:latest
vergilgao/avdc:${{ env.MDC_VERSION }}
vergilgao/avdc:latest
build-args: |
MDC_VERSION=${{ env.MDC_VERSION }}
BUILD_DATE=${{ env.BUILD_DATE }}
Expand Down
6 changes: 4 additions & 2 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ jobs:
run: |
sudo groupadd -g 1024 avdc
sudo useradd -u 1024 avdc -g avdc
sudo chown -R 1024:1024 Test
- name: Build the test image
run: |
Expand All @@ -43,10 +42,13 @@ jobs:
- name: Run the Test
if: success()
run: |
mkdir test
dd if=/dev/zero of="./test/MIFD-046.mp4" bs=250MB count=1
dd if=/dev/zero of="./test/SVDVD-471.mp4.mp4" bs=250MB count=1
docker run \
-e SUCCESS_OUTPUT="test_output" \
-e DEBUG=1 \
-v ${PWD}/Test:/app/data \
-v ${PWD}/test:/data \
vergilgao/avdc:test
find . -name MIFD-046.mp4
find . -name SVDVD-471.mp4
82 changes: 57 additions & 25 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,33 +1,65 @@
FROM python:3.8-slim
LABEL maintainer="VergilGao"
FROM python:3.8-alpine as build-stage

# 软件包版本号
ARG MDC_VERSION
ARG PYINSTALLER_TAG
ENV PYINSTALLER_TAG ${PYINSTALLER_TAG:-"v4.8"}

# Official Python base image is needed or some applications will segfault.
# PyInstaller needs zlib-dev, gcc, libc-dev, and musl-dev
RUN apk --update --no-cache add \
zlib-dev \
musl-dev \
libc-dev \
libffi-dev \
gcc \
g++ \
git \
pwgen \
jpeg-dev \
# Pillow depenencies
freetype-dev \
lcms2-dev \
openjpeg-dev \
tiff-dev \
tk-dev \
tcl-dev \
# mdc builder depenencies
libxml2-dev \
libxslt-dev && \
pip install --upgrade pip

RUN git clone https://github.com/python-pillow/Pillow.git /Pillow
RUN pip install virtualenv && virtualenv /vpy && source /vpy/bin/activate && pip install nose

# Build bootloader for alpine
RUN git clone --depth 1 --single-branch --branch ${PYINSTALLER_TAG} https://github.com/pyinstaller/pyinstaller.git /tmp/pyinstaller \
&& cd /tmp/pyinstaller/bootloader \
&& CFLAGS="-Wno-stringop-overflow -Wno-stringop-truncation" python ./waf configure --no-lsb all \
&& pip install .. \
&& rm -Rf /tmp/pyinstaller

ADD ./root /pyinstaller
RUN chmod a+x /pyinstaller/*

RUN git clone --depth=1 -b 6.0.1 https://github.com/yoshiko2/Movie_Data_Capture.git /tmp/src
RUN cd /tmp/src && pip install -r requirements.txt

RUN \
apt-get update && \
apt-get install -y wget ca-certificates && \
mkdir build && \
cd build && \
wget -O - https://github.com/yoshiko2/Movie_Data_Capture/archive/${MDC_VERSION}.tar.gz | tar xz && \
mv Movie_Data_Capture-${MDC_VERSION} /app && \
cd .. && \
rm -rf build && \
cd /app && \
sed -i '/pyinstaller/d' requirements.txt && \
cat requirements.txt && \
pip install --no-cache-dir -r requirements.txt && \
apt-get purge -y wget

VOLUME /app/data
WORKDIR /app
cd /tmp/src && \
/pyinstaller/pyinstaller.sh \
--onefile Movie_Data_Capture.py \
--hidden-import ADC_function.py \
--hidden-import core.py \
--add-data "Img:Img" \
--add-data "$(python -c 'import cloudscraper as _; print(_.__path__[0])' | tail -n 1):cloudscraper" \
--add-data "$(python -c 'import opencc as _; print(_.__path__[0])' | tail -n 1):opencc"

COPY docker-entrypoint.sh docker-entrypoint.sh
FROM vergilgao/alpine
RUN apk --update --no-cache add \
libxcb

# 镜像版本号
ARG BUILD_DATE
LABEL build_version="catfight360.com mdc-version:- ${MDC_VERSION} build-date:- ${BUILD_DATE}"
COPY --from=build-stage /tmp/src/dist/Movie_Data_Capture /app
COPY docker-entrypoint.sh docker-entrypoint.sh

RUN chmod +x docker-entrypoint.sh

ENTRYPOINT ["./docker-entrypoint.sh"]
ENTRYPOINT ["/docker-entrypoint.sh"]
136 changes: 76 additions & 60 deletions README.md

Large diffs are not rendered by default.

1 change: 0 additions & 1 deletion Test/MIFD-046.mp4

This file was deleted.

1 change: 0 additions & 1 deletion Test/SVDVD-471.mp4

This file was deleted.

46 changes: 23 additions & 23 deletions docker-entrypoint.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#! /bin/bash
set -e

MAIN_MODE=${MAIN_MODE:-"1"}
SOURCE_FOLDER=${SOURCE_FOLDER:-"./"}
Expand Down Expand Up @@ -43,13 +42,13 @@ CC_CONVERT_MODE=${CC_CONVERT_MODE:-"1"}
CC_CONVERT_VARS=${CC_CONVERT_VARS:-"outline,series,studio,tag,title"}
JAVDB_SITES=${JAVDB_SITES:-"33,34"}

cd /app
cat>config.ini<<EOF
mk_config() {
cat>/root/mdc.ini<<EOF
[common]
main_mode=${MAIN_MODE}
source_folder=${SOURCE_FOLDER}
failed_output_folder=data/${FAILED_OUTPUT}
success_output_folder=data/${SUCCESS_OUTPUT}
failed_output_folder=${FAILED_OUTPUT}
success_output_folder=${SUCCESS_OUTPUT}
soft_link=${SOFT_LINK}
failed_move=${FAILED_MOVE}
auto_exit=1
Expand All @@ -62,63 +61,49 @@ stop_counter=${STOP_COUNTER}
ignore_failed_list=${IGNORE_FAILED_LIST}
download_only_missing_images=${DOWNLOAD_ONLY_MISSING_IMAGES}
mapping_table_validity=${MAPPING_TABLE_VALIDITY}
[proxy]
switch=${USE_PROXY}
type=${PROXY_TYPE}
proxy=${PROXY_URI}
timeout=${TIMEOUT}
retry=${RETRY}
cacert_file=${CACERT_FILE}
[Name_Rule]
location_rule=${LOCATION_RULE}
naming_rule=${NAMING_RULE}
max_title_len=${MAX_TITLE_LEN}
[update]
update_check=0
[priority]
website=${PRIORITY_WEBSITE}
[escape]
literals=${ESCAPE_LITERALS}
folders=${ESCAPE_FOLDERS}
[debug_mode]
switch=${DEBUG}
[transalte]
switch=0
values=title,outline
; 预告片
[trailer]
switch=0
; 用来确定是否是无码
[uncensored]
uncensored_prefix=S2M,BT,LAF,SMD
[media]
; 影片后缀
media_type=.mp4,.avi,.rmvb,.wmv,.mov,.mkv,.flv,.ts,.webm,.iso
; 字幕后缀
sub_type=.smi,.srt,.idx,.sub,.sup,.psb,.ssa,.ass,.txt,.usf,.xss,.ssf,.rt,.lrc,.sbv,.vtt,.ttml
; 水印
[watermark]
switch=${WATERMARK}
water=${WATERMARK_POSITION}
; 左上 0, 右上 1, 右下 2, 左下 3
; 剧照
[extrafanart]
switch=${EXTRAFANART}
extrafanart_folder=${EXTRAFANART_FOLDER}
; 剧情简介
[storyline]
switch=${STORYLINE_SWITCH}
Expand All @@ -129,15 +114,30 @@ uncensored_site=${STORYLINE_UNCENSORED_SITE}
run_mode=${STORYLINE_RUN_MODE}
; show_result剧情简介调试信息 0关闭 1简略 2详细(详细部分不记入日志),剧情简介失效时可打开2查看原因
show_result=${STORYLINE_SHOW_RESULT}
; 繁简转换 繁简转换模式mode=0:不转换 1:繁转简 2:简转繁
[cc_convert]
mode=${CC_CONVERT_MODE}
vars=${CC_CONVERT_VARS}
[javdb]
sites=${JAVDB_SITES}
EOF
}

run_mdc() {
cd /data
s6-setuidgid alpha \
/app/Movie_Data_Capture
}

PUID=${PUID:-666}
PGID=${PGID:-666}

groupmod -o -g "$PGID" alpha
usermod -o -u "$PUID" alpha


exec python Movie_Data_Capture.py
mk_config
chown -R alpha:alpha /root
chown alpha:alpha /app
chown -R alpha:alpha /data
run_mdc
13 changes: 13 additions & 0 deletions root/ldd
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#!/bin/sh

# From http://wiki.musl-libc.org/wiki/FAQ#Q:_where_is_ldd_.3F
#
# Musl's dynlinker comes with ldd functionality built in. just create a
# symlink from ld-musl-$ARCH.so to /bin/ldd. If the dynlinker was started
# as "ldd", it will detect that and print the appropriate DSO information.
#
# Instead, this string replaced "ldd" with the package so that pyinstaller
# can find the actual lib.
exec /usr/bin/ldd "$@" | \
sed -r 's/([^[:space:]]+) => ldd/\1 => \/lib\/\1/g' | \
sed -r 's/ldd \(.*\)//g'
10 changes: 10 additions & 0 deletions root/pyinstaller.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#!/bin/sh
# Simple wrapper around pyinstaller

set -e

# Use the hacked ldd to fix libc.musl-x86_64.so.1 location
PATH="/pyinstaller:$PATH"

# Exclude pycrypto and PyInstaller from built packages
exec pyinstaller "$@"

0 comments on commit 6909e82

Please sign in to comment.