File size: 7,388 Bytes
06ba7ea
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
#!/bin/bash

# ้ขœ่‰ฒๅฎšไน‰ | Color Definitions
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# ๆ‰“ๅฐๅธฆ้ขœ่‰ฒ็š„ๆถˆๆฏ | Print colored messages
print_success() {
    echo -e "${GREEN}[โœ“]${NC} $1"
}

print_error() {
    echo -e "${RED}[โœ—]${NC} $1"
}

print_warning() {
    echo -e "${YELLOW}[!]${NC} $1"
}

print_info() {
    echo -e "${BLUE}[i]${NC} $1"
}

# ๆ‰“ๅฐๆ ‡้ข˜ | Print Title
echo ""
echo "โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—"
echo "โ•‘    Storyline ้กน็›ฎไพ่ต–ๅฎ‰่ฃ…่„šๆœฌ | Dependency Installation       โ•‘"
echo "โ•‘    ไฝฟ็”จ conda activate storyline ๆฟ€ๆดป็ŽฏๅขƒๅŽ่ฟ่กŒ                โ•‘"
echo "โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•"
echo ""

# ==========================================
# ๆญฅ้ชค 0: ๆฃ€ๆต‹ๆ“ไฝœ็ณป็ปŸ
# Step 0: Detect OS
# ==========================================
print_info "ๆฃ€ๆต‹ๆ“ไฝœ็ณป็ปŸ... | Detecting OS..."

if [[ "$OSTYPE" == "darwin"* ]]; then
    IS_MACOS=true
    IS_LINUX=false
    print_success "ๆฃ€ๆต‹ๅˆฐ MacOS ็ณป็ปŸ | MacOS detected"
elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
    IS_MACOS=false
    IS_LINUX=true
    print_success "ๆฃ€ๆต‹ๅˆฐ Linux ็ณป็ปŸ | Linux detected"
else
    print_error "ไธๆ”ฏๆŒ็š„ๆ“ไฝœ็ณป็ปŸ | Unsupported operating system: $OSTYPE"
    exit 1
fi
echo ""

# ==========================================
# ๆญฅ้ชค 1: ๆฃ€ๆŸฅ conda ็Žฏๅขƒ
# Step 1: Check conda environment
# ==========================================
echo "[1/4] ๆฃ€ๆŸฅ conda ็Žฏๅขƒ... | Checking conda environment..."

if [ -z "$CONDA_DEFAULT_ENV" ]; then
    print_error "ๆœชๆฃ€ๆต‹ๅˆฐ conda ็Žฏๅขƒ | No conda environment detected"
    echo ""
    echo "่ฏทๅ…ˆ่ฟ่กŒ: conda activate storyline"
    echo "Please run: conda activate storyline"
    exit 1
fi

if [ "$CONDA_DEFAULT_ENV" != "storyline" ]; then
    print_warning "ๅฝ“ๅ‰็Žฏๅขƒ: $CONDA_DEFAULT_ENV"
    echo ""
    read -p "ๅปบ่ฎฎไฝฟ็”จ storyline ็Žฏๅขƒ๏ผŒๆ˜ฏๅฆ็ปง็ปญ? | Continue anyway? (y/n) " -n 1 -r
    echo ""
    if [[ ! $REPLY =~ ^[Yy]$ ]]; then
        echo "่ฏท่ฟ่กŒ: conda activate storyline"
        exit 1
    fi
else
    print_success "ๅฝ“ๅ‰็Žฏๅขƒ: storyline"
fi

# ๆ˜พ็คบ Python ไฟกๆฏ
print_info "Python ไฟกๆฏ | Python Info:"
echo "  ็‰ˆๆœฌ | Version: $(python --version 2>&1)"
echo "  ่ทฏๅพ„ | Path: $(which python)"
echo ""

# ==========================================
# ๆญฅ้ชค 2: ๆฃ€ๆŸฅ FFmpeg
# Step 2: Check FFmpeg
# ==========================================
echo "[2/4] ๆฃ€ๆŸฅ FFmpeg... | Checking FFmpeg..."

if ! command -v ffmpeg &> /dev/null; then
    print_warning "ๆœชๆฃ€ๆต‹ๅˆฐ FFmpeg | FFmpeg not detected"
    echo ""
    
    read -p "ๆ˜ฏๅฆๅฎ‰่ฃ… FFmpeg? | Install FFmpeg? (y/n) " -n 1 -r
    echo ""
    
    if [[ $REPLY =~ ^[Yy]$ ]]; then
        print_info "ๆญฃๅœจๅฎ‰่ฃ… FFmpeg... | Installing FFmpeg..."
        
        if [ "$IS_MACOS" = true ]; then
            if ! command -v brew &> /dev/null; then
                print_error "้œ€่ฆ Homebrew ๆฅๅฎ‰่ฃ… FFmpeg | Homebrew required to install FFmpeg"
                echo "่ฏท่ฎฟ้—ฎ: https://brew.sh"
                exit 1
            fi
            brew install ffmpeg
        elif [ "$IS_LINUX" = true ]; then
            if command -v apt-get &> /dev/null; then
                sudo apt-get update
                sudo apt-get install -y ffmpeg
            elif command -v yum &> /dev/null; then
                sudo yum install -y epel-release
                sudo yum install -y ffmpeg ffmpeg-devel
            else
                print_error "ๆ— ๆณ•่ฏ†ๅˆซ็š„ๅŒ…็ฎก็†ๅ™จ | Unrecognized package manager"
                exit 1
            fi
        fi
        
        if [ $? -eq 0 ]; then
            print_success "FFmpeg ๅฎ‰่ฃ…ๆˆๅŠŸ | FFmpeg installed successfully"
        else
            print_error "FFmpeg ๅฎ‰่ฃ…ๅคฑ่ดฅ | FFmpeg installation failed"
            exit 1
        fi
    else
        print_warning "่ทณ่ฟ‡ FFmpeg ๅฎ‰่ฃ…๏ผˆๅฏ่ƒฝๅฝฑๅ“้Ÿณ่ง†้ข‘ๅค„็†ๅŠŸ่ƒฝ๏ผ‰"
        print_warning "Skipping FFmpeg (may affect audio/video features)"
    fi
else
    print_success "FFmpeg ๅทฒๅฎ‰่ฃ… | FFmpeg installed"
    echo "  ็‰ˆๆœฌ | Version: $(ffmpeg -version 2>&1 | head -n 1)"
fi
echo ""

# ==========================================
# ๆญฅ้ชค 3: ไธ‹่ฝฝ้กน็›ฎ่ต„ๆบ
# Step 3: Download project resources
# ==========================================
echo "[3/4] ไธ‹่ฝฝ้กน็›ฎ่ต„ๆบ... | Downloading project resources..."

if [ -f "download.sh" ]; then
    print_info "ๆ‰ง่กŒ่ต„ๆบไธ‹่ฝฝ่„šๆœฌ... | Running download script..."
    chmod +x download.sh
    ./download.sh
    
    if [ $? -eq 0 ]; then
        print_success "่ต„ๆบไธ‹่ฝฝๅฎŒๆˆ | Resources downloaded successfully"
    else
        print_error "่ต„ๆบไธ‹่ฝฝๅคฑ่ดฅ | Resource download failed"
        exit 1
    fi
else
    print_warning "ๆœชๆ‰พๅˆฐ download.sh | download.sh not found"
    echo "ๅฆ‚้œ€ไธ‹่ฝฝๆจกๅž‹็ญ‰่ต„ๆบ๏ผŒ่ฏทๆ‰‹ๅŠจๆ‰ง่กŒ download.sh"
    echo "To download models, please run download.sh manually"
fi
echo ""

# ==========================================
# ๆญฅ้ชค 4: ๅฎ‰่ฃ… Python ไพ่ต–
# Step 4: Install Python dependencies
# ==========================================
echo "[4/4] ๅฎ‰่ฃ… Python ไพ่ต–... | Installing Python dependencies..."

if [ ! -f "requirements.txt" ]; then
    print_error "ๆœชๆ‰พๅˆฐ requirements.txt | requirements.txt not found"
    exit 1
fi

print_info "ๆญฃๅœจๅฎ‰่ฃ…ไพ่ต–ๅŒ…๏ผŒ่ฏท็จๅ€™... | Installing packages, please wait..."
echo ""

# ๅฎ‰่ฃ…ไพ่ต–
print_info "ๅฎ‰่ฃ…ไพ่ต–ๅŒ…... | Installing dependencies..."

# ๅฐ่ฏ•ไฝฟ็”จๆธ…ๅŽ้•œๅƒๆบ
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

if [ $? -ne 0 ]; then
    print_warning "ๆธ…ๅŽ้•œๅƒๅฎ‰่ฃ…ๅคฑ่ดฅ๏ผŒๅฐ่ฏ•ไฝฟ็”จ้ป˜่ฎคๆบ... | Tsinghua mirror failed, trying default..."
    pip install -r requirements.txt
    
    if [ $? -ne 0 ]; then
        print_error "ไพ่ต–ๅฎ‰่ฃ…ๅคฑ่ดฅ | Dependency installation failed"
        echo ""
        echo "่ฏทๅฐ่ฏ•ๆ‰‹ๅŠจๅฎ‰่ฃ…: pip install -r requirements.txt"
        exit 1
    fi
fi

print_success "ไพ่ต–ๅฎ‰่ฃ…ๅฎŒๆˆ | Dependencies installed successfully"
echo ""

# ==========================================
# ๅฎ‰่ฃ…ๅฎŒๆˆ | Installation Complete
# ==========================================
echo ""
echo "โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—"
echo "โ•‘          ๅฎ‰่ฃ…ๆˆๅŠŸ๏ผ| Installation Successful!                 โ•‘"
echo "โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•"
echo ""

print_info "็Žฏๅขƒไฟกๆฏ | Environment Info:"
echo "  Conda ็Žฏๅขƒ | Conda Env: $CONDA_DEFAULT_ENV"
echo "  Python: $(python --version 2>&1)"
command -v ffmpeg &> /dev/null && echo "  FFmpeg: $(ffmpeg -version 2>&1 | head -n 1 | cut -d' ' -f3)"
echo ""

print_success "็Žฐๅœจๅฏไปฅ่ฟ่กŒ้กน็›ฎไบ†๏ผ| You can now run the project!"