-
Notifications
You must be signed in to change notification settings - Fork 15
160 lines (142 loc) · 5.17 KB
/
qqwry.yml
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
name: qqwry
on:
workflow_dispatch:
schedule:
- cron: '10 2,9,15 * * *'
push:
branches:
- main
paths-ignore:
- 'README.md'
env:
innoextract_version: 1.9
arch: amd64
permissions:
contents: write
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up python
id: setup-python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Caching dependencies
uses: actions/cache@v3
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Install dependencies
run: |
pip install requests
pip install bs4
- name: Get download link from WeChat tweet
run: |
link=$(python qqwry.py)
if [ -z "$link" ]; then
echo "No link found, exiting"
exit 0
fi
echo "LINK=${link}" >> $GITHUB_ENV
- name: Use link to download newest Zip with retry
run: |
link=${{ env.LINK }}
mkdir -p Downloads
cd Downloads
retries=0
max_retries=3
while [ $retries -lt $max_retries ]; do
wget --no-check-certificate --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36" $link
if [ $? -eq 0 ]; then
break
fi
retries=$((retries+1))
sleep 10
done
- name: Cache innoextract
uses: actions/cache@v3
id: cache-innoextract
with:
path: innoextract
key: ${{ runner.os }}-innoextract-${{ env.innoextract_version }}
- name: Download innoextract
if: steps.cache-innoextract.outputs.cache-hit != 'true'
run: |
wget https://github.com/dscharrer/innoextract/releases/download/${{ env.innoextract_version }}/innoextract-${{ env.innoextract_version }}-linux.tar.xz
tar -xvf innoextract-${{ env.innoextract_version }}-linux.tar.xz innoextract-${{ env.innoextract_version }}-linux/bin/${{ env.arch }}/innoextract --strip-components 3
- name: Get qqwry.dat
id: dat_date
shell: pwsh
run: |
$zip = (Get-ChildItem Downloads\*.zip)[0].FullName
$filename = (Get-ChildItem Downloads\*.zip)[0].Name
$name = $filename.Substring($filename.IndexOf('-') + 1 , $filename.length - $filename.IndexOf('-') - 5)
echo "dat_date=$name" | Out-File -FilePath $env:GITHUB_ENV
7z e -y $zip setup.exe
./innoextract setup.exe -I qqwry.dat
- name: Check if tag exists
run: |
git fetch --tags
echo "Value of dat_date: ${{ env.dat_date }}"
if git rev-parse ${{ env.dat_date }} >/dev/null 2>&1; then
echo "Tag already exists, skipping create release"
echo "TAG_EXISTS=true" >> $GITHUB_ENV
fi
- name: Calculate file hash value
id: calculate_hash_value
run: |
echo "FILE_HASH=$(sha256sum app/qqwry.dat | awk '{ print $1 }')" >> $GITHUB_ENV
- name: Create Release
id: create_release
uses: ncipollo/release-action@v1
if: env.TAG_EXISTS != 'true'
with:
commit: ${{ env.GITHUB_SHA }}
tag: ${{ env.dat_date }}
token: ${{ secrets.QQWRY }}
artifacts: app/qqwry.dat
body: |
#### qqwry.dat
| Name | Value |
| :----------------: | :------------------------: |
| Zip Download link: | ${{ env.LINK }} |
| File hash: | qqwry.dat: ${{ env.FILE_HASH }} |
<p align="right"><code>Version: ${{ env.dat_date }} </code></p>
- name: Calculate repository hash value
id: calculate_repo_hash_value
run: |
echo "REPO_HASH=$(git show main:qqwry.dat | sha256sum | awk '{ print $1 }')" >> $GITHUB_ENV
- name: Check for changes in qqwry.dat
id: check
run: |
if [ ! -f qqwry.dat ]; then
echo "File does not exist"
echo "RUN_NEXT_STEP=true" >> $GITHUB_ENV
else
#比较上面的两个hash值是否相等
if [ "${{ env.FILE_HASH }}" != "${{ env.REPO_HASH }}" ]; then
echo "File has changed"
echo "RUN_NEXT_STEP=true" >> $GITHUB_ENV
else
echo "File has not changed"
fi
fi
- name: Commit qqwry.dat
if: env.RUN_NEXT_STEP == 'true'
env:
GIT_USERNAME: ${{ secrets.GIT_USERNAME }}
GIT_EMAIL: ${{ secrets.GIT_EMAIL }}
run: |
git config --global user.name $GIT_USERNAME
git config --global user.email $GIT_EMAIL
if ! git status -s | grep qqwry.dat --quiet; then
mv app/qqwry.dat qqwry.dat
git add qqwry.dat
git commit -m "Update qqwry.dat in ${{ env.dat_date }}"
git push
fi