main.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. """
  2. 导出课程对应试卷数量
  3. """
  4. import requests
  5. import openpyxl
  6. import config
  7. import pandas as pd
  8. wb = openpyxl.Workbook()
  9. sheet1 = wb.create_sheet(title="试卷数量")
  10. sheet1.append(["科目代码","科目名称","试卷数量"])
  11. sheet2 = wb.create_sheet(title="小题数量")
  12. sheet2.append(["科目代码","科目名称","小题数量"])
  13. def getQuestionCount(paperId):
  14. url=config.domain+"/api/ecs_ques/paper/%s"%(paperId)
  15. result = requests.get(url,
  16. headers={"key": config.key, "token": config.token})
  17. return result.json()
  18. def getQuestionData(pageNo):
  19. url=config.domain+"/api/ecs_ques/importPaper/%d/500"%(pageNo)
  20. params={
  21. "courseNo":"",
  22. "level":"",
  23. "name":""
  24. }
  25. result=requests.get(url,params=params,headers={"key": config.key, "token": config.token})
  26. return result.json()
  27. def getPaperData(pageNo):
  28. url=config.domain+"/api/ecs_ques/genPaper/%d/10?courseNo=&courseName=&level=&name="%(pageNo)
  29. result = requests.get(url,
  30. headers={"key": config.key, "token": config.token})
  31. return result.json()
  32. if __name__=="__main__":
  33. questionList=[]
  34. f=None
  35. if config.type=="题库":
  36. f=getQuestionData
  37. elif config.type=="卷库":
  38. f=getPaperData
  39. pageResult=f(1)
  40. if not f:
  41. raise Exception("类型数据有误,仅支持题库或卷库")
  42. totalPages=pageResult["totalPages"]
  43. for pageNo in range(1,totalPages+1):
  44. print("start to solve page %d "%(pageNo))
  45. pageResult=f(pageNo)
  46. for question in pageResult["content"]:
  47. print("start to solve paper %s " % (question["id"]))
  48. questiondetail=getQuestionCount(question["id"])
  49. paperdetail=questiondetail["paperDetails"]
  50. questioncount=0
  51. for mainnumberdetail in paperdetail:
  52. questioncount=questioncount+mainnumberdetail["unitCount"]
  53. question["questioncount"]=questioncount
  54. questionList.append(question)
  55. resultframe = pd.DataFrame(questionList)
  56. def functionsolve(x):
  57. x["courseCode"]=x["course"]["code"]
  58. return x
  59. resultframe=resultframe.apply(func=functionsolve,axis=1)
  60. for courseCode, result in resultframe.groupby(by=["courseCode"]):
  61. sheet1.append([courseCode,result["course"].values[0]["name"],result.shape[0]])
  62. sheet2.append([courseCode,result["course"].values[0]["name"],sum(result["questioncount"])])
  63. wb.save("result.xlsx")