-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathCB_getOnlineAllModels3.py
69 lines (65 loc) · 2.46 KB
/
CB_getOnlineAllModels3.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# Chaturbate Anonymous Get Online All Models v.2.0.0 by horacio9a for Python 3.8.0
# coding: utf-8
import gevent, requests, sys, re, configparser
from threading import Thread
from queue import Queue
from bs4 import BeautifulSoup
Config = configparser.ConfigParser()
Config.read('config3.ini')
genders = re.sub(' ', '', Config.get('settings', 'genders')).split(",")
lastPage = {'female': 100, 'couple': 100, 'trans': 100, 'male': 100}
def getOnlineModels():
global lastPage
global q
global online
if not q.empty():
args = q.get()
page = args[0]
gender = args[1]
if page < lastPage[gender]:
attempt = 1
while attempt <= 3:
try:
timeout = gevent.Timeout(8)
timeout.start()
URL = "https://chaturbate.com/{gender}-cams/?page={page}".format(gender=gender.lower(), page=page)
result = requests.request('GET', URL)
result = result.text
soup = BeautifulSoup(result, 'html.parser')
if lastPage[gender] == 100:
lastPage[gender] = int(soup.findAll('a', {'class': 'endless_page_link'})[-2].string)
if int(soup.findAll('li', {'class': 'active'})[1].string) == page:
LIST = soup.findAll('ul', {'class': 'list'})[0]
models = LIST.find_all('div', {'class': 'title'})
for model in models:
online.append(model.find_all('a', href=True)[0].string.lower()[1:])
break
except gevent.Timeout:
attempt = attempt + 1
if attempt > 3:
break
def getModels():
workers = []
for gender in genders:
if gender == 'couple':
for i in range(1, 3):
q.put([i, gender])
else:
for i in range(1, 30):
q.put([i, gender])
while not q.empty():
for i in range(10):
t = Thread(target=getOnlineModels)
workers.append(t)
t.start()
for t in workers:
t.join()
if __name__ == '__main__':
q = Queue()
online = []
workers = []
getModels()
online = list(set(online))
for model in online:
online_all_model_list = model
print(online_all_model_list)