Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def get_users():
- global month
- logging.info('Récupération des membres')
- if config.debug:
- progress = progressbar.NoProgressBar()
- else:
- progress = progressbar.ProgressBar(widgets=[progressbar.SimpleProgress('/'), ' ', progressbar.Bar("#","[","]"), progressbar.Percentage()], maxval=save.nbusers)
- progress.start()
- n = len(save.users)
- progress.update(n)
- ids = [i["id"] for i in save.users]
- d = PyQuery(url=config.rooturl+'/admin/index.forum?part=users_groups&sub=users&extended_admin=1&' + tid, opener=fa_opener)
- if "notgetmember_pic.forum?u=" in d.html():
- raise RuntimeError('Forum user page in "import protected" mode - cannot process users...')
- result = re.search('function do_pagination_start\(\)[^\}]*start = \(start > \d+\) \? (\d+) : start;[^\}]*start = \(start - 1\) \* (\d+);[^\}]*\}', d.text())
- try:
- pages = int(result.group(1))
- usersperpages = int(result.group(2))
- except:
- pages = 1
- usersperpages = 0
- currentpage = int(n/usersperpages)
- memberslastpage = save.nbusers % usersperpages
- logging.debug('Utilisateurs : %d pages de %d membres - starting from page %d', pages, usersperpages, currentpage)
- for page in range(currentpage, pages):
- pageNumber = page*usersperpages
- if page == pages-1 :
- usersperpages = memberslastpage # nombre de membres sur la dernière page
- if page >= 1:
- time.sleep(61);
- d = PyQuery(url=config.rooturl + '/admin/index.forum?part=users_groups&sub=users&extended_admin=1&start=' + str(pageNumber) + '&' + tid, opener=fa_opener)
- 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)
- if ("notgetmember_pic.forum?u=" in d.html() or "Liste des Utilisateurs" not in d.text()) :
- raise RuntimeError('Forum user page in "import proteced" mode - cannot process users...')
- alluserinthepage = 0
- for i in d('tbody tr'):
- if alluserinthepage == usersperpages:
- break
- e = PyQuery(i)
- addr = e("td a").eq(0).attr("href")
- if addr != "None":
- alluserinthepage += 1
- id = int(re.search("&u=(\d+)&", e("td a").eq(0).attr("href")).group(1))
- logging.debug('Récupération : membre %d', id)
- date = e("td").eq(3).text().split(" ")
- date = time.mktime(time.struct_time((int(date[2]),month[date[1]],int(date[0]),0,0,0,0,0,0)))
- lastvisit = e("td").eq(4).text()
- if lastvisit != "":
- lastvisit = lastvisit.split(" ")
- lastvisit = time.mktime(time.struct_time((int(lastvisit[2]),month[lastvisit[1]],int(lastvisit[0]),0,0,0,0,0,0)))
- else:
- lastvisit = 0
- if id not in ids:
- name = e("td a").eq(0).text()
- 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)})
- n += 1
- progress.update(n)
- else:
- logging.warning('L\'utilisateur %d a déjà été récupéré.', id)
- progress.end()
Advertisement
Add Comment
Please, Sign In to add comment