11import os
2+ import re
23import shutil
34from pathlib import Path
4-
55import yaml
66
77
88def _main ():
9- dirs = [
10- 'AI-大数据' ,
11- '产品-运营' ,
12- '前端-移动' ,
13- '后端-架构' ,
14- '管理-成长' ,
15- '计算机基础' ,
16- '运维-测试' ,
9+ dirs = ['AI-大数据' ,'产品-运营' ,'前端-移动' ,'后端-架构' ,'管理-成长' ,'计算机基础' ,'运维-测试' ]
10+ patterns = [
11+ re .compile (r'!\[\]\((https?://\S+?)\)' ),
12+ re .compile (r'!$.*?$$(https?://[^\s$]+)' ),
13+ ]
14+ proxy_url = "http://127.0.0.1:8091/proxy?url={url}"
15+ proxy_urls = [
16+ "https://static001.geekbang.org/resource/image" ,
17+ "https://static001.geekbang.org/resource/avatar" ,
1718 ]
1819 all = []
1920 docs_dir = Path (__file__ ).parent .joinpath ('dist' )
@@ -32,7 +33,20 @@ def _main():
3233 real_nav_path = os .path .join (docs_dir , nav_path )
3334 src_nav_path = os .path .join (item_dir , "docs" , nav )
3435 os .makedirs (os .path .dirname (real_nav_path ), exist_ok = True )
35- shutil .copyfile (src_nav_path , real_nav_path )
36+ dst_raw = ''
37+ with open (src_nav_path , 'r' ) as ff :
38+ for line in ff .readlines ():
39+ line = line .strip ()
40+ for pattern in patterns :
41+ for uri in pattern .findall (line ):
42+ for purl in proxy_urls :
43+ if purl in uri :
44+ dst_url = proxy_url .format (url = uri )
45+ line = line .replace (uri , dst_url )
46+ dst_raw += line
47+ dst_raw += "\n "
48+ with open (real_nav_path , 'w' ) as fi :
49+ fi .write (dst_raw )
3650 items .append (nav_path )
3751 index_text += f'\n [{ os .path .basename (item_dir )} ]({ os .path .basename (item_dir )} /{ os .path .basename (item_dir )} )\n '
3852 navs .append ({sub_dir : items })
0 commit comments