Skip to content
项目
群组
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
统计
统计docx文档信息
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
问题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
静态页
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
系统群组
开源项目
统计docx文档信息
提交
9ef2d24b
提交
9ef2d24b
6月 24, 2022
创建
作者:
shx
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add convert pdf py
上级
849567b1
显示空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
128 行增加
和
0 行删除
+128
-0
convertodt.py
convertodt.py
+68
-0
convertpdf.py
convertpdf.py
+60
-0
没有找到文件。
convertodt.py
0 → 100644
浏览文件 @
9ef2d24b
#python3
#encoding=utf-8
import
sys
import
requests
,
json
import
json
import
os
# 参考:这是ci文件中的传入参数
# python3 convertpdf.py ${CODECODE_PROTOCOL}${CODECODE_DOMAIN}:3000 ci_job_token ${CI_JOB_TOKEN} ${CI_PROJECT_ID}
# 主机地址和端口号,用于访问api时构造url
host_with_port
=
sys
.
argv
[
1
]
# token类型字符串
token_type_str
=
sys
.
argv
[
2
]
# 传入的token内容
token
=
sys
.
argv
[
3
]
# 传入的项目id
projectid
=
sys
.
argv
[
4
]
# 调用获取主机信息api,用于访问api时使用
gethostinfo_url
=
host_with_port
+
"/api/v4/gethostinfo?"
+
token_type_str
+
"="
+
token
r_host
=
requests
.
get
(
gethostinfo_url
)
host_json_str
=
json
.
dumps
(
r_host
.
json
())
hostinfo
=
json
.
loads
(
host_json_str
)
if
not
hostinfo
[
'host_port'
]:
host_with_port_info
=
hostinfo
[
'host_domain'
]
else
:
host_with_port_info
=
hostinfo
[
'host_domain'
]
+
":"
+
hostinfo
[
'host_port'
]
# 调用获取学生提交文件信息的api
getfilesinfo_url
=
host_with_port
+
"/api/v4/studentfileinfo?"
+
token_type_str
+
"="
+
token
+
"&projectid="
+
projectid
# 访问api
r_studentfiles
=
requests
.
get
(
getfilesinfo_url
)
# 将json转换为字符串
studentfiles_json_str
=
json
.
dumps
(
r_studentfiles
.
json
())
studentfilesinfo
=
json
.
loads
(
studentfiles_json_str
)
# 将文件信息转换为数组
filenames_arr
=
studentfilesinfo
[
'filesinfo'
]
# 循环全部文件
# 接口返回的文件是按创建时间降序排列,所以下面统计完最后一次提交的docx文档后会直接退出
for
item
in
filenames_arr
:
filename
,
ext_name
=
os
.
path
.
splitext
(
item
)
# 如果后缀名是docx的,则生成odt文件,统计信息
if
ext_name
==
".docx"
:
# 如果没找到文件,就继续下一条数据
if
not
(
os
.
path
.
exists
(
item
)):
os
.
system
(
"没有找到文件:"
+
item
)
continue
# 先将文件转换成odt
os
.
system
(
"soffice --headless --convert-to odt "
+
"
\"
"
+
item
+
"
\"
"
)
# 整理odt文件名
file_odt
=
filename
+
".odt"
# 统计报告信息
os
.
system
(
"python3 storepy/statistics.py "
+
"
\"
"
+
file_odt
+
"
\"
"
+
" "
+
host_with_port
+
" "
+
projectid
+
" "
+
token_type_str
+
" "
+
token
)
# 退出
exit
(
0
)
convertpdf.py
0 → 100644
浏览文件 @
9ef2d24b
#python3
#encoding=utf-8
import
sys
import
requests
,
json
import
json
import
os
# 参考:这是ci文件中的传入参数
# python3 convertpdf.py ${CODECODE_PROTOCOL}${CODECODE_DOMAIN}:3000 ci_job_token ${CI_JOB_TOKEN} ${CI_PROJECT_ID}
# 主机地址和端口号,用于访问api时构造url
host_with_port
=
sys
.
argv
[
1
]
# token类型字符串
token_type_str
=
sys
.
argv
[
2
]
# 传入的token内容
token
=
sys
.
argv
[
3
]
# 传入的项目id
projectid
=
sys
.
argv
[
4
]
# 调用获取主机信息api,用于访问api时使用
gethostinfo_url
=
host_with_port
+
"/api/v4/gethostinfo?"
+
token_type_str
+
"="
+
token
r_host
=
requests
.
get
(
gethostinfo_url
)
host_json_str
=
json
.
dumps
(
r_host
.
json
())
hostinfo
=
json
.
loads
(
host_json_str
)
if
not
hostinfo
[
'host_port'
]:
host_with_port_info
=
hostinfo
[
'host_domain'
]
else
:
host_with_port_info
=
hostinfo
[
'host_domain'
]
+
":"
+
hostinfo
[
'host_port'
]
# 调用获取学生提交文件信息的api
getfilesinfo_url
=
host_with_port
+
"/api/v4/studentfileinfo?"
+
token_type_str
+
"="
+
token
+
"&projectid="
+
projectid
# 访问api
r_studentfiles
=
requests
.
get
(
getfilesinfo_url
)
# 将json转换为字符串
studentfiles_json_str
=
json
.
dumps
(
r_studentfiles
.
json
())
studentfilesinfo
=
json
.
loads
(
studentfiles_json_str
)
# 将文件信息转换为数组
filenames_arr
=
studentfilesinfo
[
'filesinfo'
]
# 循环全部文件
for
item
in
filenames_arr
:
# 只在文件是docx或pptx时才转换成pdf
filename
,
ext_name
=
os
.
path
.
splitext
(
item
)
if
(
ext_name
==
".docx"
or
ext_name
==
".pptx"
):
if
not
(
os
.
path
.
exists
(
item
)):
os
.
system
(
"没有找到文件:"
+
item
)
continue
# 执行命令,将文件转换成pdf
convert_pdf
=
"soffice --headless --convert-to pdf "
+
"
\"
"
+
item
+
"
\"
"
+
" --outdir ./public"
os
.
system
(
convert_pdf
)
\ No newline at end of file
编写
预览
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论