开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 8682|回复: 4
收起左侧

[技术专题] 职教云看视频(python脚本)

[复制链接]
结帖率:0% (0/2)
发表于 2020-6-28 16:57:37 | 显示全部楼层 |阅读模式   山东省菏泽市
本代码仅供娱乐交流使用,切勿进行商用和违法用途

import requests

import json
import time


def Learn(courseName):
    headers['Referer'] = 'https://zjy2.icve.com.cn/student/studio/studio.html'
    responseLearn = requests.post('https://zjy2.icve.com.cn/api/student/learning/getLearnningCourseList',headers=headers)
    jsonLearn = json.loads(responseLearn.content.decode('utf-8'))
    for course in jsonLearn['courseList']:
        if(course['courseName'] == courseName):
            courseOpenId = course['courseOpenId']
            openClassId = course['openClassId']
            return courseOpenId,openClassId

def Process(courseOpenId,openClassId):
    headers['Referer'] = 'https://zjy2.icve.com.cn/study/process/process.html?courseOpenId='+courseOpenId+'&openClassId='+openClassId
    arrayProcess = []
    data = {
        'courseOpenId': courseOpenId,
        'openClassId': openClassId
    }
    responseProcess = requests.post('https://zjy2.icve.com.cn/api/study/process/getProcessList',headers=headers,data=data)
    jsonProcess = json.loads(responseProcess.text)
    for moduList in jsonProcess['progress']['moduleList']:
        if(moduList['percent']!=100):
            arrayProcess.append({'moduleId':moduList['id']})
        else:
            print(moduList['name'] + " ····· 100%")
    return arrayProcess

def ModuleId(moduleId,courseOpenId):
    headers['Referer'] = 'https://zjy2.icve.com.cn/study/process/process.html?courseOpenId='+courseOpenId+'&openClassId='+openClassId
    arrayModule = []
    data = {
        'courseOpenId': courseOpenId,
        'moduleId': moduleId
    }
    responseModule = requests.post('https://zjy2.icve.com.cn/api/study/process/getTopicByModuleId', headers=headers, data=data)
    jsonModule = json.loads(responseModule.text)
    for moduList in jsonModule['topicList']:
        arrayModule.append({'topicId':moduList['id']})
    return arrayModule

def Topic(courseOpenId,openClassId,topicId):
    headers['Referer'] = 'https://zjy2.icve.com.cn/study/process/process.html?courseOpenId='+courseOpenId+'&openClassId='+openClassId
    arrayTopic = []
    data = {
        'courseOpenId': courseOpenId,
        'openClassId': openClassId,
        'topicId': topicId
    }
    responseTopic = requests.post('https://zjy2.icve.com.cn/api/study/process/getCellByTopicId', headers=headers,data=data)
    jsonTopic = json.loads(responseTopic.text)
    for cellList in jsonTopic['cellList']:
        if(cellList['stuCellPercent']!=100):
            arrayTopic.append({'cellId':cellList['Id'],'categoryName':cellList['categoryName']})
        else:
            print(cellList['cellName'] + "-" + cellList['categoryName'] + " ····· 100%")

    return arrayTopic

def View(courseOpenId,openClassId,cellId,moduleId):
    headers['Referer'] = 'https://zjy2.icve.com.cn/common/directory/directory.html?courseOpenId='+courseOpenId+'&openClassId='+openClassId+'&cellId='+cellId+'&flag=s&moduleId='+moduleId
    data = {
        'courseOpenId': courseOpenId,
        'openClassId': openClassId,
        'cellId': cellId,
        'flag': 's',
        'moduleId': moduleId
    }
    responseView = requests.post('https://zjy2.icve.com.cn/api/common/Directory/viewDirectory', headers=headers,data=data)

    jsonView = json.loads(responseView.text)
    if(jsonView['code']==-100):
        dataChange = {
            'courseOpenId': courseOpenId,
            'openClassId': openClassId,
            'cellId': cellId,
            'moduleId': moduleId,
            'cellName': jsonView['currCellName']
        }
        requests.post('https://zjy2.icve.com.cn/api/common/Directory/changeStuStudyProcessCellData', headers=headers, data=dataChange)
        responseView = requests.post('https://zjy2.icve.com.cn/api/common/Directory/viewDirectory', headers=headers,
                                     data=data)
        jsonView = json.loads(responseView.text)
        return jsonView['audioVideoLong'], jsonView['cellName'], jsonView['guIdToken'], jsonView['stuStudyNewlyTime'], \
               jsonView['cellPercent'], jsonView['resUrl']
    return jsonView['audioVideoLong'],jsonView['cellName'],jsonView['guIdToken'],jsonView['stuStudyNewlyTime'],jsonView['cellPercent'],jsonView['resUrl']

def CellLog(courseOpenId,openClassId,cellId,audioVideoLong,cellName,guIdToken,stuStudyNewlyTime,cellPercent,categoryName,resUrl):
    headers['Referer'] = 'https://zjy2.icve.com.cn/common/directory/directory.html?courseOpenId='+courseOpenId+'&openClassId='+openClassId+'&cellId='+cellId+'&flag=s&moduleId='+moduleId
    if(categoryName=='视频'):
        studyTime = stuStudyNewlyTime
        while True:
            startTime = time.time()
            if(cellPercent==100):
                print(cellName + '-' + categoryName + " ····· 100%")
                break
            data = {
                'courseOpenId': courseOpenId,
                'openClassId': openClassId,
                'cellId': cellId,
                'cellLogId':'',
                'picNum': '0',
                'studyNewlyTime': str(round(studyTime,6)),
                'studyNewlyPicNum': '0',
                'token': guIdToken
            }
            time.sleep(10)
            endTime = time.time()
            addTime = endTime - startTime
            studyTime += addTime
            if (studyTime >= audioVideoLong):
                studyTime = audioVideoLong
            try:
                responseCell = requests.post('https://zjy2.icve.com.cn/api/common/Directory/stuProcessCellLog', headers=headers, data=data ,timeout=10)
                jsonCell = json.loads(responseCell.content.decode('utf-8'))
                if (int(studyTime) == 0):
                    percent = 0
                else:
                    percent = round(studyTime * 100 / audioVideoLong, 2)
                if (jsonCell['code'] == 1):
                    print(cellName + '-' + categoryName + " ····· " + str(percent) + "%")
                    if (studyTime >= audioVideoLong):
                        break
            except:
                pass

    elif(categoryName=='ppt'):
        pages = json.loads(resUrl)['args']['page_count']
        for page in range(1,pages+1):
            if (cellPercent == 100):
                print(cellName + '-' + categoryName + " ····· 100%")
                break
            data = {
                'courseOpenId': courseOpenId,
                'openClassId': openClassId,
                'cellId': cellId,
                'cellLogId': '',
                'picNum': page,
                'studyNewlyTime': '0',
                'studyNewlyPicNum': page,
                'token': guIdToken
            }
            responseCell = requests.post('https://zjy2.icve.com.cn/api/common/Directory/stuProcessCellLog', headers=headers,data=data)
            jsonCell = json.loads(responseCell.text)
            if (jsonCell['code'] == 1):
                print(cellName + '-' + categoryName + " ····· " + str(round(page * 100 / pages,2)) + "%")
            time.sleep(2)

    elif (categoryName == 'swf'):
        for page in range(1,5):
            if (cellPercent == 100):
                print(cellName + '-' + categoryName + " ····· 100%")
                break
            data = {
                'courseOpenId': courseOpenId,
                'openClassId': openClassId,
                'cellId': cellId,
                'cellLogId': '',
                'picNum': '0',
                'studyNewlyTime': '0',
                'studyNewlyPicNum': '0',
                'token': guIdToken
            }
            responseCell = requests.post('https://zjy2.icve.com.cn/api/common/Directory/stuProcessCellLog',
                                         headers=headers, data=data)
            jsonCell = json.loads(responseCell.text)
            if (jsonCell['code'] == 1):
                print(cellName + '-' + categoryName + " ····· 100%")
            time.sleep(2)

if __name__ == '__main__':

    Cookie = "" #放入你自己的cookie
    courseName = "" #放入你想**视频的课程名字
    headers = {
    'Host': 'zjy2.icve.com.cn',
    'Origin': 'https://zjy2.icve.com.cn',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36',
    'Cookie': Cookie}
    courseOpenId,openClassId = Learn(courseName)
    processs = Process(courseOpenId,openClassId)
    for process in processs:
        moduleId = process['moduleId']
        modules = ModuleId(moduleId,courseOpenId)
        for module in modules:
            topicId = module['topicId']
            topics = Topic(courseOpenId,openClassId,topicId)
            for topic in topics:
                cellId=topic['cellId']
                categoryName = topic['categoryName']
                audioVideoLong,cellName,guIdToken,stuStudyNewlyTime,cellPercent,resUrl=View(courseOpenId,openClassId,cellId,moduleId)
                CellLog(courseOpenId,openClassId,cellId,audioVideoLong,cellName,guIdToken,stuStudyNewlyTime,cellPercent,categoryName,resUrl)

签到天数: 2 天

发表于 2021-2-2 15:11:55 | 显示全部楼层   浙江省杭州市
非常感谢 您的分享~
回复 支持 反对

使用道具 举报

发表于 2020-7-3 17:28:45 | 显示全部楼层   广西壮族自治区南宁市
非常感谢 您的分享
回复 支持 反对

使用道具 举报

发表于 2020-6-30 18:39:37 | 显示全部楼层   浙江省杭州市
非常感谢 您的分享
回复 支持 反对

使用道具 举报

结帖率:67% (2/3)
发表于 2020-6-30 00:12:18 | 显示全部楼层   广西壮族自治区贵港市
我就是随便看看
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表