1
+ #!/usr/bin/env python3
2
+ import hashlib
3
+ import json
4
+ import sys
5
+ import re
6
+ import os
7
+ import subprocess
8
+ from datetime import datetime
9
+ from urllib .request import urlopen
10
+ from urllib .error import HTTPError
11
+
12
+ def generate_manifest ():
13
+ return [{
14
+ "guid" : "9a19103f-16f7-4668-be54-9a1e7a4f7556" ,
15
+ "name" : "MetaShark" ,
16
+ "description" : "jellyfin电影元数据插件,影片信息只要从豆瓣获取,并由TMDB补充缺失的剧集数据。" ,
17
+ "overview" : "jellyfin电影元数据插件" ,
18
+ "owner" : "cxfksword" ,
19
+ "category" : "Metadata" ,
20
+ "imageUrl" : "https://github.com/cxfksword/jellyfin-plugin-metashark/raw/main/doc/logo.png" ,
21
+ "versions" : []
22
+ }]
23
+
24
+ def generate_version (filepath , version , changelog ):
25
+ return {
26
+ 'version' : f"{ version } .0" ,
27
+ 'changelog' : changelog ,
28
+ 'targetAbi' : '10.8.0.0' ,
29
+ 'sourceUrl' : f'https://github.com/cxfksword/jellyfin-plugin-metashark/releases/download/v{ version } /metashark_{ version } .0.zip' ,
30
+ 'checksum' : md5sum (filepath ),
31
+ 'timestamp' : datetime .now ().strftime ('%Y-%m-%dT%H:%M:%S' )
32
+ }
33
+
34
+ def md5sum (filename ):
35
+ with open (filename , 'rb' ) as f :
36
+ return hashlib .md5 (f .read ()).hexdigest ()
37
+
38
+
39
+ def main ():
40
+ filename = sys .argv [1 ]
41
+ tag = sys .argv [2 ]
42
+ version = tag .removeprefix ('v' )
43
+ filepath = os .path .join (os .getcwd (), filename )
44
+ result = subprocess .run (['git' , 'tag' ,'-l' ,'--format=%(contents)' , tag , '-l' ], stdout = subprocess .PIPE )
45
+ changelog = result .stdout .decode ('utf-8' ).strip ()
46
+
47
+ # 解析旧 manifest
48
+ try :
49
+ with urlopen ('https://github.com/cxfksword/jellyfin-plugin-metashark/releases/download/manifest/maniest.json' ) as f :
50
+ manifest = json .load (f )
51
+ except HTTPError as err :
52
+ if err .code == 404 :
53
+ manifest = generate_manifest ()
54
+ else :
55
+ raise
56
+
57
+ # 追加新版本
58
+ manifest [0 ]['versions' ].insert (0 , generate_version (filepath , version , changelog ))
59
+
60
+ with open ('manifest.json' , 'w' ) as f :
61
+ json .dump (manifest , f , indent = 2 )
62
+
63
+ # 国内加速
64
+ with open ('manifest_cn.json' , 'w' ) as f :
65
+ manifest_cn = json .dumps (manifest , indent = 2 )
66
+ manifest_cn = re .sub ("github.com" , "gh-proxy.com/https://github.com" , manifest_cn )
67
+ f .write (manifest_cn )
68
+
69
+
70
+ if __name__ == '__main__' :
71
+ main ()
0 commit comments