Guest User

LALF MathieuMa (forumactif-phpbb.py)

a guest
Jul 16th, 2014
435
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.46 KB | None | 0 0
  1. def get_users():
  2.     global month
  3.     logging.info('Récupération des membres')
  4.     if config.debug:
  5.         progress = progressbar.NoProgressBar()
  6.     else:
  7.         progress = progressbar.ProgressBar(widgets=[progressbar.SimpleProgress('/'), ' ', progressbar.Bar("#","[","]"), progressbar.Percentage()], maxval=save.nbusers)
  8.     progress.start()
  9.    
  10.     n = len(save.users)
  11.     progress.update(n)
  12.  
  13.     ids = [i["id"] for i in save.users]
  14.  
  15.     d = PyQuery(url=config.rooturl+'/admin/index.forum?part=users_groups&sub=users&extended_admin=1&' + tid, opener=fa_opener)
  16.  
  17.     if "notgetmember_pic.forum?u=" in d.html():
  18.         raise RuntimeError('Forum user page in "import protected" mode - cannot process users...')
  19.  
  20.     result = re.search('function do_pagination_start\(\)[^\}]*start = \(start > \d+\) \? (\d+) : start;[^\}]*start = \(start - 1\) \* (\d+);[^\}]*\}', d.text())
  21.  
  22.     try:
  23.         pages = int(result.group(1))
  24.         usersperpages = int(result.group(2))
  25.     except:
  26.         pages = 1
  27.         usersperpages = 0
  28.  
  29.     currentpage = int(n/usersperpages)
  30.        
  31.     memberslastpage = save.nbusers % usersperpages
  32.     logging.debug('Utilisateurs : %d pages de %d membres - starting from page %d', pages, usersperpages, currentpage)
  33.  
  34.     for page in range(currentpage, pages):
  35.         pageNumber = page*usersperpages
  36.         if page == pages-1 :
  37.             usersperpages = memberslastpage # nombre de membres sur la dernière page
  38.  
  39.         if page >= 1:
  40.             time.sleep(61);
  41.             d = PyQuery(url=config.rooturl + '/admin/index.forum?part=users_groups&sub=users&extended_admin=1&start=' + str(pageNumber) + '&' + tid, opener=fa_opener)
  42.             logging.debug('Récupération membre via url: %s', config.rooturl + '/admin/index.forum?part=users_groups&sub=users&extended_admin=1&start=' + str(pageNumber) + '&' + tid)
  43.  
  44.         if ("notgetmember_pic.forum?u=" in d.html() or "Liste des Utilisateurs" not in d.text()) :
  45.             raise RuntimeError('Forum user page in "import proteced" mode - cannot process users...')
  46.  
  47.         alluserinthepage = 0
  48.         for i in d('tbody tr'):
  49.             if alluserinthepage == usersperpages:
  50.                 break
  51.             e = PyQuery(i)
  52.             addr = e("td a").eq(0).attr("href")
  53.             if addr != "None":
  54.                 alluserinthepage += 1
  55.                 id = int(re.search("&u=(\d+)&", e("td a").eq(0).attr("href")).group(1))
  56.                 logging.debug('Récupération : membre %d', id)
  57.  
  58.                 date = e("td").eq(3).text().split(" ")
  59.                 date = time.mktime(time.struct_time((int(date[2]),month[date[1]],int(date[0]),0,0,0,0,0,0)))
  60.  
  61.                 lastvisit = e("td").eq(4).text()
  62.  
  63.                 if lastvisit != "":
  64.                     lastvisit = lastvisit.split(" ")
  65.                     lastvisit = time.mktime(time.struct_time((int(lastvisit[2]),month[lastvisit[1]],int(lastvisit[0]),0,0,0,0,0,0)))
  66.                 else:
  67.                     lastvisit = 0
  68.  
  69.                 if id not in ids:
  70.                     name = e("td a").eq(0).text()
  71.                     save.users.append({'id': id, 'newid': n, 'name': e("td a").eq(0).text(), 'mail': e("td a").eq(1).text(), 'posts': int(e("td").eq(2).text()), 'date': int(date), 'lastvisit': int(lastvisit)})
  72.                     n += 1
  73.                     progress.update(n)
  74.                 else:
  75.                     logging.warning('L\'utilisateur %d a déjà été récupéré.', id)
  76.  
  77.     progress.end()
Advertisement
Add Comment
Please, Sign In to add comment