Exemple #1
0
 def __init__(self):
     try:
         self.db = MySQLdb.connect(host, username, password, database, charset="utf8")
     except MySQLdb.Error, e:
         try:
             error_message = "Error %d:%s" % (e.args[0], e.args[1])
         except IndexError:
             error_message = "MySQL Error:%s" % str(e)
         logging.warning(error_message)
         raise
Exemple #2
0
 def visit(self, url, post_data=None, referer=''):
     header = self.header
     if referer:
         header['Referer'] = referer
     if post_data:
         post_data = urllib.urlencode(post_data)
     req = urllib2.Request(url=url, headers=header, data=post_data)
     try:
         s = self.opener.open(req).read()
     except urllib2.URLError, e:
         logging.warning("Get HTML ERROR!!!" + str(e.reason))
         raise VisitError
Exemple #3
0
 def visit(self, url, post_data=None, referer=''):
     if self.refresh_time is not None and datetime.now() < self.refresh_time:
         sleep((self.refresh_time - datetime.now()).total_seconds())
         self.refresh_time = None
     s = super(OJAccess, self).visit(url, post_data, referer)
     if OJ_Decode[self.oj]:
         s = s.decode('gbk', 'ignore').encode('utf8')
     if NOT_Refresh[self.oj]:
         t = self.refresh(s)
         if t is not None:
             self.refresh_time = datetime.now() + timedelta(seconds=int(t))
             return self.visit(url, post_data, referer)
     if self.wrong_page(s):
         logging.warning("OJ Forbidden!!! html:\n" + s)
         raise VisitError
     return s
Exemple #4
0
 def save_img(self, url, problem_id=''):
     filename = url.split('/')[-1]
     path = os.path.join(STATIC_PATH, 'upload', self.oj, str(problem_id))
     make_dir(path)
     path = os.path.join(path, filename)
     if url[0:4] != 'http':
         if self.oj == 'hdu_std':
             url = OJ_Index['hdu'] + url
         else:
             url = OJ_Index[self.oj] + url
     try:
         urllib.urlretrieve(url, path)
     except:
         logging.warning("Get Image ERROR!!!")
     else:
         logging.info("Download image <%s> over" % (filename))
Exemple #5
0
 def login(self, cid=None):
     if cid is not None:
         url = Login_URL[self.oj] % cid
     else:
         url = Login_URL[self.oj]
     try:
         html = self.visit(url, self.postdata)
     except VisitError:
         logging.info("OJ:" + self.oj + " USER: "******" NOT Login!!!")
         return False
     if not self.judge_password(html):
         logging.warning("Login ERRER!!! No Such User!!!")
         return False
     else:
         if self.is_login(cid):
             logging.info("OJ:" + self.oj + " USER: "******" Logined")
             return True
         else:
             logging.info("OJ:" + self.oj + " USER: "******" NOT Login!!!")
             return False
Exemple #6
0
 def get_id(self):
     try:
         id = self.cursor.lastrowid
     except MySQLdb.Error, e:
         logging.warning('MySQL get_id ERROR!!! Error: %s' % str(e))
         raise MySQLQueryError
Exemple #7
0
 def query(self, sql):
     try:
         self.cursor.execute(sql)
     except MySQLdb.Error, e:
         logging.warning('MySQL query ERROR!!! Error: %s & SQL: %s' % (str(e), sql))
         raise MySQLQueryError
Exemple #8
0
 def update(self, sql):
     try:
         self.cursor.execute(sql)
     except MySQLdb.Error, e:
         logging.warning('MySQL update ERROR!!! Error: %s & SQL: %s' % (str(e), sql))
         return False