def sendFriends(self): #发送好友列表 result=sql.GetData("select * from Friend where UserNumber='"+self.student[1]+"'") length=len(result) if length !=0: for item in result: stu=sql.GetData("select * from User where UserNumber='"+item[2]+"'")[0] self.sendLine("friendlist|||"+str(stu[1])+"|||"+str(stu[2])+"|||"+str(stu[4])+"|||"+str(stu[5]))
def sendMsg(self): result=sql.GetData("select * from Message where desnum='"+self.student[1]+"'") if not len(result)==0: for item in result: if item[3]=="2": self.sendFriends() stu=sql.GetData("select * from User where UserNumber='"+item[1]+"'") for one in stu: self.sendLine("friends|||add|||"+str(item[3])+"|||" +str(one[1])+"|||"+str(one[2])+"|||"+str(one[4])+"|||"+str(one[5])) sql.Delete("Message", "desnum", self.student[1]) else: print self.student[1]+"\tNo new message."
def sendTerm(self): #发送用户的学期列表,用户通过学期来获取课程信息 result=sql.GetData("select Term from Course where UserNumber="+str(self.student[1])) length=len(result) for one in result: self.sendLine("term|||"+str(one[0])) # self.sendLine("termend") self.sendCourse(result[length-2][0])
def send10News(self,page,newsclass): #发送10条新闻,客户端一页显示10条 ten=sql.GetData("SELECT * FROM News where NewsClassID="+newsclass+" order by id desc LIMIT "+str(int(page)*10)+ ",10") if len(ten)!=0: for item in ten: print item[0] self.sendLine("news|||"+str(item[0])+"|||"+str(item[1])+"|||"+str(item[4])) if page=="0": self.curnewsid[newsclass]=str(ten[0][0])
def searchFriend(self,name): result=sql.GetData("select * from User where UserName='******'") #搜索结果 #不存在 if len(result)==0: self.sendLine("friends|||search|||0") else: for item in result: self.sendLine(("friends|||search|||1|||"+item[1]+"|||"+item[2]+"|||"+item[4]+"|||"+item[5]).encode('UTF-8'))
def sendCourse(self,term): #发送课程 result=sql.GetData("select * from Course where UserNumber="+str(self.student[1])+" and Term="+term)[0] # self.sendLine("coursetable") # self.send(str(result[2])) # self.sendLine("yeah") # self.sendLine("coursetable|||"+str(term)+"|||0|||") # self.transport.write(str(result[2])) # print result[2] self.send("coursetable|||"+str(term)+"|||1|||",str(result[3]))
def sendNewsbyID(self,id,newsclass): #id=新闻id,newsclass=新闻类型 #按照id发送新闻 result=sql.GetData("select * from News where NewsClassID="+newsclass+" and id >'"+id+"' order by id desc ") if len(result) !=0: self.curnewsid[newsclass]=str(result[0][0]) for item in result: self.sendLine("newsupdated|||"+str(item[0])+"|||"+str(item[1])+"|||"+str(item[4])) else: print newsclass+"\tNo new news."
def addFriend(self,number,hostnum,flag): result=sql.GetData("select * from User where UserNumber='"+number+"'") if len(result)==0: self.sendLine("friends|||add|||0") else: #self.sendLine("friends|||add|||3") sql.Insert("Message", ["sourcenum","desnum","flag"], [hostnum,number,flag]) if flag=="2": #同意好友申请,数据库中增加记录 self.inserFriend(number) self.sendFriends()
def InsertMajorClass(Account,Password,Term): atry=actiontojwc2.Tojwc() get=atry.trytoconnect(Account,Password,Term) if get==0: atry.getContents() parser=atry.GetMajorHTML( "http://jwc.ouc.edu.cn:8080/ouc/SS010.do") content=actiontojwc2.GrabAllCourse(parser) #对有条件的查询等操作,要注意字符串中含有数字等情况, select="select * from CourseClass where ParentID='1' " result=SQLHelper.GetData(select) actiontojwc2.InsertClass(result, content) atry.logout() else : print get
def sendFriendCourse(self,number,term): #发送课程 result=sql.GetData("select * from Course where UserNumber="+str(number)+" and Term="+str(term))[0] # self.sendLine("friendcoursetable") self.send("friendcoursetable|||"+str(number)+"|||"+str(term)+"|||",str(result[3]))
def sendFriendTerm(self,number): result=sql.GetData("select Term from Course where UserNumber="+str(number)) for one in result: self.sendLine("friendterm|||"+str(one[0]))
def sendNewsContent(self,id,newsclass): #发送id的新闻内容 result=sql.GetData("select * from News where id="+id+" and NewsClassID="+newsclass)[0] # self.sendLine("newscontent") self.send("newscontent|||",str(result[2]))
def checkFirstLogin(self,num,pwd): #检查是否第一次登录(通过查数据库) count=sql.GetCountOne("User", "UserNumber", num) if count==0: print "第一次登录" self.firstlogin=True stu=actiontojwc.Connectjwc() result=stu.tryconnect(num, pwd, '20111') if result==0: #学期以后一定要设置!!! stu.getUserInfo() stu.logout() self.student=[] self.student.append("none") self.student.append(stu.num) self.student.append(stu.name) self.student.append(stu.pwd) self.student.append(stu.major) self.student.append(stu.grade) self.factory.num=self.factory.num+1 self.factory.users.append(stu.num) self.factory.ip.append(self.transport.getPeer().host) #抓取课程,存入数据库 Field=["UserNumber","UserName","UserPwd","UserMajor","UserGrade"] Values=[stu.num,stu.name,stu.pwd,stu.major,stu.grade] #抓取已选课程 # self.th.callInThread(self.grabCourse) # self.th.callInThread(self.grabScore) threads.deferToThread(self.grabCourse) threads.deferToThread(self.grabScore) #没有异常处理 sql.Insert("User", Field, Values) sql.Insert("Options",["UserNumber"],[stu.num]) self.sendLine("login|||success|||"+stu.num+"|||"+stu.name+"|||"+stu.major+"|||"+stu.grade) #在线用户增加一个,user中增加一个学号,ip增加一个ip self.factory.num=self.factory.num+1 self.factory.users.append(self.student[1]) self.factory.ip.append(self.transport.getPeer().host) self.sendLine("options|||1|||1|||1|||1") elif result==1: self.sendLine("login|||failure|||1") else : self.sendLine("login|||failure|||2") else:#不是第一次登录 print "不是第一次登录" stu=sql.GetData("select * from User where UserNumber="+num)[0] self.student=stu if self.student =="": self.sendLine("login|||failure|||1") elif self.student[3]!=pwd: self.sendLine("login|||failure|||1") else: datalog="login|||success|||"+self.student[1]+"|||"+self.student[2]+"|||"+self.student[4]+"|||"+self.student[5] #学号、姓名、专业、年级 self.sendLine(datalog.encode('UTF-8')) #在线用户增加一个,user中增加一个学号,ip增加一个ip self.factory.num=self.factory.num+1 self.factory.users.append(self.student[1]) self.factory.ip.append(self.transport.getPeer().host) #新学期开始 # if self.newtermstart==True: # threads.deferToThread() self.options=sql.GetData("select * from Options where UserNumber="+num)[0] #模块定制 dataopt="options|||"+self.options[2]+"|||"+self.options[3]+"|||"+self.options[4]+"|||"+self.options[5] self.sendLine(dataopt.encode('UTF-8'))
def updateScore(term): students = sql.GetData("select * from User") for stu in students: updateoneScore(stu[1], stu[3], term)
def updateCourse(term): students = sql.GetData("select * from User") a = 0 for stu in students: updateoneCourse(stu[1], stu[3], term)
def GetAllMajorCourse(Account,Password,Term): InsertMajorClass(Account,Password,Term); atry=actiontojwc2.Tojwc() academic="" department="" sepicalty="" get=atry.trytoconnect(Account,Password,Term) if get==0: print time.ctime()+"\t"+"抓取所有专业课---学期:"+Term try: atry.getContents() #获得专业课下的学院分类 select="select * from CourseClass where ParentID=1" result=SQLHelper.GetData(select) for i in range(len(result)): academic=result[i][0] #获得学院下的系分类 select1="select * from CourseClass where ParentID='"+result[i][0]+"'" result1=SQLHelper.GetData(select1) for j in range(len(result1)): department=result1[j][0] #获得系下的专业课分类 select2="select * from CourseClass where ParentID='"+result1[j][0]+"'" result2=SQLHelper.GetData(select2) for k in range(len(result2)): se=str(result2[k][0])#专业课分类号 major=str(result2[k][1])#专业课名称 sepicalty=str(se[4:5])#获取selSepicalty_select 传递字段 #print sepicalty+"--"+se #调用GetCourseGrade获取该专业课下的年级序列 grade=atry.GetCourseGrade(academic, department, sepicalty, "http://jwc.ouc.edu.cn:8080/ouc/SS010.do") if len(grade)>0: #print len(grade) for m in range(len(grade)): course=[]; html=""; #获取当前年级下的html内容 html=atry.GetMajorCourseContont(academic, department, sepicalty, str(grade[m]), "http://jwc.ouc.edu.cn:8080/ouc/SS010.do") #抓取课程信息 course=actiontojwc2.GrabMajorCourse(html) #判断课程信息序列是否为空序列,如果不为空的话就继续操作 if len(course)>0: #print len(course) #print "专业"+str(major)+str(grade[m]) for h in range(len(course)): #for t in range(len(course[h])): #print str(len(course[h])) #print str(course[h][t]) #判断课程是否已经存在于数据库中 ask=["CourseNumber","Grade"] answer=[str(course[h][0]),grade[m]] count=SQLHelper.GetCountMore("MajorCourse", ask,answer) if count==1: continue; else: #如果不存在的话进行插入数据操作 field=["CourseName","CourseNumber","ChooseNumber","TeacherName","CourseTime","XueShi","CourseScore","Money","SchoolHouse","PeopleNumber","Remark","Grade","Term","Academic"] value=[str(course[h][10]),str(course[h][0]),str(course[h][1]),str(course[h][2]),str(course[h][3]),str(course[h][4]),str(course[h][5]),str(course[h][6]),str(course[h][7]),str(course[h][8]),str(course[h][9]),str(grade[m]),Term,str(major)] insert=SQLHelper.Insert("MajorCourse",field ,value) if insert==1: print time.ctime()+"\t"+"ok" continue else: print time.ctime()+"\t"+"wrong" print time.ctime()+"\t"+"专业课抓取完成。" atry.logout() except Exception: atry.logout() print traceback.print_exc() return 3 else : print get