Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
E
EduSpider
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
viitto
EduSpider
Commits
94d5dbd2
Commit
94d5dbd2
authored
Sep 21, 2022
by
黄奎
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
页面修改
parent
47041ac9
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
599 additions
and
522 deletions
+599
-522
ClassInFlow.cs
EduSpider/Spiders/ClassInRule/ClassInFlow.cs
+0
-2
CourseManager.cs
EduSpider/Spiders/ClassInRule/CourseManager.cs
+229
-189
HomeWorkManager.cs
EduSpider/Spiders/ClassInRule/HomeWorkManager.cs
+126
-106
QuestionManager.cs
EduSpider/Spiders/ClassInRule/QuestionManager.cs
+152
-131
StudentManager.cs
EduSpider/Spiders/ClassInRule/StudentManager.cs
+64
-59
TeacherManager.cs
EduSpider/Spiders/ClassInRule/TeacherManager.cs
+28
-22
ICookiesManager.cs
EduSpider/Spiders/ICookiesManager.cs
+0
-13
No files found.
EduSpider/Spiders/ClassInRule/ClassInFlow.cs
View file @
94d5dbd2
using
EduSpider.Spiders.ClassInRule
;
using
EduSpider.Spiders.ClassInRule
;
using
EduSpider.Utility.Plugin
;
using
EduSpider.Utility.Plugin
;
using
System
;
using
System.Threading
;
namespace
TicketSpider.Spiders.ClassInRule
namespace
TicketSpider.Spiders.ClassInRule
{
{
...
...
EduSpider/Spiders/ClassInRule/CourseManager.cs
View file @
94d5dbd2
...
@@ -33,76 +33,89 @@ namespace EduSpider.Spiders.ClassInRule
...
@@ -33,76 +33,89 @@ namespace EduSpider.Spiders.ClassInRule
var
content
=
new
StringContent
(
paramStr
,
System
.
Text
.
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
var
content
=
new
StringContent
(
paramStr
,
System
.
Text
.
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
ICourseRepository
courseRepository
=
new
CourseRepository
();
ICourseRepository
courseRepository
=
new
CourseRepository
();
int
totalCount
=
0
;
int
totalCount
=
0
;
try
string
url
=
"https://console.eeo.cn/saasajax/course.ajax.php?action=getCourseList"
;
var
response
=
await
request
.
PostAsync
(
url
,
content
);
var
result
=
response
.
Content
.
ReadAsStringAsync
().
Result
;
if
(!
string
.
IsNullOrWhiteSpace
(
result
))
{
{
JObject
rootObj
=
JObject
.
Parse
(
result
);
string
url
=
"https://console.eeo.cn/saasajax/course.ajax.php?action=getCourseList"
;
if
(!
string
.
IsNullOrWhiteSpace
(
rootObj
.
GetString
(
"data"
)))
var
response
=
await
request
.
PostAsync
(
url
,
content
);
var
result
=
response
.
Content
.
ReadAsStringAsync
().
Result
;
if
(!
string
.
IsNullOrWhiteSpace
(
result
))
{
{
JObject
dataObj
=
JObject
.
Parse
(
rootObj
.
GetString
(
"data"
));
JObject
rootObj
=
JObject
.
Parse
(
result
);
var
totalNum
=
dataObj
.
GetInt
(
"totalCourseNum"
);
if
(!
string
.
IsNullOrWhiteSpace
(
rootObj
.
GetString
(
"data"
)))
var
tempList
=
ParseJson
(
dataObj
.
GetString
(
"courseList"
));
if
(
tempList
!=
null
&&
tempList
.
Count
>
0
)
{
{
courseRepository
.
BatchSetCourseRepository
(
tempList
);
JObject
dataObj
=
JObject
.
Parse
(
rootObj
.
GetString
(
"data"
));
totalCount
+=
tempList
.
Count
;
var
totalNum
=
dataObj
.
GetInt
(
"totalCourseNum"
);
InfoHelper
.
WriteLine
(
string
.
Format
(
"第{0}次,导入完成{1}条."
,
pageCount
,
totalCount
));
var
tempList
=
ParseJson
(
dataObj
.
GetString
(
"courseList"
));
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RunCourse"
,
string
.
Format
(
"第{0}次,导入完成{1}条."
,
pageCount
,
totalCount
));
if
(
tempList
!=
null
&&
tempList
.
Count
>
0
)
foreach
(
var
item
in
tempList
)
{
{
RunCourseStudent
(
cookie
,
item
.
CourseId
);
courseRepository
.
BatchSetCourseRepository
(
tempList
);
RunCourseTeacher
(
cookie
,
item
.
CourseId
);
totalCount
+=
tempList
.
Count
;
RunCourseInfo
(
cookie
,
item
.
CourseId
);
InfoHelper
.
WriteLine
(
string
.
Format
(
"第{0}次,导入完成{1}条."
,
pageCount
,
totalCount
));
GetCourseLessionList
(
cookie
,
item
);
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RunCourse"
,
string
.
Format
(
"第{0}次,导入完成{1}条."
,
pageCount
,
totalCount
));
foreach
(
var
item
in
tempList
)
{
RunCourseStudent
(
cookie
,
item
.
CourseId
);
RunCourseTeacher
(
cookie
,
item
.
CourseId
);
RunCourseInfo
(
cookie
,
item
.
CourseId
);
GetCourseLessionList
(
cookie
,
item
);
}
}
}
}
if
(
totalNum
%
perpage
==
0
)
if
(
totalNum
%
perpage
==
0
)
{
pageCount
=
totalNum
/
perpage
;
}
else
{
pageCount
=
totalNum
/
perpage
+
1
;
}
if
(
totalNum
>
perpage
)
{
for
(
var
i
=
2
;
i
<=
pageCount
;
i
++)
{
{
Thread
.
Sleep
(
1000
*
2
);
pageCount
=
totalNum
/
perpage
;
paramStr
=
string
.
Format
(
queryStr
,
i
,
perpage
);
}
var
sub_content
=
new
StringContent
(
paramStr
,
System
.
Text
.
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
else
var
sub_response
=
await
request
.
PostAsync
(
url
,
sub_content
);
{
var
sub_result
=
sub_response
.
Content
.
ReadAsStringAsync
().
Result
;
pageCount
=
totalNum
/
perpage
+
1
;
if
(!
string
.
IsNullOrWhiteSpace
(
sub_result
))
}
if
(
totalNum
>
perpage
)
{
for
(
var
i
=
2
;
i
<=
pageCount
;
i
++)
{
{
JObject
sub_rootObj
=
JObject
.
Parse
(
sub_result
);
Thread
.
Sleep
(
1000
*
2
);
if
(!
string
.
IsNullOrWhiteSpace
(
sub_rootObj
.
GetString
(
"data"
)))
paramStr
=
string
.
Format
(
queryStr
,
i
,
perpage
);
var
sub_content
=
new
StringContent
(
paramStr
,
System
.
Text
.
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
try
{
{
JObject
sub_dataObj
=
JObject
.
Parse
(
sub_rootObj
.
GetString
(
"data"
)
);
var
sub_response
=
await
request
.
PostAsync
(
url
,
sub_content
);
var
sub
tempList
=
ParseJson
(
sub_dataObj
.
GetString
(
"courseList"
))
;
var
sub
_result
=
sub_response
.
Content
.
ReadAsStringAsync
().
Result
;
if
(
subtempList
!=
null
&&
subtempList
.
Count
>
0
)
if
(
!
string
.
IsNullOrWhiteSpace
(
sub_result
)
)
{
{
courseRepository
.
BatchSetCourseRepository
(
subtempList
);
JObject
sub_rootObj
=
JObject
.
Parse
(
sub_result
);
totalCount
+=
subtempList
.
Count
;
if
(!
string
.
IsNullOrWhiteSpace
(
sub_rootObj
.
GetString
(
"data"
)))
foreach
(
var
sItem
in
subtempList
)
{
{
RunCourseStudent
(
cookie
,
sItem
.
CourseId
);
JObject
sub_dataObj
=
JObject
.
Parse
(
sub_rootObj
.
GetString
(
"data"
));
RunCourseTeacher
(
cookie
,
sItem
.
CourseId
);
var
subtempList
=
ParseJson
(
sub_dataObj
.
GetString
(
"courseList"
));
RunCourseInfo
(
cookie
,
sItem
.
CourseId
);
if
(
subtempList
!=
null
&&
subtempList
.
Count
>
0
)
GetCourseLessionList
(
cookie
,
sItem
);
{
courseRepository
.
BatchSetCourseRepository
(
subtempList
);
totalCount
+=
subtempList
.
Count
;
foreach
(
var
sItem
in
subtempList
)
{
RunCourseStudent
(
cookie
,
sItem
.
CourseId
);
RunCourseTeacher
(
cookie
,
sItem
.
CourseId
);
RunCourseInfo
(
cookie
,
sItem
.
CourseId
);
GetCourseLessionList
(
cookie
,
sItem
);
}
InfoHelper
.
WriteLine
(
string
.
Format
(
"第{0}次,导入完成{1}条."
,
i
,
totalCount
));
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RunCourse"
,
string
.
Format
(
"第{0}次,导入完成{1}条."
,
i
,
totalCount
));
}
}
}
InfoHelper
.
WriteLine
(
string
.
Format
(
"第{0}次,导入完成{1}条."
,
i
,
totalCount
));
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RunCourse"
,
string
.
Format
(
"第{0}次,导入完成{1}条."
,
i
,
totalCount
));
}
}
}
}
catch
(
Exception
ex2
)
{
VTX
.
FW
.
Helper
.
LogHelper
.
WriteError
(
"CourseManager_RunCourse2"
,
ex
:
ex2
);
}
}
}
}
}
}
}
}
}
}
}
catch
(
Exception
ex
)
{
VTX
.
FW
.
Helper
.
LogHelper
.
WriteError
(
"CourseManager_RunCourse"
,
ex
:
ex
);
}
}
}
/// <summary>
/// <summary>
...
@@ -146,7 +159,7 @@ namespace EduSpider.Spiders.ClassInRule
...
@@ -146,7 +159,7 @@ namespace EduSpider.Spiders.ClassInRule
TeacherName
=
courseObj
.
GetString
(
"teacherName"
),
TeacherName
=
courseObj
.
GetString
(
"teacherName"
),
TeacherLogo
=
courseObj
.
GetString
(
"teacherLogo"
),
TeacherLogo
=
courseObj
.
GetString
(
"teacherLogo"
),
CourseType
=
courseObj
.
GetInt
(
"courseType"
),
CourseType
=
courseObj
.
GetInt
(
"courseType"
),
});
});
}
}
}
}
return
list
;
return
list
;
...
@@ -171,51 +184,57 @@ namespace EduSpider.Spiders.ClassInRule
...
@@ -171,51 +184,57 @@ namespace EduSpider.Spiders.ClassInRule
InfoHelper
.
WriteLine
(
string
.
Format
(
"开始获取{0}课程学员数据"
,
courseId
));
InfoHelper
.
WriteLine
(
string
.
Format
(
"开始获取{0}课程学员数据"
,
courseId
));
string
url
=
"https://console.eeo.cn/saasajax/student.ajax.php?action=getCourseStudentList"
;
string
url
=
"https://console.eeo.cn/saasajax/student.ajax.php?action=getCourseStudentList"
;
var
response
=
await
request
.
PostAsync
(
url
,
content
);
var
sutResult
=
response
.
Content
.
ReadAsStringAsync
().
Result
;
List
<
RB_Course_Student
>
list
=
new
();
List
<
RB_Course_Student
>
list
=
new
();
List
<
RB_Course_Student
>
deleteList
=
new
List
<
RB_Course_Student
>();
List
<
RB_Course_Student
>
deleteList
=
new
List
<
RB_Course_Student
>();
if
(!
string
.
IsNullOrWhiteSpace
(
sutResult
))
try
{
{
JObject
stuRootObj
=
JObject
.
Parse
(
sutResult
);
var
response
=
await
request
.
PostAsync
(
url
,
content
);
if
(!
string
.
IsNullOrWhiteSpace
(
stuRootObj
.
GetString
(
"data"
)))
var
sutResult
=
response
.
Content
.
ReadAsStringAsync
().
Result
;
if
(!
string
.
IsNullOrWhiteSpace
(
sutResult
))
{
{
J
Array
courseStudentArray
=
JArray
.
Parse
(
stuRootObj
.
GetString
(
"data"
)
);
J
Object
stuRootObj
=
JObject
.
Parse
(
sutResult
);
if
(
courseStudentArray
!=
null
&&
courseStudentArray
.
Count
>
0
)
if
(
!
string
.
IsNullOrWhiteSpace
(
stuRootObj
.
GetString
(
"data"
))
)
{
{
foreach
(
var
jItem
in
courseStudentArray
)
JArray
courseStudentArray
=
JArray
.
Parse
(
stuRootObj
.
GetString
(
"data"
));
if
(
courseStudentArray
!=
null
&&
courseStudentArray
.
Count
>
0
)
{
{
JObject
courseStuObj
=
JObject
.
Parse
(
jItem
.
ToString
());
foreach
(
var
jItem
in
courseStudentArray
)
string
deleteCourseStudentReplay
=
courseStuObj
.
GetString
(
"deleteCourseStudentReplay"
);
if
(
deleteCourseStudentReplay
!=
"0"
)
{
{
list
.
Add
(
new
RB_Course_Student
()
JObject
courseStuObj
=
JObject
.
Parse
(
jItem
.
ToString
());
string
deleteCourseStudentReplay
=
courseStuObj
.
GetString
(
"deleteCourseStudentReplay"
);
if
(
deleteCourseStudentReplay
!=
"0"
)
{
{
id
=
courseStuObj
.
GetInt
(
"id"
),
list
.
Add
(
new
RB_Course_Student
()
uid
=
courseStuObj
.
GetInt
(
"uid"
),
{
name
=
courseStuObj
.
GetString
(
"name
"
),
id
=
courseStuObj
.
GetInt
(
"id
"
),
account
=
courseStuObj
.
GetString
(
"account
"
),
uid
=
courseStuObj
.
GetInt
(
"uid
"
),
logo
=
courseStuObj
.
GetString
(
"logo
"
),
name
=
courseStuObj
.
GetString
(
"name
"
),
courseId
=
courseId
account
=
courseStuObj
.
GetString
(
"account"
),
});
logo
=
courseStuObj
.
GetString
(
"logo"
),
}
courseId
=
courseId
else
});
{
}
deleteList
.
Add
(
new
RB_Course_Student
()
else
{
{
id
=
courseStuObj
.
GetInt
(
"id"
),
deleteList
.
Add
(
new
RB_Course_Student
()
uid
=
courseStuObj
.
GetInt
(
"uid"
),
{
name
=
courseStuObj
.
GetString
(
"name"
),
id
=
courseStuObj
.
GetInt
(
"id"
),
account
=
courseStuObj
.
GetString
(
"account"
),
uid
=
courseStuObj
.
GetInt
(
"uid"
),
logo
=
courseStuObj
.
GetString
(
"logo"
),
name
=
courseStuObj
.
GetString
(
"name"
),
courseId
=
courseId
account
=
courseStuObj
.
GetString
(
"account"
),
});
logo
=
courseStuObj
.
GetString
(
"logo"
),
courseId
=
courseId
});
}
}
}
}
}
}
}
}
}
}
}
catch
(
Exception
ex
)
{
VTX
.
FW
.
Helper
.
LogHelper
.
WriteError
(
"CourseManager_RunCourseStudent"
,
ex
:
ex
);
}
if
(
list
!=
null
&&
list
.
Count
>
0
)
if
(
list
!=
null
&&
list
.
Count
>
0
)
{
{
courseStudentRepository
.
BatchSetCourseStudentRepository
(
list
);
courseStudentRepository
.
BatchSetCourseStudentRepository
(
list
);
...
@@ -233,48 +252,54 @@ namespace EduSpider.Spiders.ClassInRule
...
@@ -233,48 +252,54 @@ namespace EduSpider.Spiders.ClassInRule
/// <param name="courseId"></param>
/// <param name="courseId"></param>
public
static
async
void
RunCourseTeacher
(
string
cookie
,
int
courseId
)
public
static
async
void
RunCourseTeacher
(
string
cookie
,
int
courseId
)
{
{
List
<
RB_Course_Teacher
>
list
=
new
();
var
request
=
Utility
.
HttpHelper
.
GenerateHttp
(
cookie
);
var
request
=
Utility
.
HttpHelper
.
GenerateHttp
(
cookie
);
string
queryStr
=
"courseId={0}"
;
string
queryStr
=
"courseId={0}"
;
string
paramStr
=
string
.
Format
(
queryStr
,
courseId
);
string
paramStr
=
string
.
Format
(
queryStr
,
courseId
);
var
content
=
new
StringContent
(
paramStr
,
System
.
Text
.
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
var
content
=
new
StringContent
(
paramStr
,
System
.
Text
.
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
ICourseTeacherRepository
courseTeacherRepository
=
new
CourseTeacherRepository
();
ICourseTeacherRepository
courseTeacherRepository
=
new
CourseTeacherRepository
();
InfoHelper
.
WriteLine
(
string
.
Format
(
"开始获取{0}课程老师数据"
,
courseId
));
InfoHelper
.
WriteLine
(
string
.
Format
(
"开始获取{0}课程老师数据"
,
courseId
));
string
url
=
"https://console.eeo.cn/saasajax/course.ajax.php?action=getCourseTeacherList"
;
string
url
=
"https://console.eeo.cn/saasajax/course.ajax.php?action=getCourseTeacherList"
;
var
response
=
await
request
.
PostAsync
(
url
,
content
);
try
var
teacherResult
=
response
.
Content
.
ReadAsStringAsync
().
Result
;
List
<
RB_Course_Teacher
>
list
=
new
();
if
(!
string
.
IsNullOrWhiteSpace
(
teacherResult
))
{
{
JObject
teacherRootObj
=
JObject
.
Parse
(
teacherResult
);
var
response
=
await
request
.
PostAsync
(
url
,
content
);
if
(!
string
.
IsNullOrWhiteSpace
(
teacherRootObj
.
GetString
(
"data"
)))
var
teacherResult
=
response
.
Content
.
ReadAsStringAsync
().
Result
;
if
(!
string
.
IsNullOrWhiteSpace
(
teacherResult
))
{
{
JObject
teacher
Obj
=
JObject
.
Parse
(
teacherRootObj
.
GetString
(
"data"
)
);
JObject
teacher
RootObj
=
JObject
.
Parse
(
teacherResult
);
if
(!
string
.
IsNullOrWhiteSpace
(
teacher
Obj
.
GetString
(
"teacherList
"
)))
if
(!
string
.
IsNullOrWhiteSpace
(
teacher
RootObj
.
GetString
(
"data
"
)))
{
{
J
Array
courseTeacherArray
=
JArray
.
Parse
(
teacherObj
.
GetString
(
"teacherList
"
));
J
Object
teacherObj
=
JObject
.
Parse
(
teacherRootObj
.
GetString
(
"data
"
));
if
(
courseTeacherArray
!=
null
&&
courseTeacherArray
.
Count
>
0
)
if
(
!
string
.
IsNullOrWhiteSpace
(
teacherObj
.
GetString
(
"teacherList"
))
)
{
{
foreach
(
var
jItem
in
courseTeacherArray
)
JArray
courseTeacherArray
=
JArray
.
Parse
(
teacherObj
.
GetString
(
"teacherList"
));
if
(
courseTeacherArray
!=
null
&&
courseTeacherArray
.
Count
>
0
)
{
{
JObject
courseTeacherObj
=
JObject
.
Parse
(
jItem
.
ToString
());
foreach
(
var
jItem
in
courseTeacherArray
)
JObject
infoObj
=
JObject
.
Parse
(
courseTeacherObj
.
GetString
(
"teacherInfo"
));
list
.
Add
(
new
RB_Course_Teacher
()
{
{
id
=
infoObj
.
GetInt
(
"id"
),
JObject
courseTeacherObj
=
JObject
.
Parse
(
jItem
.
ToString
());
uid
=
infoObj
.
GetInt
(
"uid"
),
JObject
infoObj
=
JObject
.
Parse
(
courseTeacherObj
.
GetString
(
"teacherInfo"
));
phone
=
infoObj
.
GetString
(
"phone"
),
list
.
Add
(
new
RB_Course_Teacher
()
logo
=
infoObj
.
GetString
(
"logo"
),
{
name
=
infoObj
.
GetString
(
"name"
),
id
=
infoObj
.
GetInt
(
"id"
),
courseId
=
courseId
,
uid
=
infoObj
.
GetInt
(
"uid"
),
courseTeacherId
=
courseTeacherObj
.
GetInt
(
"courseTeacherId"
)
phone
=
infoObj
.
GetString
(
"phone"
),
});
logo
=
infoObj
.
GetString
(
"logo"
),
name
=
infoObj
.
GetString
(
"name"
),
courseId
=
courseId
,
courseTeacherId
=
courseTeacherObj
.
GetInt
(
"courseTeacherId"
)
});
}
}
}
}
}
}
}
}
}
}
}
catch
(
Exception
ex
)
{
VTX
.
FW
.
Helper
.
LogHelper
.
WriteError
(
"CourseManager_RunCourseTeacher"
,
ex
:
ex
);
}
if
(
list
!=
null
&&
list
.
Count
>
0
)
if
(
list
!=
null
&&
list
.
Count
>
0
)
{
{
courseTeacherRepository
.
BatchSetCourseTeacherRepository
(
list
);
courseTeacherRepository
.
BatchSetCourseTeacherRepository
(
list
);
...
@@ -288,87 +313,95 @@ namespace EduSpider.Spiders.ClassInRule
...
@@ -288,87 +313,95 @@ namespace EduSpider.Spiders.ClassInRule
/// <param name="courseId"></param>
/// <param name="courseId"></param>
public
static
async
void
RunCourseInfo
(
string
cookie
,
int
courseId
)
public
static
async
void
RunCourseInfo
(
string
cookie
,
int
courseId
)
{
{
List
<
rb_course_hk
>
list
=
new
();
List
<
RB_Course_Teacher
>
teacherList
=
new
();
var
request
=
Utility
.
HttpHelper
.
GenerateHttp
(
cookie
);
var
request
=
Utility
.
HttpHelper
.
GenerateHttp
(
cookie
);
string
queryStr
=
"courseId={0}"
;
string
queryStr
=
"courseId={0}"
;
string
paramStr
=
string
.
Format
(
queryStr
,
courseId
);
string
paramStr
=
string
.
Format
(
queryStr
,
courseId
);
var
content
=
new
StringContent
(
paramStr
,
System
.
Text
.
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
var
content
=
new
StringContent
(
paramStr
,
System
.
Text
.
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
ICourseRepository
courseRepository
=
new
CourseRepository
();
ICourseRepository
courseRepository
=
new
CourseRepository
();
ICourseTeacherRepository
courseTeacherRepository
=
new
CourseTeacherRepository
();
ICourseTeacherRepository
courseTeacherRepository
=
new
CourseTeacherRepository
();
InfoHelper
.
WriteLine
(
string
.
Format
(
"开始获取{0}课程详情数据"
,
courseId
));
InfoHelper
.
WriteLine
(
string
.
Format
(
"开始获取{0}课程详情数据"
,
courseId
));
string
url
=
"https://console.eeo.cn/saasajax/course.ajax.php?action=getCourseInfo"
;
string
url
=
"https://console.eeo.cn/saasajax/course.ajax.php?action=getCourseInfo"
;
var
response
=
await
request
.
PostAsync
(
url
,
content
);
try
var
courseInfoResult
=
response
.
Content
.
ReadAsStringAsync
().
Result
;
List
<
rb_course_hk
>
list
=
new
();
List
<
RB_Course_Teacher
>
teacherList
=
new
();
if
(!
string
.
IsNullOrWhiteSpace
(
courseInfoResult
))
{
{
JObject
courseRootObj
=
JObject
.
Parse
(
courseInfoResult
);
var
response
=
await
request
.
PostAsync
(
url
,
content
);
if
(!
string
.
IsNullOrWhiteSpace
(
courseRootObj
.
GetString
(
"data"
)))
var
courseInfoResult
=
response
.
Content
.
ReadAsStringAsync
().
Result
;
if
(!
string
.
IsNullOrWhiteSpace
(
courseInfoResult
))
{
{
JObject
courseObj
=
JObject
.
Parse
(
courseRootObj
.
GetString
(
"data"
));
JObject
courseRootObj
=
JObject
.
Parse
(
courseInfoResult
);
var
expiryTime
=
ConvertHelper
.
UnixToDateTime
(
courseObj
.
GetInt
(
"expiryTime"
));
if
(!
string
.
IsNullOrWhiteSpace
(
courseRootObj
.
GetString
(
"data"
)))
if
(
ConvertHelper
.
FormatTime
(
expiryTime
)
==
"1970-01-01 08:00:00"
)
{
expiryTime
=
new
DateTime
(
0001
,
01
,
01
);
}
var
courseModel
=
new
rb_course_hk
()
{
CourseId
=
courseObj
.
GetInt
(
"courseId"
),
CourseName
=
courseObj
.
GetString
(
"courseName"
),
BeginTime
=
ConvertHelper
.
UnixToDateTime
(
courseObj
.
GetInt
(
"beginTime"
)),
CompleteNum
=
courseObj
.
GetInt
(
"completeNum"
),
TotalClassNum
=
courseObj
.
GetInt
(
"totalClassNum"
),
ExpiryTime
=
expiryTime
,
LiveNum
=
courseObj
.
GetInt
(
"liveNum"
),
RecordNum
=
0
,
OpenNum
=
courseObj
.
GetInt
(
"openNum"
),
StudentNum
=
courseObj
.
GetInt
(
"studentNum"
),
AuditNum
=
courseObj
.
GetInt
(
"auditNum"
),
TeacherNum
=
courseObj
.
GetInt
(
"teacherNum"
),
CourseStatus
=
courseObj
.
GetInt
(
"courseStatus"
),
WebCast
=
courseObj
.
GetString
(
"webCastUrl"
),
TeacherId
=
courseObj
.
GetInt
(
"teacherId"
),
TeacherAccount
=
courseObj
.
GetString
(
"teacherAccount"
),
TeacherUid
=
courseObj
.
GetInt
(
"teacherUid"
),
TeacherName
=
courseObj
.
GetString
(
"teacherName"
),
TeacherLogo
=
courseObj
.
GetString
(
"teacherLogo"
),
CourseType
=
courseObj
.
GetInt
(
"courseType"
),
AddTime
=
ConvertHelper
.
UnixToDateTime
(
courseObj
.
GetInt
(
"addTime"
)),
CourseWare
=
courseObj
.
GetString
(
"courseWare"
),
};
string
tempCoverImg
=
courseObj
.
GetString
(
"coverImg"
);
string
coverImg
=
""
;
if
(!
string
.
IsNullOrWhiteSpace
(
tempCoverImg
))
{
{
coverImg
=
"https://console.eeo.cn/upload/images/"
+
tempCoverImg
;
JObject
courseObj
=
JObject
.
Parse
(
courseRootObj
.
GetString
(
"data"
));
}
var
expiryTime
=
ConvertHelper
.
UnixToDateTime
(
courseObj
.
GetInt
(
"expiryTime"
));
courseModel
.
CoverImg
=
coverImg
;
if
(
ConvertHelper
.
FormatTime
(
expiryTime
)
==
"1970-01-01 08:00:00"
)
list
.
Add
(
courseModel
);
if
(
courseModel
.
TeacherUid
>
0
)
{
var
cTeacherModel
=
courseTeacherRepository
.
GetTeacherCourseListRepository
(
new
Model
.
Query
.
CourseQuery
()
{
{
CourseId
=
courseModel
.
CourseId
,
expiryTime
=
new
DateTime
(
0001
,
01
,
01
);
TeacherIds
=
courseModel
.
TeacherUid
.
ToString
()
}
}).
FirstOrDefault
();
var
courseModel
=
new
rb_course_hk
()
int
newId
=
Convert
.
ToInt32
(
DateTime
.
Now
.
ToString
(
"yyyyMMdd"
));
var
courseTeacher
=
new
RB_Course_Teacher
()
{
{
id
=
cTeacherModel
?.
id
??
newId
,
CourseId
=
courseObj
.
GetInt
(
"courseId"
),
uid
=
Convert
.
ToInt32
(
courseModel
.
TeacherUid
),
CourseName
=
courseObj
.
GetString
(
"courseName"
),
phone
=
courseModel
.
TeacherAccount
,
BeginTime
=
ConvertHelper
.
UnixToDateTime
(
courseObj
.
GetInt
(
"beginTime"
)),
logo
=
courseModel
.
TeacherLogo
,
CompleteNum
=
courseObj
.
GetInt
(
"completeNum"
),
name
=
courseModel
.
TeacherName
,
TotalClassNum
=
courseObj
.
GetInt
(
"totalClassNum"
),
courseId
=
courseId
,
ExpiryTime
=
expiryTime
,
courseTeacherId
=
courseModel
.
TeacherId
LiveNum
=
courseObj
.
GetInt
(
"liveNum"
),
RecordNum
=
0
,
OpenNum
=
courseObj
.
GetInt
(
"openNum"
),
StudentNum
=
courseObj
.
GetInt
(
"studentNum"
),
AuditNum
=
courseObj
.
GetInt
(
"auditNum"
),
TeacherNum
=
courseObj
.
GetInt
(
"teacherNum"
),
CourseStatus
=
courseObj
.
GetInt
(
"courseStatus"
),
WebCast
=
courseObj
.
GetString
(
"webCastUrl"
),
TeacherId
=
courseObj
.
GetInt
(
"teacherId"
),
TeacherAccount
=
courseObj
.
GetString
(
"teacherAccount"
),
TeacherUid
=
courseObj
.
GetInt
(
"teacherUid"
),
TeacherName
=
courseObj
.
GetString
(
"teacherName"
),
TeacherLogo
=
courseObj
.
GetString
(
"teacherLogo"
),
CourseType
=
courseObj
.
GetInt
(
"courseType"
),
AddTime
=
ConvertHelper
.
UnixToDateTime
(
courseObj
.
GetInt
(
"addTime"
)),
CourseWare
=
courseObj
.
GetString
(
"courseWare"
),
};
};
teacherList
.
Add
(
courseTeacher
);
string
tempCoverImg
=
courseObj
.
GetString
(
"coverImg"
);
string
coverImg
=
""
;
if
(!
string
.
IsNullOrWhiteSpace
(
tempCoverImg
))
{
coverImg
=
"https://console.eeo.cn/upload/images/"
+
tempCoverImg
;
}
courseModel
.
CoverImg
=
coverImg
;
list
.
Add
(
courseModel
);
if
(
courseModel
.
TeacherUid
>
0
)
{
var
cTeacherModel
=
courseTeacherRepository
.
GetTeacherCourseListRepository
(
new
Model
.
Query
.
CourseQuery
()
{
CourseId
=
courseModel
.
CourseId
,
TeacherIds
=
courseModel
.
TeacherUid
.
ToString
()
}).
FirstOrDefault
();
int
newId
=
Convert
.
ToInt32
(
DateTime
.
Now
.
ToString
(
"yyyyMMdd"
));
var
courseTeacher
=
new
RB_Course_Teacher
()
{
id
=
cTeacherModel
?.
id
??
newId
,
uid
=
Convert
.
ToInt32
(
courseModel
.
TeacherUid
),
phone
=
courseModel
.
TeacherAccount
,
logo
=
courseModel
.
TeacherLogo
,
name
=
courseModel
.
TeacherName
,
courseId
=
courseId
,
courseTeacherId
=
courseModel
.
TeacherId
};
teacherList
.
Add
(
courseTeacher
);
}
}
}
}
}
}
}
catch
(
Exception
ex
)
{
VTX
.
FW
.
Helper
.
LogHelper
.
WriteError
(
"CourseManager_RunCourseInfo"
,
ex
:
ex
);
}
if
(
list
!=
null
&&
list
.
Count
>
0
)
if
(
list
!=
null
&&
list
.
Count
>
0
)
{
{
courseRepository
.
BatchSetCourseOtherRepository
(
list
);
courseRepository
.
BatchSetCourseOtherRepository
(
list
);
...
@@ -397,33 +430,40 @@ namespace EduSpider.Spiders.ClassInRule
...
@@ -397,33 +430,40 @@ namespace EduSpider.Spiders.ClassInRule
var
request
=
Utility
.
HttpHelper
.
GenerateHttp
(
cookie
);
var
request
=
Utility
.
HttpHelper
.
GenerateHttp
(
cookie
);
string
queryStr
=
$"courseKey=
{
searchKey
}
"
;
string
queryStr
=
$"courseKey=
{
searchKey
}
"
;
var
content
=
new
StringContent
(
queryStr
,
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
var
content
=
new
StringContent
(
queryStr
,
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
string
url
=
"https://live.eeo.cn/saasajax/webcast.ajax.php?action=getLessonList"
;
var
response
=
request
.
PostAsync
(
url
,
content
).
Result
;
var
result
=
response
.
Content
.
ReadAsStringAsync
().
Result
;
var
lessonKeyList
=
new
List
<
string
>();
var
lessonKeyList
=
new
List
<
string
>();
int
lessonVodCount
=
0
;
int
lessonVodCount
=
0
;
if
(!
string
.
IsNullOrWhiteSpace
(
result
))
string
url
=
"https://live.eeo.cn/saasajax/webcast.ajax.php?action=getLessonList"
;
try
{
{
var
rootObj
=
JObject
.
Parse
(
result
);
var
response
=
request
.
PostAsync
(
url
,
content
).
Result
;
if
(
rootObj
.
ContainsKey
(
"data"
))
var
result
=
response
.
Content
.
ReadAsStringAsync
().
Result
;
if
(!
string
.
IsNullOrWhiteSpace
(
result
))
{
{
JArray
dataArray
=
JArray
.
Parse
(
rootObj
[
"data"
].
ToString
()
);
var
rootObj
=
JObject
.
Parse
(
result
);
if
(
dataArray
!=
null
&&
dataArray
.
Count
>
0
)
if
(
rootObj
.
ContainsKey
(
"data"
)
)
{
{
foreach
(
var
sItem
in
dataArray
)
JArray
dataArray
=
JArray
.
Parse
(
rootObj
[
"data"
].
ToString
());
if
(
dataArray
!=
null
&&
dataArray
.
Count
>
0
)
{
{
JObject
sObj
=
JObject
.
Parse
(
JsonHelper
.
Serialize
(
sItem
));
foreach
(
var
sItem
in
dataArray
)
lessonKeyList
.
Add
(
sObj
.
GetString
(
"lessonKey"
));
int
lessonStatus
=
sObj
.
GetInt
(
"lessonStatus"
);
if
(
lessonStatus
==
1
)
{
{
lessonVodCount
+=
sObj
.
GetInt
(
"lessonVodCount"
);
JObject
sObj
=
JObject
.
Parse
(
JsonHelper
.
Serialize
(
sItem
));
lessonKeyList
.
Add
(
sObj
.
GetString
(
"lessonKey"
));
int
lessonStatus
=
sObj
.
GetInt
(
"lessonStatus"
);
if
(
lessonStatus
==
1
)
{
lessonVodCount
+=
sObj
.
GetInt
(
"lessonVodCount"
);
}
}
}
}
}
}
}
}
}
}
}
if
(
lessonVodCount
>
0
)
catch
(
Exception
ex
)
{
VTX
.
FW
.
Helper
.
LogHelper
.
WriteError
(
"CourseManager_GetCourseLessionList"
,
ex
:
ex
);
}
if
(
lessonVodCount
>
0
)
{
{
var
resultList
=
new
List
<
string
>();
var
resultList
=
new
List
<
string
>();
//var request2 = Utility.HttpHelper.GenerateHttp(cookie);
//var request2 = Utility.HttpHelper.GenerateHttp(cookie);
...
@@ -463,7 +503,7 @@ namespace EduSpider.Spiders.ClassInRule
...
@@ -463,7 +503,7 @@ namespace EduSpider.Spiders.ClassInRule
//}
//}
if
(
resultList
!=
null
&&
resultList
.
Count
>
0
)
if
(
resultList
!=
null
&&
resultList
.
Count
>
0
)
{
{
}
}
rb_course_hk
model
=
new
rb_course_hk
()
rb_course_hk
model
=
new
rb_course_hk
()
{
{
...
...
EduSpider/Spiders/ClassInRule/HomeWorkManager.cs
View file @
94d5dbd2
...
@@ -33,75 +33,88 @@ namespace EduSpider.Spiders.ClassInRule
...
@@ -33,75 +33,88 @@ namespace EduSpider.Spiders.ClassInRule
IHomeWorkRepository
homeWorkRepository
=
new
HomeWorkRepository
();
IHomeWorkRepository
homeWorkRepository
=
new
HomeWorkRepository
();
IStuHomeWorkRepository
stuHomeWorkRepository
=
new
StuHomeWorkRepository
();
IStuHomeWorkRepository
stuHomeWorkRepository
=
new
StuHomeWorkRepository
();
int
totalCount
=
0
;
int
totalCount
=
0
;
try
string
url
=
"https://console.eeo.cn/saasajax/homework.ajax.php?action=getHomeworkList"
;
var
response
=
await
request
.
PostAsync
(
url
,
content
);
var
result
=
response
.
Content
.
ReadAsStringAsync
().
Result
;
if
(!
string
.
IsNullOrWhiteSpace
(
result
))
{
{
JObject
rootObj
=
JObject
.
Parse
(
result
);
string
url
=
"https://console.eeo.cn/saasajax/homework.ajax.php?action=getHomeworkList"
;
if
(!
string
.
IsNullOrWhiteSpace
(
rootObj
.
GetString
(
"data"
)))
var
response
=
await
request
.
PostAsync
(
url
,
content
);
var
result
=
response
.
Content
.
ReadAsStringAsync
().
Result
;
if
(!
string
.
IsNullOrWhiteSpace
(
result
))
{
{
JObject
dataObj
=
JObject
.
Parse
(
rootObj
.
GetString
(
"data"
));
JObject
rootObj
=
JObject
.
Parse
(
result
);
var
totalNum
=
dataObj
.
GetInt
(
"total"
);
if
(!
string
.
IsNullOrWhiteSpace
(
rootObj
.
GetString
(
"data"
)))
var
tempList
=
ParseJson
(
dataObj
.
GetString
(
"list"
));
if
(
tempList
!=
null
&&
tempList
.
Count
>
0
)
{
{
homeWorkRepository
.
BatchSetHomeWorkRepository
(
tempList
);
JObject
dataObj
=
JObject
.
Parse
(
rootObj
.
GetString
(
"data"
));
totalCount
+=
tempList
.
Count
;
var
totalNum
=
dataObj
.
GetInt
(
"total"
);
InfoHelper
.
WriteLine
(
string
.
Format
(
"第{0}次,导入完成{1}条."
,
pageCount
,
totalCount
));
var
tempList
=
ParseJson
(
dataObj
.
GetString
(
"list"
));
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RunHomeWork"
,
string
.
Format
(
"第{0}次,导入完成{1}条."
,
pageCount
,
totalCount
));
if
(
tempList
!=
null
&&
tempList
.
Count
>
0
)
foreach
(
var
item
in
tempList
)
{
{
RunStuHomeWork
(
cookie
,
item
.
Homework_id
,
item
.
Course_id
);
homeWorkRepository
.
BatchSetHomeWorkRepository
(
tempList
);
totalCount
+=
tempList
.
Count
;
InfoHelper
.
WriteLine
(
string
.
Format
(
"第{0}次,导入完成{1}条."
,
pageCount
,
totalCount
));
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RunHomeWork"
,
string
.
Format
(
"第{0}次,导入完成{1}条."
,
pageCount
,
totalCount
));
foreach
(
var
item
in
tempList
)
{
RunStuHomeWork
(
cookie
,
item
.
Homework_id
,
item
.
Course_id
);
}
}
if
(
totalNum
%
perpage
==
0
)
{
pageCount
=
totalNum
/
perpage
;
}
else
{
pageCount
=
totalNum
/
perpage
+
1
;
}
}
}
if
(
totalNum
%
perpage
==
0
)
{
pageCount
=
totalNum
/
perpage
;
}
else
{
pageCount
=
totalNum
/
perpage
+
1
;
}
if
(
totalNum
>
perpage
)
if
(
totalNum
>
perpage
)
{
for
(
var
i
=
2
;
i
<=
pageCount
;
i
++)
{
{
Thread
.
Sleep
(
1000
*
2
);
for
(
var
i
=
2
;
i
<=
pageCount
;
i
++)
paramStr
=
string
.
Format
(
queryStr
,
i
,
perpage
);
var
sub_content
=
new
StringContent
(
paramStr
,
System
.
Text
.
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
var
sub_response
=
await
request
.
PostAsync
(
url
,
sub_content
);
var
sub_result
=
sub_response
.
Content
.
ReadAsStringAsync
().
Result
;
if
(!
string
.
IsNullOrWhiteSpace
(
sub_result
))
{
{
JObject
sub_rootObj
=
JObject
.
Parse
(
sub_result
);
Thread
.
Sleep
(
1000
*
2
);
if
(!
string
.
IsNullOrWhiteSpace
(
sub_rootObj
.
GetString
(
"data"
)))
paramStr
=
string
.
Format
(
queryStr
,
i
,
perpage
);
try
{
{
JObject
sub_dataObj
=
JObject
.
Parse
(
sub_rootObj
.
GetString
(
"data"
));
var
sub_content
=
new
StringContent
(
paramStr
,
System
.
Text
.
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
var
subtempList
=
ParseJson
(
sub_dataObj
.
GetString
(
"list"
));
var
sub_response
=
await
request
.
PostAsync
(
url
,
sub_content
);
if
(
subtempList
!=
null
&&
subtempList
.
Count
>
0
)
var
sub_result
=
sub_response
.
Content
.
ReadAsStringAsync
().
Result
;
if
(!
string
.
IsNullOrWhiteSpace
(
sub_result
))
{
{
homeWorkRepository
.
BatchSetHomeWorkRepository
(
subtempList
);
JObject
sub_rootObj
=
JObject
.
Parse
(
sub_result
);
totalCount
+=
subtempList
.
Count
;
if
(!
string
.
IsNullOrWhiteSpace
(
sub_rootObj
.
GetString
(
"data"
)))
foreach
(
var
sItem
in
subtempList
)
{
RunStuHomeWork
(
cookie
,
sItem
.
Homework_id
,
sItem
.
Course_id
);
}
if
(
i
==
totalCount
)
{
{
// stuHomeWorkRepository.CreateHomeWorkCommentRepository(0);
JObject
sub_dataObj
=
JObject
.
Parse
(
sub_rootObj
.
GetString
(
"data"
));
var
subtempList
=
ParseJson
(
sub_dataObj
.
GetString
(
"list"
));
if
(
subtempList
!=
null
&&
subtempList
.
Count
>
0
)
{
homeWorkRepository
.
BatchSetHomeWorkRepository
(
subtempList
);
totalCount
+=
subtempList
.
Count
;
foreach
(
var
sItem
in
subtempList
)
{
RunStuHomeWork
(
cookie
,
sItem
.
Homework_id
,
sItem
.
Course_id
);
}
if
(
i
==
totalCount
)
{
// stuHomeWorkRepository.CreateHomeWorkCommentRepository(0);
}
InfoHelper
.
WriteLine
(
string
.
Format
(
"第{0}次,导入完成{1}条."
,
i
,
totalCount
));
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RunHomeWork"
,
string
.
Format
(
"第{0}次,导入完成{1}条."
,
i
,
totalCount
));
}
}
}
InfoHelper
.
WriteLine
(
string
.
Format
(
"第{0}次,导入完成{1}条."
,
i
,
totalCount
));
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RunHomeWork"
,
string
.
Format
(
"第{0}次,导入完成{1}条."
,
i
,
totalCount
));
}
}
}
}
catch
(
Exception
ex2
)
{
VTX
.
FW
.
Helper
.
LogHelper
.
WriteError
(
"HomeWorkManager_RunHomeWork2"
,
ex
:
ex2
);
}
}
}
}
}
}
}
}
}
}
}
catch
(
Exception
ex
)
{
VTX
.
FW
.
Helper
.
LogHelper
.
WriteError
(
"HomeWorkManager_RunHomeWork"
,
ex
:
ex
);
}
}
}
/// <summary>
/// <summary>
...
@@ -165,7 +178,7 @@ namespace EduSpider.Spiders.ClassInRule
...
@@ -165,7 +178,7 @@ namespace EduSpider.Spiders.ClassInRule
/// </summary>
/// </summary>
/// <param name="cookie"></param>
/// <param name="cookie"></param>
/// <param name="homework_id"></param>
/// <param name="homework_id"></param>
public
static
async
void
RunStuHomeWork
(
string
cookie
,
int
homework_id
,
int
courseId
)
public
static
async
void
RunStuHomeWork
(
string
cookie
,
int
homework_id
,
int
courseId
)
{
{
var
request
=
Utility
.
HttpHelper
.
GenerateHttp
(
cookie
);
var
request
=
Utility
.
HttpHelper
.
GenerateHttp
(
cookie
);
IStuHomeWorkRepository
stuHomeWorkRepository
=
new
StuHomeWorkRepository
();
IStuHomeWorkRepository
stuHomeWorkRepository
=
new
StuHomeWorkRepository
();
...
@@ -177,75 +190,78 @@ namespace EduSpider.Spiders.ClassInRule
...
@@ -177,75 +190,78 @@ namespace EduSpider.Spiders.ClassInRule
stuIds
=
string
.
Join
(
","
,
courseStuList
.
Select
(
qitem
=>
qitem
.
uid
));
stuIds
=
string
.
Join
(
","
,
courseStuList
.
Select
(
qitem
=>
qitem
.
uid
));
}
}
string
queryStr
=
"page=1&perpage=100000&homework_id=[{0}]&course_id=[{1}]&is_del=[0]&student_uid=[{2}]&by=2"
;
string
queryStr
=
"page=1&perpage=100000&homework_id=[{0}]&course_id=[{1}]&is_del=[0]&student_uid=[{2}]&by=2"
;
string
paramStr
=
string
.
Format
(
queryStr
,
homework_id
,
courseId
,
stuIds
);
string
paramStr
=
string
.
Format
(
queryStr
,
homework_id
,
courseId
,
stuIds
);
var
content
=
new
StringContent
(
paramStr
,
System
.
Text
.
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
var
content
=
new
StringContent
(
paramStr
,
System
.
Text
.
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
InfoHelper
.
WriteLine
(
string
.
Format
(
"开始获取{0}作业学员数据"
,
homework_id
));
InfoHelper
.
WriteLine
(
string
.
Format
(
"开始获取{0}作业学员数据"
,
homework_id
));
string
url
=
"https://console.eeo.cn/saasajax/homework.ajax.php?action=getStudentsHomeworkList"
;
string
url
=
"https://console.eeo.cn/saasajax/homework.ajax.php?action=getStudentsHomeworkList"
;
var
response
=
await
request
.
PostAsync
(
url
,
content
);
var
sutHomeWorkResult
=
response
.
Content
.
ReadAsStringAsync
().
Result
;
List
<
RB_Stu_HomeWork
>
list
=
new
();
List
<
RB_Stu_HomeWork
>
list
=
new
();
if
(!
string
.
IsNullOrWhiteSpace
(
sutHomeWorkResult
))
try
{
{
JObject
stuHomeRootObj
=
JObject
.
Parse
(
sutHomeWorkResult
);
var
response
=
await
request
.
PostAsync
(
url
,
content
);
if
(!
string
.
IsNullOrWhiteSpace
(
stuHomeRootObj
.
GetString
(
"data"
)))
var
sutHomeWorkResult
=
response
.
Content
.
ReadAsStringAsync
().
Result
;
if
(!
string
.
IsNullOrWhiteSpace
(
sutHomeWorkResult
))
{
{
JObject
stuHome
DataObj
=
JObject
.
Parse
(
stuHomeRootObj
.
GetString
(
"data"
)
);
JObject
stuHome
RootObj
=
JObject
.
Parse
(
sutHomeWorkResult
);
if
(!
string
.
IsNullOrWhiteSpace
(
stuHome
DataObj
.
GetString
(
"list
"
)))
if
(!
string
.
IsNullOrWhiteSpace
(
stuHome
RootObj
.
GetString
(
"data
"
)))
{
{
J
Array
stuHomeArray
=
JArray
.
Parse
(
stuHomeDataObj
.
GetString
(
"list
"
));
J
Object
stuHomeDataObj
=
JObject
.
Parse
(
stuHomeRootObj
.
GetString
(
"data
"
));
if
(
stuHomeArray
!=
null
&&
stuHomeArray
.
Count
>
0
)
if
(
!
string
.
IsNullOrWhiteSpace
(
stuHomeDataObj
.
GetString
(
"list"
))
)
{
{
foreach
(
var
rootItem
in
stuHomeArray
)
JArray
stuHomeArray
=
JArray
.
Parse
(
stuHomeDataObj
.
GetString
(
"list"
));
if
(
stuHomeArray
!=
null
&&
stuHomeArray
.
Count
>
0
)
{
{
JObject
stuItemObj
=
JObject
.
Parse
(
rootItem
.
ToString
());
foreach
(
var
rootItem
in
stuHomeArray
)
if
(!
string
.
IsNullOrWhiteSpace
(
stuItemObj
.
GetString
(
"students"
)))
{
{
J
Array
stuListArray
=
JArray
.
Parse
(
stuItemObj
.
GetString
(
"students"
));
J
Object
stuItemObj
=
JObject
.
Parse
(
rootItem
.
ToString
(
));
if
(
stuListArray
!=
null
&&
stuListArray
.
Count
>
0
)
if
(
!
string
.
IsNullOrWhiteSpace
(
stuItemObj
.
GetString
(
"students"
))
)
{
{
foreach
(
var
sItem
in
stuListArray
)
JArray
stuListArray
=
JArray
.
Parse
(
stuItemObj
.
GetString
(
"students"
));
if
(
stuListArray
!=
null
&&
stuListArray
.
Count
>
0
)
{
{
JObject
lastObj
=
JObject
.
Parse
(
sItem
.
ToString
());
foreach
(
var
sItem
in
stuListArray
)
list
.
Add
(
new
RB_Stu_HomeWork
()
{
{
stu_homework_id
=
lastObj
.
GetInt
(
"stu_homework_id"
),
JObject
lastObj
=
JObject
.
Parse
(
sItem
.
ToString
());
admire
=
lastObj
.
GetString
(
"admire"
),
list
.
Add
(
new
RB_Stu_HomeWork
()
cancel
=
lastObj
.
GetString
(
"cancel"
),
{
correct
=
lastObj
.
GetDecimal
(
"correct"
),
stu_homework_id
=
lastObj
.
GetInt
(
"stu_homework_id"
),
wrong
=
lastObj
.
GetInt
(
"wrong"
),
admire
=
lastObj
.
GetString
(
"admire"
),
course_id
=
lastObj
.
GetInt
(
"course_id"
),
cancel
=
lastObj
.
GetString
(
"cancel"
),
is_cream
=
lastObj
.
GetInt
(
"is_cream"
),
correct
=
lastObj
.
GetDecimal
(
"correct"
),
emend
=
lastObj
.
GetInt
(
"emend"
),
wrong
=
lastObj
.
GetInt
(
"wrong"
),
homework_id
=
lastObj
.
GetInt
(
"homework_id"
),
course_id
=
lastObj
.
GetInt
(
"course_id"
),
homework_share_key
=
lastObj
.
GetString
(
"homework_share_key"
),
is_cream
=
lastObj
.
GetInt
(
"is_cream"
),
is_draft
=
lastObj
.
GetInt
(
"is_draft"
),
emend
=
lastObj
.
GetInt
(
"emend"
),
is_reform
=
lastObj
.
GetInt
(
"is_reform"
),
homework_id
=
lastObj
.
GetInt
(
"homework_id"
),
is_revised
=
lastObj
.
GetInt
(
"is_revised"
),
homework_share_key
=
lastObj
.
GetString
(
"homework_share_key"
),
is_startd
=
lastObj
.
GetInt
(
"is_startd"
),
is_draft
=
lastObj
.
GetInt
(
"is_draft"
),
readover
=
lastObj
.
GetString
(
"readover"
),
is_reform
=
lastObj
.
GetInt
(
"is_reform"
),
ref_time
=
ConvertHelper
.
UnixToDateTime
(
lastObj
.
GetInt
(
"ref_time"
)),
is_revised
=
lastObj
.
GetInt
(
"is_revised"
),
comment
=
lastObj
.
GetString
(
"comment"
),
is_startd
=
lastObj
.
GetInt
(
"is_startd"
),
reform
=
lastObj
.
GetString
(
"reform"
),
readover
=
lastObj
.
GetString
(
"readover"
),
school_uid
=
lastObj
.
GetInt
(
"school_uid"
),
ref_time
=
ConvertHelper
.
UnixToDateTime
(
lastObj
.
GetInt
(
"ref_time"
)),
score
=
lastObj
.
GetDecimal
(
"score"
),
comment
=
lastObj
.
GetString
(
"comment"
),
score_p
=
lastObj
.
GetDecimal
(
"score_p"
),
reform
=
lastObj
.
GetString
(
"reform"
),
score_type
=
lastObj
.
GetInt
(
"score_type"
),
school_uid
=
lastObj
.
GetInt
(
"school_uid"
),
show_time
=
ConvertHelper
.
UnixToDateTime
(
lastObj
.
GetInt
(
"show_time"
)),
score
=
lastObj
.
GetDecimal
(
"score"
),
status
=
lastObj
.
GetInt
(
"status"
),
score_p
=
lastObj
.
GetDecimal
(
"score_p"
),
stu_homework_share_key
=
lastObj
.
GetString
(
"stu_homework_share_key"
),
score_type
=
lastObj
.
GetInt
(
"score_type"
),
student_account
=
lastObj
.
GetString
(
"student_account"
),
show_time
=
ConvertHelper
.
UnixToDateTime
(
lastObj
.
GetInt
(
"show_time"
)),
student_name
=
lastObj
.
GetString
(
"student_name"
),
status
=
lastObj
.
GetInt
(
"status"
),
student_uid
=
lastObj
.
GetInt
(
"student_uid"
),
stu_homework_share_key
=
lastObj
.
GetString
(
"stu_homework_share_key"
),
th_account
=
lastObj
.
GetString
(
"th_account"
),
student_account
=
lastObj
.
GetString
(
"student_account"
),
th_cancel
=
lastObj
.
GetString
(
"th_cancel"
),
student_name
=
lastObj
.
GetString
(
"student_name"
),
th_name
=
lastObj
.
GetString
(
"th_name"
),
student_uid
=
lastObj
.
GetInt
(
"student_uid"
),
th_num
=
lastObj
.
GetInt
(
"th_num"
),
th_account
=
lastObj
.
GetString
(
"th_account"
),
th_time
=
ConvertHelper
.
UnixToDateTime
(
lastObj
.
GetInt
(
"th_time"
)),
th_cancel
=
lastObj
.
GetString
(
"th_cancel"
),
th_uid
=
lastObj
.
GetInt
(
"th_uid"
),
th_name
=
lastObj
.
GetString
(
"th_name"
),
add_time
=
ConvertHelper
.
UnixToDateTime
(
lastObj
.
GetInt
(
"add_time"
)),
th_num
=
lastObj
.
GetInt
(
"th_num"
),
update_time
=
ConvertHelper
.
UnixToDateTime
(
lastObj
.
GetInt
(
"update_time"
)),
th_time
=
ConvertHelper
.
UnixToDateTime
(
lastObj
.
GetInt
(
"th_time"
)),
});
th_uid
=
lastObj
.
GetInt
(
"th_uid"
),
add_time
=
ConvertHelper
.
UnixToDateTime
(
lastObj
.
GetInt
(
"add_time"
)),
update_time
=
ConvertHelper
.
UnixToDateTime
(
lastObj
.
GetInt
(
"update_time"
)),
});
}
}
}
}
}
}
}
...
@@ -254,6 +270,10 @@ namespace EduSpider.Spiders.ClassInRule
...
@@ -254,6 +270,10 @@ namespace EduSpider.Spiders.ClassInRule
}
}
}
}
}
}
catch
(
Exception
ex
)
{
VTX
.
FW
.
Helper
.
LogHelper
.
WriteError
(
"HomeWorkManager_RunStuHomeWork"
,
ex
:
ex
);
}
if
(
list
!=
null
&&
list
.
Count
>
0
)
if
(
list
!=
null
&&
list
.
Count
>
0
)
{
{
stuHomeWorkRepository
.
BatchSetStuHomeWorkRepository
(
list
);
stuHomeWorkRepository
.
BatchSetStuHomeWorkRepository
(
list
);
...
...
EduSpider/Spiders/ClassInRule/QuestionManager.cs
View file @
94d5dbd2
...
@@ -10,7 +10,6 @@ using System.Linq;
...
@@ -10,7 +10,6 @@ using System.Linq;
using
System.Net.Http
;
using
System.Net.Http
;
using
System.Text
;
using
System.Text
;
using
System.Threading
;
using
System.Threading
;
using
System.Threading.Tasks
;
using
VTX.FW.Helper
;
using
VTX.FW.Helper
;
namespace
EduSpider.Spiders.ClassInRule
namespace
EduSpider.Spiders.ClassInRule
...
@@ -27,111 +26,126 @@ namespace EduSpider.Spiders.ClassInRule
...
@@ -27,111 +26,126 @@ namespace EduSpider.Spiders.ClassInRule
var
range
=
$"[1609430400,
{
ConvertHelper
.
DateTimeToUnix
(
DateTime
.
Now
)}
]"
;
var
range
=
$"[1609430400,
{
ConvertHelper
.
DateTimeToUnix
(
DateTime
.
Now
)}
]"
;
var
request
=
Utility
.
HttpHelper
.
GenerateHttp
(
cookie
);
var
request
=
Utility
.
HttpHelper
.
GenerateHttp
(
cookie
);
string
queryStr
=
"page={0}&perpage={1}&examStatus=&paperName=&courseName=&arrangeTime={2}&display=0"
;
string
queryStr
=
"page={0}&perpage={1}&examStatus=&paperName=&courseName=&arrangeTime={2}&display=0"
;
string
paramStr
=
string
.
Format
(
queryStr
,
pageCount
,
perpage
,
range
);
string
paramStr
=
string
.
Format
(
queryStr
,
pageCount
,
perpage
,
range
);
var
content
=
new
StringContent
(
paramStr
,
System
.
Text
.
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
var
content
=
new
StringContent
(
paramStr
,
System
.
Text
.
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
IHomeWorkRepository
homeWorkRepository
=
new
HomeWorkRepository
();
IHomeWorkRepository
homeWorkRepository
=
new
HomeWorkRepository
();
int
totalCount
=
0
;
int
totalCount
=
0
;
string
url
=
"https://console.eeo.cn/saasajax/exam.ajax.php?action=getExamManageList"
;
string
url
=
"https://console.eeo.cn/saasajax/exam.ajax.php?action=getExamManageList"
;
var
response
=
request
.
PostAsync
(
url
,
content
);
try
var
result
=
response
.
Result
.
Content
.
ReadAsStringAsync
().
Result
;
if
(!
string
.
IsNullOrWhiteSpace
(
result
))
{
{
JObject
rootObj
=
JObject
.
Parse
(
result
);
var
response
=
request
.
PostAsync
(
url
,
content
);
if
(!
string
.
IsNullOrWhiteSpace
(
rootObj
.
GetString
(
"data"
)))
var
result
=
response
.
Result
.
Content
.
ReadAsStringAsync
().
Result
;
if
(!
string
.
IsNullOrWhiteSpace
(
result
))
{
{
JObject
dataObj
=
JObject
.
Parse
(
rootObj
.
GetString
(
"data"
));
JObject
rootObj
=
JObject
.
Parse
(
result
);
var
totalNum
=
dataObj
.
GetInt
(
"totalSum"
);
if
(!
string
.
IsNullOrWhiteSpace
(
rootObj
.
GetString
(
"data"
)))
var
tempList
=
ParseJson
(
dataObj
.
GetString
(
"examsData"
),
cookie
);
if
(
tempList
!=
null
&&
tempList
.
Count
>
0
)
{
{
homeWorkRepository
.
BatchSetHomeWorkRepository
(
tempList
);
JObject
dataObj
=
JObject
.
Parse
(
rootObj
.
GetString
(
"data"
));
totalCount
+=
tempList
.
Count
;
var
totalNum
=
dataObj
.
GetInt
(
"totalSum"
);
InfoHelper
.
WriteLine
(
string
.
Format
(
"第{0}次,导入完成{1}条."
,
pageCount
,
totalCount
));
var
tempList
=
ParseJson
(
dataObj
.
GetString
(
"examsData"
),
cookie
);
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"QuestionManager_RunHomeWork"
,
string
.
Format
(
"第{0}次,导入完成{1}条."
,
pageCount
,
totalCount
));
if
(
tempList
!=
null
&&
tempList
.
Count
>
0
)
foreach
(
var
item
in
tempList
)
{
{
RunStuHomeWork
(
cookie
,
item
.
Homework_id
,
item
.
Course_id
,
item
);
homeWorkRepository
.
BatchSetHomeWorkRepository
(
tempList
);
totalCount
+=
tempList
.
Count
;
InfoHelper
.
WriteLine
(
string
.
Format
(
"第{0}次,导入完成{1}条."
,
pageCount
,
totalCount
));
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"QuestionManager_RunHomeWork"
,
string
.
Format
(
"第{0}次,导入完成{1}条."
,
pageCount
,
totalCount
));
foreach
(
var
item
in
tempList
)
{
RunStuHomeWork
(
cookie
,
item
.
Homework_id
,
item
.
Course_id
,
item
);
}
}
}
}
if
(
totalNum
%
perpage
==
0
)
if
(
totalNum
%
perpage
==
0
)
{
{
pageCount
=
totalNum
/
perpage
;
pageCount
=
totalNum
/
perpage
;
}
}
else
else
{
pageCount
=
totalNum
/
perpage
+
1
;
}
if
(
totalNum
>
perpage
)
{
for
(
var
i
=
2
;
i
<=
pageCount
;
i
++)
{
{
Thread
.
Sleep
(
1000
*
2
);
pageCount
=
totalNum
/
perpage
+
1
;
}
paramStr
=
string
.
Format
(
queryStr
,
i
,
perpage
,
range
);
var
sub_content
=
new
StringContent
(
paramStr
,
System
.
Text
.
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
var
sub_response
=
request
.
PostAsync
(
url
,
sub_content
);
var
sub_result
=
sub_response
.
Result
.
Content
.
ReadAsStringAsync
().
Result
;
if
(
totalNum
>
perpage
)
if
(!
string
.
IsNullOrWhiteSpace
(
sub_result
))
{
for
(
var
i
=
2
;
i
<=
pageCount
;
i
++)
{
{
JObject
sub_rootObj
=
JObject
.
Parse
(
sub_result
);
Thread
.
Sleep
(
1000
*
2
);
if
(!
string
.
IsNullOrWhiteSpace
(
sub_rootObj
.
GetString
(
"data"
)))
paramStr
=
string
.
Format
(
queryStr
,
i
,
perpage
,
range
);
var
sub_content
=
new
StringContent
(
paramStr
,
System
.
Text
.
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
try
{
{
JObject
sub_dataObj
=
JObject
.
Parse
(
sub_rootObj
.
GetString
(
"data"
)
);
var
sub_response
=
request
.
PostAsync
(
url
,
sub_content
);
var
sub
tempList
=
ParseJson
(
sub_dataObj
.
GetString
(
"list"
),
cookie
)
;
var
sub
_result
=
sub_response
.
Result
.
Content
.
ReadAsStringAsync
().
Result
;
if
(
subtempList
!=
null
&&
subtempList
.
Count
>
0
)
if
(
!
string
.
IsNullOrWhiteSpace
(
sub_result
)
)
{
{
homeWorkRepository
.
BatchSetHomeWorkRepository
(
subtempList
);
JObject
sub_rootObj
=
JObject
.
Parse
(
sub_result
);
totalCount
+=
subtempList
.
Count
;
if
(!
string
.
IsNullOrWhiteSpace
(
sub_rootObj
.
GetString
(
"data"
)))
foreach
(
var
sItem
in
subtempList
)
{
{
RunStuHomeWork
(
cookie
,
sItem
.
Homework_id
,
sItem
.
Course_id
,
sItem
);
JObject
sub_dataObj
=
JObject
.
Parse
(
sub_rootObj
.
GetString
(
"data"
));
var
subtempList
=
ParseJson
(
sub_dataObj
.
GetString
(
"list"
),
cookie
);
if
(
subtempList
!=
null
&&
subtempList
.
Count
>
0
)
{
homeWorkRepository
.
BatchSetHomeWorkRepository
(
subtempList
);
totalCount
+=
subtempList
.
Count
;
foreach
(
var
sItem
in
subtempList
)
{
RunStuHomeWork
(
cookie
,
sItem
.
Homework_id
,
sItem
.
Course_id
,
sItem
);
}
InfoHelper
.
WriteLine
(
string
.
Format
(
"第{0}次,导入完成{1}条."
,
i
,
totalCount
));
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"QuestionManager_RunHomeWork"
,
string
.
Format
(
"第{0}次,导入完成{1}条."
,
i
,
totalCount
));
}
}
}
InfoHelper
.
WriteLine
(
string
.
Format
(
"第{0}次,导入完成{1}条."
,
i
,
totalCount
));
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"QuestionManager_RunHomeWork"
,
string
.
Format
(
"第{0}次,导入完成{1}条."
,
i
,
totalCount
));
}
}
}
}
catch
(
Exception
ex2
)
{
VTX
.
FW
.
Helper
.
LogHelper
.
WriteError
(
"QuestionManager_RunHomeWork2"
,
ex
:
ex2
);
}
}
}
}
}
}
}
}
}
}
}
catch
(
Exception
ex
)
{
VTX
.
FW
.
Helper
.
LogHelper
.
WriteError
(
"QuestionManager_RunHomeWork"
,
ex
:
ex
);
}
}
}
public
static
void
RequestExamDetail
(
string
cookie
,
int
courseId
,
int
examId
,
int
tid
,
ref
RB_HomeWork
m
)
public
static
void
RequestExamDetail
(
string
cookie
,
int
courseId
,
int
examId
,
int
tid
,
ref
RB_HomeWork
m
)
{
{
var
request
=
Utility
.
HttpHelper
.
GenerateHttp
(
cookie
);
var
request
=
Utility
.
HttpHelper
.
GenerateHttp
(
cookie
);
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RequestExamDetail"
,
$"正在查询测验详细信息"
);
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RequestExamDetail"
,
$"正在查询测验详细信息"
);
var
paramStr
=
$"courseId=
{
courseId
}
&examsId=[
{
examId
}
]&teachersId=[
{
tid
}
]&page=1&perpage=20"
;
var
paramStr
=
$"courseId=
{
courseId
}
&examsId=[
{
examId
}
]&teachersId=[
{
tid
}
]&page=1&perpage=20"
;
var
content
=
new
StringContent
(
paramStr
,
System
.
Text
.
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
var
content
=
new
StringContent
(
paramStr
,
System
.
Text
.
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
var
response
=
request
.
PostAsync
(
"https://console.eeo.cn/saasajax/exam.ajax.php?action=getCourseExamAnalysisList"
,
content
);
try
var
resultStr
=
response
.
Result
.
Content
.
ReadAsStringAsync
().
Result
??
string
.
Empty
;
var
result
=
resultStr
.
TryToJObject
();
if
(
result
.
flag
)
{
{
var
data
=
(
result
.
val
.
ContainsKey
(
"data"
)
?
result
.
val
[
"data"
]
:
new
JObject
())
as
JObject
;
var
response
=
request
.
PostAsync
(
"https://console.eeo.cn/saasajax/exam.ajax.php?action=getCourseExamAnalysisList"
,
content
);
var
homeObj
=
(
data
[
"examsData"
]
as
JArray
)?.
FirstOrDefault
()
as
JObject
;
var
resultStr
=
response
.
Result
.
Content
.
ReadAsStringAsync
().
Result
??
string
.
Empty
;
if
(
homeObj
!=
null
)
var
result
=
resultStr
.
TryToJObject
();
if
(
result
.
flag
)
{
{
m
.
Num
=
homeObj
.
GetInt
(
"shouldStSum"
);
var
data
=
(
result
.
val
.
ContainsKey
(
"data"
)
?
result
.
val
[
"data"
]
:
new
JObject
())
as
JObject
;
m
.
Cream_num
=
homeObj
.
GetInt
(
"excellentStSum"
);
var
homeObj
=
(
data
[
"examsData"
]
as
JArray
)?.
FirstOrDefault
()
as
JObject
;
m
.
Revised_num
=
0
;
//未匹配数据;
if
(
homeObj
!=
null
)
m
.
Rnum
=
homeObj
.
GetInt
(
"beReviewStSum"
);
{
m
.
Cnum
=
homeObj
.
GetInt
(
"endStSum"
);
m
.
Num
=
homeObj
.
GetInt
(
"shouldStSum"
);
m
.
Cream_num
=
homeObj
.
GetInt
(
"excellentStSum"
);
m
.
Score_value
=
homeObj
.
GetDecimal
(
"score_value"
);
m
.
Revised_num
=
0
;
//未匹配数据;
m
.
Rnum
=
homeObj
.
GetInt
(
"beReviewStSum"
);
m
.
Th_cancel
=
string
.
Empty
;
m
.
Cnum
=
homeObj
.
GetInt
(
"endStSum"
);
m
.
Score_value
=
homeObj
.
GetDecimal
(
"score_value"
);
m
.
Ref_num
=
homeObj
.
GetInt
(
"needReStSum"
);
m
.
Th_cancel
=
string
.
Empty
;
m
.
Refc_num
=
homeObj
.
GetInt
(
"alreadyReStSum"
);
m
.
Ref_num
=
homeObj
.
GetInt
(
"needReStSum"
);
m
.
Av_score
=
homeObj
.
GetDecimal
(
"averageScore"
)
/
100
;
m
.
Refc_num
=
homeObj
.
GetInt
(
"alreadyReStSum"
);
m
.
Max_score
=
homeObj
.
GetDecimal
(
"highestScore"
)
/
100
;
m
.
Av_score
=
homeObj
.
GetDecimal
(
"averageScore"
)
/
100
;
m
.
Min_score
=
homeObj
.
GetDecimal
(
"lowestScore"
)
/
100
;
m
.
Max_score
=
homeObj
.
GetDecimal
(
"highestScore"
)
/
100
;
m
.
Min_score
=
homeObj
.
GetDecimal
(
"lowestScore"
)
/
100
;
}
}
}
}
}
catch
(
Exception
ex
)
{
VTX
.
FW
.
Helper
.
LogHelper
.
WriteError
(
"QuestionManager_RequestExamDetail"
,
ex
:
ex
);
}
}
}
/// <summary>
/// <summary>
...
@@ -139,7 +153,7 @@ namespace EduSpider.Spiders.ClassInRule
...
@@ -139,7 +153,7 @@ namespace EduSpider.Spiders.ClassInRule
/// </summary>
/// </summary>
/// <param name="data"></param>
/// <param name="data"></param>
/// <returns></returns>
/// <returns></returns>
public
static
List
<
RB_HomeWork
>
ParseJson
(
string
data
,
string
cookie
)
public
static
List
<
RB_HomeWork
>
ParseJson
(
string
data
,
string
cookie
)
{
{
List
<
RB_HomeWork
>
list
=
new
();
List
<
RB_HomeWork
>
list
=
new
();
if
(!
string
.
IsNullOrWhiteSpace
(
data
))
if
(!
string
.
IsNullOrWhiteSpace
(
data
))
...
@@ -215,74 +229,77 @@ namespace EduSpider.Spiders.ClassInRule
...
@@ -215,74 +229,77 @@ namespace EduSpider.Spiders.ClassInRule
InfoHelper
.
WriteLine
(
string
.
Format
(
"开始获取{0}作业学员数据"
,
homework_id
));
InfoHelper
.
WriteLine
(
string
.
Format
(
"开始获取{0}作业学员数据"
,
homework_id
));
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RunStuHomeWork"
,
string
.
Format
(
"开始获取{0}作业学员数据"
,
homework_id
));
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RunStuHomeWork"
,
string
.
Format
(
"开始获取{0}作业学员数据"
,
homework_id
));
string
url
=
"https://console.eeo.cn/saasajax/exam.ajax.php?action=getCourseExamsStDetailList"
;
string
url
=
"https://console.eeo.cn/saasajax/exam.ajax.php?action=getCourseExamsStDetailList"
;
var
response
=
request
.
PostAsync
(
url
,
content
);
var
sutHomeWorkResult
=
response
.
Result
.
Content
.
ReadAsStringAsync
().
Result
;
List
<
RB_Stu_HomeWork
>
list
=
new
();
List
<
RB_Stu_HomeWork
>
list
=
new
();
if
(!
string
.
IsNullOrWhiteSpace
(
sutHomeWorkResult
))
try
{
{
JObject
stuHomeRootObj
=
JObject
.
Parse
(
sutHomeWorkResult
);
var
response
=
request
.
PostAsync
(
url
,
content
);
if
(!
string
.
IsNullOrWhiteSpace
(
stuHomeRootObj
.
GetString
(
"data"
)))
var
sutHomeWorkResult
=
response
.
Result
.
Content
.
ReadAsStringAsync
().
Result
;
if
(!
string
.
IsNullOrWhiteSpace
(
sutHomeWorkResult
))
{
{
JObject
stuHome
DataObj
=
JObject
.
Parse
(
stuHomeRootObj
.
GetString
(
"data"
)
);
JObject
stuHome
RootObj
=
JObject
.
Parse
(
sutHomeWorkResult
);
if
(!
string
.
IsNullOrWhiteSpace
(
stuHome
DataObj
.
GetString
(
"examsD
ata"
)))
if
(!
string
.
IsNullOrWhiteSpace
(
stuHome
RootObj
.
GetString
(
"d
ata"
)))
{
{
J
Array
stuHomeArray
=
JArray
.
Parse
(
stuHomeDataObj
.
GetString
(
"examsD
ata"
));
J
Object
stuHomeDataObj
=
JObject
.
Parse
(
stuHomeRootObj
.
GetString
(
"d
ata"
));
if
(
stuHomeArray
!=
null
&&
stuHomeArray
.
Count
>
0
)
if
(
!
string
.
IsNullOrWhiteSpace
(
stuHomeDataObj
.
GetString
(
"examsData"
))
)
{
{
foreach
(
var
rootItem
in
stuHomeArray
)
JArray
stuHomeArray
=
JArray
.
Parse
(
stuHomeDataObj
.
GetString
(
"examsData"
));
if
(
stuHomeArray
!=
null
&&
stuHomeArray
.
Count
>
0
)
{
{
JObject
stuItemObj
=
JObject
.
Parse
(
rootItem
.
ToString
());
foreach
(
var
rootItem
in
stuHomeArray
)
if
(!
string
.
IsNullOrWhiteSpace
(
stuItemObj
.
GetString
(
"studentsDetail"
)))
{
{
J
Array
stuListArray
=
JArray
.
Parse
(
stuItemObj
.
GetString
(
"studentsDetail"
));
J
Object
stuItemObj
=
JObject
.
Parse
(
rootItem
.
ToString
(
));
if
(
stuListArray
!=
null
&&
stuListArray
.
Count
>
0
)
if
(
!
string
.
IsNullOrWhiteSpace
(
stuItemObj
.
GetString
(
"studentsDetail"
))
)
{
{
foreach
(
var
sItem
in
stuListArray
)
JArray
stuListArray
=
JArray
.
Parse
(
stuItemObj
.
GetString
(
"studentsDetail"
));
if
(
stuListArray
!=
null
&&
stuListArray
.
Count
>
0
)
{
{
JObject
lastObj
=
JObject
.
Parse
(
sItem
.
ToString
());
foreach
(
var
sItem
in
stuListArray
)
var
tempCream
=
lastObj
.
GetString
(
"scoreRate"
).
Replace
(
"%"
,
""
);
tempCream
=
tempCream
==
"-"
?
"0"
:
tempCream
;
var
tempStatus
=
lastObj
.
GetInt
(
"stStatus"
);
tempStatus
=
tempStatus
==
0
?
0
:
(
tempStatus
==
6
?
2
:
1
);
list
.
Add
(
new
RB_Stu_HomeWork
()
{
{
stu_homework_id
=
Int64
.
Parse
(
$"
{
homework_id
}{
lastObj
.
GetInt
(
"studentId"
)}
"
),
JObject
lastObj
=
JObject
.
Parse
(
sItem
.
ToString
());
admire
=
string
.
Empty
,
var
tempCream
=
lastObj
.
GetString
(
"scoreRate"
).
Replace
(
"%"
,
""
);
cancel
=
string
.
Empty
,
tempCream
=
tempCream
==
"-"
?
"0"
:
tempCream
;
correct
=
lastObj
.
GetDecimal
(
"correctSum"
),
var
tempStatus
=
lastObj
.
GetInt
(
"stStatus"
);
wrong
=
lastObj
.
GetInt
(
"mistakeSum"
),
tempStatus
=
tempStatus
==
0
?
0
:
(
tempStatus
==
6
?
2
:
1
);
course_id
=
courseId
,
list
.
Add
(
new
RB_Stu_HomeWork
()
is_cream
=
Convert
.
ToDecimal
(
tempCream
)>=
80
?
1
:
0
,
{
emend
=
0
,
stu_homework_id
=
Int64
.
Parse
(
$"
{
homework_id
}{
lastObj
.
GetInt
(
"studentId"
)}
"
),
homework_id
=
homework_id
,
admire
=
string
.
Empty
,
homework_share_key
=
string
.
Empty
,
cancel
=
string
.
Empty
,
is_draft
=
0
,
correct
=
lastObj
.
GetDecimal
(
"correctSum"
),
is_reform
=
0
,
wrong
=
lastObj
.
GetInt
(
"mistakeSum"
),
is_revised
=
1
,
course_id
=
courseId
,
is_startd
=
1
,
is_cream
=
Convert
.
ToDecimal
(
tempCream
)
>=
80
?
1
:
0
,
readover
=
string
.
Empty
,
emend
=
0
,
ref_time
=
ConvertHelper
.
UnixToDateTime
(
lastObj
.
GetInt
(
"endTime"
)),
homework_id
=
homework_id
,
comment
=
string
.
Empty
,
homework_share_key
=
string
.
Empty
,
reform
=
string
.
Empty
,
is_draft
=
0
,
school_uid
=
0
,
is_reform
=
0
,
score
=
lastObj
.
GetDecimal
(
"examScore"
)/
100
,
is_revised
=
1
,
score_p
=
Convert
.
ToDecimal
(
tempCream
)/
100
,
is_startd
=
1
,
score_type
=
5
,
readover
=
string
.
Empty
,
show_time
=
ConvertHelper
.
UnixToDateTime
(
lastObj
.
GetInt
(
"endTime"
)),
ref_time
=
ConvertHelper
.
UnixToDateTime
(
lastObj
.
GetInt
(
"endTime"
)),
status
=
tempStatus
,
comment
=
string
.
Empty
,
stu_homework_share_key
=
string
.
Empty
,
reform
=
string
.
Empty
,
student_account
=
lastObj
.
GetString
(
"studentAccount"
),
school_uid
=
0
,
student_name
=
lastObj
.
GetString
(
"studentName"
),
score
=
lastObj
.
GetDecimal
(
"examScore"
)
/
100
,
student_uid
=
lastObj
.
GetInt
(
"studentId"
),
score_p
=
Convert
.
ToDecimal
(
tempCream
)
/
100
,
th_account
=
m
.
Teacher_account
,
score_type
=
5
,
th_cancel
=
String
.
Empty
,
show_time
=
ConvertHelper
.
UnixToDateTime
(
lastObj
.
GetInt
(
"endTime"
)),
th_name
=
m
.
Teacher_name
,
status
=
tempStatus
,
th_num
=
1
,
stu_homework_share_key
=
string
.
Empty
,
th_time
=
DateTime
.
Now
,
student_account
=
lastObj
.
GetString
(
"studentAccount"
),
th_uid
=
m
.
Teacher_uid
,
student_name
=
lastObj
.
GetString
(
"studentName"
),
add_time
=
ConvertHelper
.
UnixToDateTime
(
lastObj
.
GetInt
(
"endTime"
)),
student_uid
=
lastObj
.
GetInt
(
"studentId"
),
update_time
=
ConvertHelper
.
UnixToDateTime
(
lastObj
.
GetInt
(
"endTime"
)),
th_account
=
m
.
Teacher_account
,
});
th_cancel
=
String
.
Empty
,
th_name
=
m
.
Teacher_name
,
th_num
=
1
,
th_time
=
DateTime
.
Now
,
th_uid
=
m
.
Teacher_uid
,
add_time
=
ConvertHelper
.
UnixToDateTime
(
lastObj
.
GetInt
(
"endTime"
)),
update_time
=
ConvertHelper
.
UnixToDateTime
(
lastObj
.
GetInt
(
"endTime"
)),
});
}
}
}
}
}
}
}
...
@@ -291,6 +308,10 @@ namespace EduSpider.Spiders.ClassInRule
...
@@ -291,6 +308,10 @@ namespace EduSpider.Spiders.ClassInRule
}
}
}
}
}
}
catch
(
Exception
ex
)
{
VTX
.
FW
.
Helper
.
LogHelper
.
WriteError
(
"QuestionManager_RunStuHomeWork"
,
ex
:
ex
);
}
if
(
list
!=
null
&&
list
.
Count
>
0
)
if
(
list
!=
null
&&
list
.
Count
>
0
)
{
{
stuHomeWorkRepository
.
BatchSetStuHomeWorkRepository
(
list
);
stuHomeWorkRepository
.
BatchSetStuHomeWorkRepository
(
list
);
...
...
EduSpider/Spiders/ClassInRule/StudentManager.cs
View file @
94d5dbd2
...
@@ -18,10 +18,14 @@ namespace EduSpider.Spiders.ClassInRule
...
@@ -18,10 +18,14 @@ namespace EduSpider.Spiders.ClassInRule
private
static
readonly
IStudentRepository
courseRepository
=
new
StudentRepository
();
private
static
readonly
IStudentRepository
courseRepository
=
new
StudentRepository
();
/// <summary>
/// 获取学生数据
/// </summary>
/// <param name="cookie"></param>
public
static
async
void
RunAsync
(
string
cookie
)
public
static
async
void
RunAsync
(
string
cookie
)
{
{
var
request
=
Utility
.
HttpHelper
.
GenerateHttp
(
cookie
);
var
request
=
Utility
.
HttpHelper
.
GenerateHttp
(
cookie
);
int
pageIndex
=
1
,
pageCount
=
1
,
pageSize
=
500
;
int
pageIndex
=
1
,
pageCount
=
1
,
pageSize
=
500
;
#
region
获取最大学生
ID
#
region
获取最大学生
ID
//更新账户
//更新账户
...
@@ -31,78 +35,81 @@ namespace EduSpider.Spiders.ClassInRule
...
@@ -31,78 +35,81 @@ namespace EduSpider.Spiders.ClassInRule
List
<
rb_account_hk
>
accountList
=
new
();
List
<
rb_account_hk
>
accountList
=
new
();
#
endregion
#
endregion
while
(
pageIndex
<=
pageCount
)
while
(
pageIndex
<=
pageCount
)
{
{
InfoHelper
.
WriteLine
(
$"正在查询第
{
pageIndex
}
-
{
pageSize
}
页学员信息"
);
InfoHelper
.
WriteLine
(
$"正在查询第
{
pageIndex
}
-
{
pageSize
}
页学员信息"
);
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RunAsync"
,
$"正在查询第
{
pageIndex
}
-
{
pageSize
}
页学员信息"
);
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RunAsync"
,
$"正在查询第
{
pageIndex
}
-
{
pageSize
}
页学员信息"
);
var
paramStr
=
$"page=
{
pageIndex
}
&perpage=
{
pageSize
}
&isdel=0"
;
var
paramStr
=
$"page=
{
pageIndex
}
&perpage=
{
pageSize
}
&isdel=0"
;
var
content
=
new
StringContent
(
paramStr
,
System
.
Text
.
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
var
content
=
new
StringContent
(
paramStr
,
System
.
Text
.
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
var
response
=
await
request
.
PostAsync
(
"https://console.eeo.cn/saasajax/student.ajax.php?action=getSchoolStudentListByPage"
,
content
);
try
var
resultStr
=
response
.
Content
.
ReadAsStringAsync
().
Result
??
string
.
Empty
;
var
result
=
resultStr
.
TryToJObject
();
if
(
result
.
flag
)
{
{
var
data
=
(
result
.
val
.
ContainsKey
(
"data"
)
?
result
.
val
[
"data"
]
:
new
JObject
())
as
JObject
;
var
response
=
await
request
.
PostAsync
(
"https://console.eeo.cn/saasajax/student.ajax.php?action=getSchoolStudentListByPage"
,
content
);
if
(
data
.
ContainsKey
(
"totalStudentNum"
))
{
var
resultStr
=
response
.
Content
.
ReadAsStringAsync
().
Result
??
string
.
Empty
;
var
result
=
resultStr
.
TryToJObject
();
#
region
更新
PageCount
if
(
result
.
flag
)
{
if
(
pageIndex
==
1
)
var
data
=
(
result
.
val
.
ContainsKey
(
"data"
)
?
result
.
val
[
"data"
]
:
new
JObject
())
as
JObject
;
if
(
data
.
ContainsKey
(
"totalStudentNum"
))
{
{
pageCount
=
(
int
)
Math
.
Ceiling
(
data
.
GetDecimal
(
"totalStudentNum"
)
/
pageSize
);
#
region
更新
PageCount
}
if
(
pageIndex
==
1
)
#
endregion
#
region
组装实体
var
stus
=
new
List
<
rb_student_hk
>();
var
stuArray
=
(
data
[
"studentList"
]
as
JArray
);
foreach
(
JObject
x
in
stuArray
)
{
stus
.
Add
(
new
rb_student_hk
()
{
{
AddTime
=
ConvertHelper
.
UnixToDateTime
(
x
.
GetString
(
"addTime"
)),
pageCount
=
(
int
)
Math
.
Ceiling
(
data
.
GetDecimal
(
"totalStudentNum"
)
/
pageSize
);
StudentAccount
=
x
.
GetString
(
"studentAccount"
),
}
Isdel
=
x
.
GetInt
(
"isdel"
,
0
),
#
endregion
IsGroup
=
x
.
GetInt
(
"isGroup"
,
0
),
StudId
=
x
.
GetInt
(
"studId"
,
0
),
Progress
=
x
.
GetString
(
"progress"
),
PublicResourceStatus
=
x
.
GetInt
(
"publicResourceStatus"
,
0
),
ServeState
=
x
.
GetInt
(
"serveState"
,
0
),
StudentName
=
x
.
GetString
(
"studentName"
),
StudentUid
=
x
.
GetInt
(
"studentUid"
,
0
),
Stuno
=
x
.
GetString
(
"stuno"
),
});
}
courseRepository
.
BatchSetStudent
(
stus
);
InfoHelper
.
WriteLine
(
$"已导入第
{
pageIndex
}
-
{
pageSize
}
页学员信息"
);
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RunAsync"
,
$"已导入第
{
pageIndex
}
-
{
pageSize
}
页学员信息"
);
#
endregion
#
region
写入账号
#
region
组装实体
if
(
stus
.
Any
(
x
=>
x
.
StudId
>
MaxStuId
))
{
var
stus
=
new
List
<
rb_student_hk
>();
foreach
(
var
item
in
stus
.
Where
(
x
=>
x
.
StudId
>
MaxStuId
))
var
stuArray
=
(
data
[
"studentList"
]
as
JArray
);
foreach
(
JObject
x
in
stuArray
)
{
{
accountList
.
Add
(
new
rb_accou
nt_hk
()
stus
.
Add
(
new
rb_stude
nt_hk
()
{
{
UniqueId
=
0
,
AddTime
=
ConvertHelper
.
UnixToDateTime
(
x
.
GetString
(
"addTime"
)),
Id
=
item
.
StudId
,
StudentAccount
=
x
.
GetString
(
"studentAccount"
),
Account
=
item
.
StudentAccount
,
Isdel
=
x
.
GetInt
(
"isdel"
,
0
),
AccountId
=
item
.
StudentUid
,
IsGroup
=
x
.
GetInt
(
"isGroup"
,
0
),
AccountType
=
Utility
.
Enum
.
AccountTypeEnum
.
Student
,
StudId
=
x
.
GetInt
(
"studId"
,
0
),
OpenId
=
""
,
Progress
=
x
.
GetString
(
"progress"
),
Password
=
DESHepler
.
Encrypt
(
item
.
StudentAccount
[^
6.
.]),
PublicResourceStatus
=
x
.
GetInt
(
"publicResourceStatus"
,
0
),
Status
=
0
,
ServeState
=
x
.
GetInt
(
"serveState"
,
0
),
UnionId
=
""
StudentName
=
x
.
GetString
(
"studentName"
),
StudentUid
=
x
.
GetInt
(
"studentUid"
,
0
),
Stuno
=
x
.
GetString
(
"stuno"
),
});
});
}
}
courseRepository
.
BatchSetStudent
(
stus
);
InfoHelper
.
WriteLine
(
$"已导入第
{
pageIndex
}
-
{
pageSize
}
页学员信息"
);
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RunAsync"
,
$"已导入第
{
pageIndex
}
-
{
pageSize
}
页学员信息"
);
#
endregion
#
region
写入账号
if
(
stus
.
Any
(
x
=>
x
.
StudId
>
MaxStuId
))
{
foreach
(
var
item
in
stus
.
Where
(
x
=>
x
.
StudId
>
MaxStuId
))
{
accountList
.
Add
(
new
rb_account_hk
()
{
UniqueId
=
0
,
Id
=
item
.
StudId
,
Account
=
item
.
StudentAccount
,
AccountId
=
item
.
StudentUid
,
AccountType
=
Utility
.
Enum
.
AccountTypeEnum
.
Student
,
OpenId
=
""
,
Password
=
DESHepler
.
Encrypt
(
item
.
StudentAccount
[^
6.
.]),
Status
=
0
,
UnionId
=
""
});
}
}
#
endregion
}
}
#
endregion
}
}
}
}
catch
(
Exception
ex
)
{
VTX
.
FW
.
Helper
.
LogHelper
.
WriteError
(
"StudentManager_RunAsync"
,
ex
:
ex
);
}
pageIndex
++;
pageIndex
++;
}
}
...
@@ -115,8 +122,6 @@ namespace EduSpider.Spiders.ClassInRule
...
@@ -115,8 +122,6 @@ namespace EduSpider.Spiders.ClassInRule
InfoHelper
.
WriteLine
(
"学员同步完成"
);
InfoHelper
.
WriteLine
(
"学员同步完成"
);
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RunAsync"
,
$"学员同步完成"
);
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RunAsync"
,
$"学员同步完成"
);
}
}
}
}
}
}
EduSpider/Spiders/ClassInRule/TeacherManager.cs
View file @
94d5dbd2
...
@@ -29,39 +29,45 @@ namespace EduSpider.Spiders.ClassInRule
...
@@ -29,39 +29,45 @@ namespace EduSpider.Spiders.ClassInRule
{
{
string
paramStr
=
string
.
Format
(
"page={0}&perpage={1}"
,
pageIndex
,
perpage
);
string
paramStr
=
string
.
Format
(
"page={0}&perpage={1}"
,
pageIndex
,
perpage
);
var
content
=
new
StringContent
(
paramStr
,
System
.
Text
.
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
var
content
=
new
StringContent
(
paramStr
,
System
.
Text
.
Encoding
.
UTF8
,
"application/x-www-form-urlencoded"
);
var
response
=
await
request
.
PostAsync
(
"https://console.eeo.cn/saasajax/teacher.ajax.php?action=getSchoolTeacherFullList"
,
content
);
try
var
result
=
response
.
Content
.
ReadAsStringAsync
().
Result
;
if
(!
string
.
IsNullOrWhiteSpace
(
result
))
{
{
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RunTeacher"
,
$"result:
{
result
}
"
);
var
response
=
await
request
.
PostAsync
(
"https://console.eeo.cn/saasajax/teacher.ajax.php?action=getSchoolTeacherFullList"
,
content
);
JObject
rootObj
=
JObject
.
Parse
(
result
)
;
var
result
=
response
.
Content
.
ReadAsStringAsync
().
Result
;
if
(!
string
.
IsNullOrWhiteSpace
(
r
ootObj
.
GetString
(
"data"
)
))
if
(!
string
.
IsNullOrWhiteSpace
(
r
esult
))
{
{
JObject
dataObj
=
JObject
.
Parse
(
rootObj
.
GetString
(
"data"
));
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RunTeacher"
,
$"result:
{
result
}
"
);
var
totalNum
=
dataObj
.
GetInt
(
"totalNum"
);
JObject
rootObj
=
JObject
.
Parse
(
result
);
string
rlist
=
dataObj
.
GetString
(
"list"
);
if
(!
string
.
IsNullOrWhiteSpace
(
rootObj
.
GetString
(
"data"
)))
if
(
pageIndex
==
1
)
{
{
if
(
totalNum
>
perpage
)
JObject
dataObj
=
JObject
.
Parse
(
rootObj
.
GetString
(
"data"
));
var
totalNum
=
dataObj
.
GetInt
(
"totalNum"
);
string
rlist
=
dataObj
.
GetString
(
"list"
);
if
(
pageIndex
==
1
)
{
{
if
(
totalNum
%
perpage
==
0
)
if
(
totalNum
>
perpage
)
{
{
pageCount
=
totalNum
/
perpage
;
if
(
totalNum
%
perpage
==
0
)
}
{
else
pageCount
=
totalNum
/
perpage
;
{
}
pageCount
=
(
totalNum
/
perpage
)
+
1
;
else
{
pageCount
=
(
totalNum
/
perpage
)
+
1
;
}
}
}
}
}
list
.
AddRange
(
ParseJson
(
rlist
));
}
}
}
list
.
AddRange
(
ParseJson
(
rlist
));
else
{
Console
.
WriteLine
(
"result"
,
result
);
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RunTeacher"
,
$"result:
{
result
}
"
);
}
}
}
}
else
catch
(
Exception
ex
)
{
{
Console
.
WriteLine
(
"result"
,
result
);
VTX
.
FW
.
Helper
.
LogHelper
.
WriteError
(
"RunTeacher"
,
ex
:
ex
);
VTX
.
FW
.
Helper
.
LogHelper
.
WriteInfo
(
"RunTeacher"
,
$"result:
{
result
}
"
);
}
}
if
(
pageIndex
==
pageCount
)
if
(
pageIndex
==
pageCount
)
{
{
...
...
EduSpider/Spiders/ICookiesManager.cs
deleted
100644 → 0
View file @
47041ac9
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Text
;
using
System.Threading.Tasks
;
namespace
TicketSpider.Spiders
{
public
interface
ICookiesManager
{
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment