├── .gitignore
├── .idea
├── .gitignore
├── misc.xml
├── vcs.xml
├── inspectionProfiles
│ ├── profiles_settings.xml
│ └── Project_Default.xml
├── modules.xml
└── pornhub-download.iml
├── config.yaml
├── README.md
├── login.py
├── pornhub.py
└── requirements.txt
/.gitignore:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # 默认忽略的文件
2 | /shelf/
3 | /workspace.xml
4 | # 基于编辑器的 HTTP 客户端请求
5 | /httpRequests/
6 | # Datasource local storage ignored files
7 | /dataSources/
8 | /dataSources.local.xml
9 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/config.yaml:
--------------------------------------------------------------------------------
1 | cookie:
2 | login:
3 | password: ''
4 | username: ''
5 | proxy:
6 | http: http://localhost:7890
7 | https: http://localhost:7890
8 | rpc:
9 | token: ''
10 | url: http://locakhost:6800/rpc
11 |
--------------------------------------------------------------------------------
/.idea/inspectionProfiles/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/pornhub-download.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/.idea/inspectionProfiles/Project_Default.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # pornhub-download
2 |
3 | - 使用aria2-rpc下载
4 | - 使用clash代理,代理端口可自定
5 | - python3
6 | - 需要安装execjs pyaria2
7 |
8 | # 用法
9 | - 1、 去pornhub 抓取自己的cookie,粘贴到cookie.txt
10 | - 2、 找到一个心仪的演员,复制其主页地址
11 | - 3、 终端python3 pornhub.py
12 | - 4、aria2 rpc模式打开,默认端口6800,无密钥,如过有修改,在代码内自行修改
13 | - 5、 将主页地址,粘进去回车开始下载
14 |
15 | - 输入用户页面,既可下载该用户上传的全部免费视频
16 | - 包括三种:channels、model、star
17 | - 暂时没注意到其他用户类型,如有可以留言回复
18 |
19 |
20 | # 2021.10.27更新
21 | 适应新的js规则
22 |
23 | # 2021.11.1更新
24 | 增加延迟,减少被ban几率
25 |
26 | # 2022.7.28 更新
27 | - 优化代码,变量名称,增加可读性
28 | - 增加requirements.txt
29 | - 增加uag.txt
30 |
31 |
32 | # 2022.7.29 更新
33 | - 增加更多user-agent 随机选择
34 | - 增加LOGO
35 |
36 | # 2022.8.31 更新
37 | - 用httpx替换requests,从而支持http2
38 |
39 | # 2022.11.3 更新
40 | - 使用yaml保存信息
41 | - 增加login.py,通过在cookei.yaml中设置usernam 和password 即可登录
42 | - 登录过程中可能会遇到机器验证,需在p站登录通过验证后即可
43 | - 之后即可利用保存在yaml里的信息,直接使用downloader
44 |
45 | # 2024.11.24 更新
46 | - 使用curl_cffi替换httpx
47 | - 更新videourl获取方式
48 |
49 | # 2024.11.28 更新
50 | - 将proxy,rpc都集中和cookie放在一起,以方便修改配置,将配置文件重名为config.yaml
--------------------------------------------------------------------------------
/login.py:
--------------------------------------------------------------------------------
1 | import re
2 | from urllib.parse import quote
3 |
4 | import httpx
5 | import requests.utils as rus
6 | import yaml
7 | from curl_cffi import requests
8 |
9 |
10 | lag = 'www'
11 | h = {
12 | 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8',
13 | 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36 Edg/105.0.1343.53',
14 | }
15 | config = yaml.load(open('config.yaml'), yaml.Loader)
16 | proxy = config['proxy']
17 | res = requests.Session(proxies=proxy, timeout=5, headers=h)
18 |
19 |
20 |
21 | def login():
22 | url = 'https://cn.pornhub.com/'
23 | s = res.get(url).text
24 | token = re.findall('token\s*?= "([^"]+)"', s)[0]
25 | redirect = re.findall('login\?redirect=([^"]+)"', s)[0]
26 | url2 = 'https://cn.pornhub.com/front/authenticate'
27 | d = f'redirect={redirect}&user_id=&intended_action=&token={token}&from=pc_login_modal_%3Aindex&taste_profile=&username={config["login"]["username"]}&password={quote(config["login"]["password"])}&remember_me=on'
28 | res.post(url2,data=d)
29 | cookie = res.cookies.jar
30 | cookie_dic = rus.dict_from_cookiejar(cookie)
31 | config.update({'cookie': cookie_dic})
32 | w = open('config.yaml', 'w+')
33 | yaml.dump(config, w)
34 |
35 |
36 | login()
37 |
--------------------------------------------------------------------------------
/pornhub.py:
--------------------------------------------------------------------------------
1 | import json
2 | import httpx
3 | import re
4 | import time
5 | from lxml import etree
6 | import pyaria2
7 | import random
8 | import yaml
9 | from curl_cffi import requests
10 |
11 | c = yaml.load(open('config.yaml'), yaml.Loader)
12 | rpc = pyaria2.Aria2RPC(url=c['rpc']['url'],token=c['rpc']['token'])
13 | lag = 'www'
14 | dic = {}
15 | cookie = ''
16 | for i in c['cookie']:
17 | cookie += f'{i}={c["cookie"][i]};'
18 |
19 | user_agents = open('uag.txt', 'r').read().split('\n')
20 | user_agent = random.choice(user_agents)
21 |
22 | h = {
23 | 'user-agent': user_agent,
24 | 'cookie': cookie,
25 | }
26 |
27 | proxy = c['proxy'] # 我这里clash端口7890,v2ray 端口8001
28 |
29 | res = requests.Session(proxies=proxy, timeout=5, headers=h)
30 |
31 | LOGO = '''
32 |
33 | ___ _
34 | / _ \ ___ _ __ _ __ /\ /\ _ _ | |__
35 | / /_)// _ \ | '__|| '_ \ / /_/ /| | | || '_ \
36 | / ___/| (_) || | | | | |/ __ / | |_| || |_) |
37 | \/ \___/ |_| |_| |_|\/ /_/ \__,_||_.__/
38 |
39 | by laowei
40 | '''
41 |
42 |
43 | def download(channels, video_url, name):
44 | options = {
45 | 'http-proxy': proxy['http'],
46 | 'https-proxy': proxy['https'],
47 | 'out': channels + '/' + name
48 | } # aria2 设置梯子
49 | rpc.addUri([video_url], options)
50 |
51 |
52 | def channels_list(channels, page):
53 | url = f'https://{lag}.pornhub.com/channels/{channels}/videos?o=ra&page={page}'
54 | s = res.get(url).text
55 | html = etree.HTML(s)
56 | view_keys = html.xpath('//ul[@class="videos row-5-thumbs videosGridWrapper"]/li/@data-video-vkey')
57 | names = html.xpath('//ul[@class="videos row-5-thumbs videosGridWrapper"]/li/div/div[3]/span/a/@title')
58 | for i, j in enumerate(view_keys):
59 | get_video(channels, j, names[i])
60 | print(j, 'ok')
61 | return len(view_keys)
62 |
63 |
64 | def star_list(pornstar, page):
65 | url = f'https://{lag}.pornhub.com/pornstar/{pornstar}/videos/upload?page={page}'
66 | s = res.get(url).text
67 | html = etree.HTML(s)
68 | view_keys = html.xpath('//ul[@class="videos row-5-thumbs"]/li/@data-video-vkey')
69 | names = html.xpath('//ul[@class="videos row-5-thumbs"]/li/div/div[3]/span/a/@title')
70 | for i, j in enumerate(view_keys):
71 | get_video(pornstar, j, names[i])
72 | print(j, 'ok')
73 | return len(view_keys)
74 |
75 |
76 | def model_list(models, page):
77 | url = f'https://{lag}.pornhub.com/model/{models}/videos?page={page}'
78 | s = res.get(url).text
79 | html = etree.HTML(s)
80 | view_keys = html.xpath('//ul[@id="mostRecentVideosSection"]/li/@data-video-vkey')
81 | names = html.xpath('//ul[@id="mostRecentVideosSection"]/li/div/div[3]/span/a/@title')
82 | for i, j in enumerate(view_keys):
83 | get_video(models, j, names[i])
84 | print(j, 'ok')
85 | return len(view_keys)
86 |
87 |
88 | def get_video(channels, view_key, name):
89 | url = f'https://{lag}.pornhub.com/view_video.php?viewkey={view_key}'
90 | try:
91 | s = res.get(url).text
92 | json_data = re.findall('var flashvars_\d+ = (\{.*?});', s)[0]
93 | urls = json.loads(json_data)['mediaDefinitions']
94 | nul = urls[-1]['videoUrl']
95 | video_url = ''
96 | count = 0
97 | while video_url == '':
98 | video_url = res.get(nul).json()[count - 1]['videoUrl']
99 | count = count - 1
100 | if count < -3:
101 | break
102 |
103 | download(channels, video_url, name + '.mp4')
104 | time.sleep(2)
105 | except Exception as err:
106 | print(err)
107 | time.sleep(2)
108 | pass
109 |
110 |
111 | def chanel(channels):
112 | count = 36
113 | page = 1
114 | while count == 36:
115 | count = channels_list(channels, page)
116 | page += 1
117 |
118 |
119 | def star(pornstar):
120 | count = 40
121 | page = 1
122 | while count == 40:
123 | count = star_list(pornstar, page)
124 | page += 1
125 |
126 |
127 | def model(models):
128 | count = 40
129 | page = 1
130 | while count == 40:
131 | count = model_list(models, page)
132 | page += 1
133 |
134 |
135 | if __name__ == '__main__':
136 | print(LOGO)
137 | input_address = input('地址').split('/')
138 | if input_address[3] == 'model':
139 | model(input_address[4])
140 | elif input_address[3] == 'pornstar':
141 | star(input_address[4])
142 | elif input_address[3] == 'channels':
143 | chanel(input_address[4])
144 |
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | about-time==3.1.1
2 | absl-py==1.1.0
3 | adbutils==1.2.15
4 | addict==2.4.0
5 | aiohttp==3.8.4
6 | aiosignal==1.3.1
7 | albumentations==1.3.0
8 | alembic==1.14.0
9 | alive-progress==2.4.1
10 | altgraph==0.17.3
11 | amqp==5.1.1
12 | aniso8601==9.0.1
13 | anyio==3.6.1
14 | AnyQt==0.2.0
15 | apkutils2==1.0.0
16 | appdirs==1.4.4
17 | AppKit==0.2.8
18 | appnope==0.1.4
19 | APScheduler==3.7.0
20 | argon2-cffi==21.3.0
21 | argon2-cffi-bindings==21.2.0
22 | arrow==1.2.3
23 | asgiref==3.7.2
24 | asn1==2.6.0
25 | astor==0.8.1
26 | asttokens==2.0.5
27 | astunparse==1.6.3
28 | async-generator==1.10
29 | async-timeout==4.0.2
30 | attrs==24.2.0
31 | Automat==24.8.1
32 | backcall==0.2.0
33 | backports.zoneinfo==0.2.1
34 | baidu-aip==4.16.6
35 | basicsr==1.4.2
36 | bcrypt==3.2.2
37 | beautifulsoup4==4.12.3
38 | bencoder.pyx==3.0.0
39 | better-exceptions==0.3.3
40 | binaryornot==0.4.4
41 | bitarray==3.0.0
42 | bleach==6.1.0
43 | blinker==1.4
44 | boto3==1.35.68
45 | botocore==1.35.68
46 | bottle==0.12.25
47 | Brotli==1.0.9
48 | bs4==0.0.1
49 | cachetools==5.3.0
50 | certifi==2024.8.30
51 | cffi==1.15.0
52 | chardet==5.2.0
53 | charset-normalizer==2.0.12
54 | cigam==0.0.3
55 | click==8.1.3
56 | clipboard==0.0.4
57 | cloudscraper==1.2.69
58 | colorama==0.4.6
59 | coloredlogs==15.0.1
60 | commonmark==0.9.1
61 | comtypes==1.1.11
62 | constantly==15.1.0
63 | cookiecutter==2.1.1
64 | coverage==7.2.5
65 | crawlab==0.1.0a8
66 | crochet==2.0.0
67 | cryptography==36.0.2
68 | cssselect==1.1.0
69 | curl_cffi==0.7.3
70 | customtkinter==5.1.3
71 | cycler==0.11.0
72 | Cython==3.0.11
73 | darkdetect==0.8.0
74 | DataRecorder==3.4.14
75 | DBUtils==3.1.0
76 | ddddocr==1.4.3
77 | debtcollector==2.5.0
78 | debugpy==1.6.0
79 | decorator==5.1.1
80 | deepl-translate==1.2.0
81 | defusedxml==0.7.1
82 | Deprecated==1.2.13
83 | deprecation==2.1.0
84 | dirscan==0.9
85 | dirsearch==0.4.3.post1
86 | distlib==0.3.6
87 | Django==4.2.6
88 | django-apscheduler==0.6.0
89 | django-cors-headers==3.7.0
90 | djangorestframework==3.13.1
91 | dnspython==2.2.1
92 | docopt==0.6.2
93 | docutils==0.19
94 | dogpile.cache==1.1.8
95 | DownloadKit==2.0.0
96 | DrissionPage==4.0.4.23
97 | easydict==1.10
98 | easygui==0.98.3
99 | ecdsa==0.18.0
100 | EditorConfig==0.12.4
101 | elementpath==3.0.2
102 | entrypoints==0.4
103 | enum-compat==0.0.3
104 | et-xmlfile==1.1.0
105 | eventlet==0.33.2
106 | exceptiongroup==1.1.1
107 | executing==0.8.3
108 | extras==1.0.0
109 | Fabric3==1.14.post1
110 | facexlib==0.3.0
111 | fake-useragent==1.1.1
112 | fasteners==0.18
113 | fastjsonschema==2.15.3
114 | feapder==1.7.6
115 | feedparser==6.0.10
116 | filelock==3.12.0
117 | filterpy==1.4.5
118 | fixtures==4.0.1
119 | flake8==6.0.0
120 | Flask==2.0.3
121 | Flask-Compress==1.12
122 | Flask-RESTful==0.3.10
123 | Flask-SQLAlchemy==2.5.1
124 | flatbuffers==23.5.26
125 | flet==0.4.2
126 | flet-core==0.4.2
127 | fonttools==4.33.3
128 | frida==16.1.8
129 | frida-dexdump==2.0.1
130 | frida-tools==12.3.0
131 | frozenlist==1.3.3
132 | func-timeout==4.3.5
133 | furl==2.1.3
134 | future==0.18.3
135 | futurist==2.4.1
136 | gast==0.4.0
137 | gdown==4.7.1
138 | gerapy==0.9.10
139 | gevent==21.12.0
140 | gfpgan==1.3.8
141 | google-auth==2.19.1
142 | google-auth-oauthlib==1.0.0
143 | google-pasta==0.2.0
144 | grapheme==0.6.0
145 | greenlet==1.1.2
146 | grpcio==1.54.2
147 | gunicorn==19.9.0
148 | h11==0.14.0
149 | h2==4.1.0
150 | h5py==3.7.0
151 | hexdump==3.3
152 | hpack==4.0.0
153 | httpcore==0.18.0
154 | httpx==0.25.0
155 | humanfriendly==10.0
156 | hyperframe==6.0.1
157 | hyperlink==21.0.0
158 | idna==2.10
159 | imageio==2.31.1
160 | imbalanced-learn==0.9.1
161 | imblearn==0.0
162 | img2pdf==0.4.4
163 | importlib-metadata==4.11.4
164 | importlib-resources==5.8.0
165 | incremental==24.7.2
166 | influxdb==5.3.1
167 | iniconfig==2.0.0
168 | insightface==0.7.3
169 | integrate==1.3.0
170 | ipykernel==6.15.0
171 | ipython==8.4.0
172 | ipython-genutils==0.2.0
173 | ipywidgets==7.7.0
174 | iso8601==1.1.0
175 | itemadapter==0.6.0
176 | itemloaders==1.0.4
177 | itsdangerous==2.1.2
178 | jax==0.4.13
179 | jeb==2.0.0
180 | jedi==0.18.1
181 | jellyfin-apiclient-python==1.8.1
182 | Jinja2==3.1.4
183 | jinja2-time==0.2.0
184 | jmespath==1.0.1
185 | jnitrace==3.3.1
186 | joblib==1.1.0
187 | jsbeautifier==1.14.7
188 | jsonschema==4.6.0
189 | jupyter==1.0.0
190 | jupyter-client==7.3.4
191 | jupyter-console==6.4.3
192 | jupyter-core==4.10.0
193 | jupyterlab-pygments==0.2.2
194 | jupyterlab-widgets==1.1.0
195 | kaitaistruct==0.9
196 | keras==2.13.1
197 | Keras-Preprocessing==1.1.2
198 | keystone==22.0.0
199 | keystoneauth1==5.1.0
200 | keystonemiddleware==10.1.0
201 | Kivy==2.1.0
202 | Kivy-Garden==0.1.5
203 | kivy-ios==2022.7.19
204 | kiwisolver==1.4.3
205 | kombu==5.2.4
206 | langid==1.1.6
207 | latex2mathml==3.77.0
208 | lazy_loader==0.2
209 | ldap3==2.9.1
210 | libclang==14.0.1
211 | lightgbm==3.3.2
212 | llvmlite==0.40.0
213 | lmdb==1.4.1
214 | logparser==0.8.2
215 | loguru==0.7.0
216 | lxml==4.9.2
217 | lz4==4.0.2
218 | macholib==1.16.2
219 | Mako==1.2.4
220 | Markdown==3.3.7
221 | MarkupSafe==2.1.1
222 | matplotlib==3.5.2
223 | matplotlib-inline==0.1.3
224 | mccabe==0.7.0
225 | mistune==0.8.4
226 | mitmproxy==8.0.0
227 | ml-dtypes==0.2.0
228 | mock==5.0.2
229 | modulegraph==0.19.3
230 | mpmath==1.2.1
231 | msgpack==1.0.4
232 | multidict==6.0.4
233 | nbclient==0.6.4
234 | nbconvert==6.5.0
235 | nbformat==5.4.0
236 | ndg-httpsclient==0.5.1
237 | nest-asyncio==1.5.5
238 | netaddr==0.8.0
239 | netifaces==0.11.0
240 | networkx==3.1
241 | notebook==6.4.12
242 | ntlm-auth==1.5.0
243 | numba==0.57.0
244 | numpy==1.23.5
245 | oauthlib==3.2.2
246 | onnx==1.14.0
247 | onnxruntime==1.15.0
248 | openai==0.27.0
249 | opencv-contrib-python-headless==4.7.0.68
250 | opencv-python==4.7.0.72
251 | opencv-python-headless==4.7.0.72
252 | opennsfw2==0.10.2
253 | openpyxl==3.1.2
254 | openstep-parser==1.5.4
255 | opt-einsum==3.3.0
256 | orderedmultidict==1.0.1
257 | os-service-types==1.7.0
258 | oshash==0.1.1
259 | oslo.cache==3.3.0
260 | oslo.concurrency==5.0.1
261 | oslo.config==9.0.0
262 | oslo.context==5.0.0
263 | oslo.db==12.2.0
264 | oslo.i18n==5.1.0
265 | oslo.log==5.0.2
266 | oslo.messaging==14.0.0
267 | oslo.metrics==0.5.0
268 | oslo.middleware==5.0.0
269 | oslo.policy==4.0.0
270 | oslo.serialization==5.0.0
271 | oslo.service==3.0.0
272 | oslo.upgradecheck==2.0.0
273 | oslo.utils==6.1.0
274 | osprofiler==3.4.3
275 | outcome==1.2.0
276 | packaging==21.3
277 | paddle-bfloat==0.1.2
278 | paddlepaddle==2.3.0
279 | pandas==1.4.3
280 | pandocfilters==1.5.0
281 | paramiko==2.11.0
282 | parse==1.19.0
283 | parsel==1.6.0
284 | parso==0.8.3
285 | passlib==1.7.4
286 | Paste==3.10.1
287 | PasteDeploy==3.0.1
288 | pbr==5.11.0
289 | pbxproj==3.4.3
290 | pexpect==4.8.0
291 | pickleshare==0.7.5
292 | pikepdf==5.4.0
293 | Pillow==9.4.0
294 | ping3==4.0.4
295 | pip-review==1.3.0
296 | pipreqs==0.4.11
297 | platformdirs==3.5.1
298 | playsound==1.3.0
299 | plotly==5.14.1
300 | pluggy==1.0.0
301 | pocx==0.2.2
302 | pornhubapi==0.1.0
303 | prettytable==3.5.0
304 | priority==1.3.0
305 | prometheus-client==0.17.1
306 | prompt-toolkit==3.0.29
307 | Protego==0.2.1
308 | protobuf==4.23.2
309 | psutil==5.9.5
310 | ptyprocess==0.7.0
311 | publicsuffix2==2.20191221
312 | pure-eval==0.2.2
313 | py==1.11.0
314 | py2app==0.28.5
315 | pyaes==1.6.1
316 | pyaria2==0.1.1
317 | pyasn1==0.4.8
318 | pyasn1-modules==0.2.8
319 | pyautocad==0.2.0
320 | pycadf==3.1.1
321 | pycairo==1.21.0
322 | pycodestyle==2.10.0
323 | pycparser==2.21
324 | pycrypto==2.6.1
325 | pycryptodome==3.15.0
326 | PyDispatcher==2.0.7
327 | pyee==8.2.2
328 | pyelftools==0.30
329 | PyExecJS==1.5.1
330 | pyfiglet==0.8.post1
331 | pyflakes==3.0.1
332 | PyForms==3.0.0
333 | pygame==2.1.2
334 | Pygments==2.12.0
335 | PyGObject==3.42.2
336 | pyimg4==0.6.2
337 | pyinstaller==5.5
338 | pyinstaller-hooks-contrib==2022.10
339 | PyJWT==2.6.0
340 | pyliblzfse==0.4.1
341 | pylzss==0.3.1
342 | pymongo==4.1.1
343 | PyMySQL==1.1.1
344 | PyNaCl==1.5.0
345 | pyobjc==8.5
346 | pyobjc-core==8.5
347 | pyobjc-framework-Accessibility==8.5
348 | pyobjc-framework-Accounts==8.5
349 | pyobjc-framework-AddressBook==8.5
350 | pyobjc-framework-AdServices==8.5
351 | pyobjc-framework-AdSupport==8.5
352 | pyobjc-framework-AppleScriptKit==8.5
353 | pyobjc-framework-AppleScriptObjC==8.5
354 | pyobjc-framework-ApplicationServices==8.5
355 | pyobjc-framework-AppTrackingTransparency==8.5
356 | pyobjc-framework-AudioVideoBridging==8.5
357 | pyobjc-framework-AuthenticationServices==8.5
358 | pyobjc-framework-AutomaticAssessmentConfiguration==8.5
359 | pyobjc-framework-Automator==8.5
360 | pyobjc-framework-AVFoundation==8.5
361 | pyobjc-framework-AVKit==8.5
362 | pyobjc-framework-BusinessChat==8.5
363 | pyobjc-framework-CalendarStore==8.5
364 | pyobjc-framework-CallKit==8.5
365 | pyobjc-framework-CFNetwork==8.5
366 | pyobjc-framework-ClassKit==8.5
367 | pyobjc-framework-CloudKit==8.5
368 | pyobjc-framework-Cocoa==8.5
369 | pyobjc-framework-Collaboration==8.5
370 | pyobjc-framework-ColorSync==8.5
371 | pyobjc-framework-Contacts==8.5
372 | pyobjc-framework-ContactsUI==8.5
373 | pyobjc-framework-CoreAudio==8.5
374 | pyobjc-framework-CoreAudioKit==8.5
375 | pyobjc-framework-CoreBluetooth==8.5
376 | pyobjc-framework-CoreData==8.5
377 | pyobjc-framework-CoreHaptics==8.5
378 | pyobjc-framework-CoreLocation==8.5
379 | pyobjc-framework-CoreMedia==8.5
380 | pyobjc-framework-CoreMediaIO==8.5
381 | pyobjc-framework-CoreMIDI==8.5
382 | pyobjc-framework-CoreML==8.5
383 | pyobjc-framework-CoreMotion==8.5
384 | pyobjc-framework-CoreServices==8.5
385 | pyobjc-framework-CoreSpotlight==8.5
386 | pyobjc-framework-CoreText==8.5
387 | pyobjc-framework-CoreWLAN==8.5
388 | pyobjc-framework-CryptoTokenKit==8.5
389 | pyobjc-framework-DataDetection==8.5
390 | pyobjc-framework-DeviceCheck==8.5
391 | pyobjc-framework-DictionaryServices==8.5
392 | pyobjc-framework-DiscRecording==8.5
393 | pyobjc-framework-DiscRecordingUI==8.5
394 | pyobjc-framework-DiskArbitration==8.5
395 | pyobjc-framework-DVDPlayback==8.5
396 | pyobjc-framework-EventKit==8.5
397 | pyobjc-framework-ExceptionHandling==8.5
398 | pyobjc-framework-ExecutionPolicy==8.5
399 | pyobjc-framework-ExternalAccessory==8.5
400 | pyobjc-framework-FileProvider==8.5
401 | pyobjc-framework-FileProviderUI==8.5
402 | pyobjc-framework-FinderSync==8.5
403 | pyobjc-framework-FSEvents==8.5
404 | pyobjc-framework-GameCenter==8.5
405 | pyobjc-framework-GameController==8.5
406 | pyobjc-framework-GameKit==8.5
407 | pyobjc-framework-GameplayKit==8.5
408 | pyobjc-framework-ImageCaptureCore==8.5
409 | pyobjc-framework-IMServicePlugIn==8.5
410 | pyobjc-framework-InputMethodKit==8.5
411 | pyobjc-framework-InstallerPlugins==8.5
412 | pyobjc-framework-InstantMessage==8.5
413 | pyobjc-framework-Intents==8.5
414 | pyobjc-framework-IntentsUI==8.5
415 | pyobjc-framework-IOSurface==8.5
416 | pyobjc-framework-iTunesLibrary==8.5
417 | pyobjc-framework-KernelManagement==8.5
418 | pyobjc-framework-LatentSemanticMapping==8.5
419 | pyobjc-framework-LaunchServices==8.5
420 | pyobjc-framework-libdispatch==8.5
421 | pyobjc-framework-LinkPresentation==8.5
422 | pyobjc-framework-LocalAuthentication==8.5
423 | pyobjc-framework-LocalAuthenticationEmbeddedUI==8.5
424 | pyobjc-framework-MailKit==8.5
425 | pyobjc-framework-MapKit==8.5
426 | pyobjc-framework-MediaAccessibility==8.5
427 | pyobjc-framework-MediaLibrary==8.5
428 | pyobjc-framework-MediaPlayer==8.5
429 | pyobjc-framework-MediaToolbox==8.5
430 | pyobjc-framework-Metal==8.5
431 | pyobjc-framework-MetalKit==8.5
432 | pyobjc-framework-MetalPerformanceShaders==8.5
433 | pyobjc-framework-MetalPerformanceShadersGraph==8.5
434 | pyobjc-framework-MetricKit==8.5
435 | pyobjc-framework-MLCompute==8.5
436 | pyobjc-framework-ModelIO==8.5
437 | pyobjc-framework-MultipeerConnectivity==8.5
438 | pyobjc-framework-NaturalLanguage==8.5
439 | pyobjc-framework-NetFS==8.5
440 | pyobjc-framework-Network==8.5
441 | pyobjc-framework-NetworkExtension==8.5
442 | pyobjc-framework-NotificationCenter==8.5
443 | pyobjc-framework-OpenDirectory==8.5
444 | pyobjc-framework-OSAKit==8.5
445 | pyobjc-framework-OSLog==8.5
446 | pyobjc-framework-PassKit==8.5
447 | pyobjc-framework-PencilKit==8.5
448 | pyobjc-framework-Photos==8.5
449 | pyobjc-framework-PhotosUI==8.5
450 | pyobjc-framework-PreferencePanes==8.5
451 | pyobjc-framework-PushKit==8.5
452 | pyobjc-framework-Quartz==8.5
453 | pyobjc-framework-QuickLookThumbnailing==8.5
454 | pyobjc-framework-ReplayKit==8.5
455 | pyobjc-framework-SafariServices==8.5
456 | pyobjc-framework-SceneKit==8.5
457 | pyobjc-framework-ScreenCaptureKit==8.5
458 | pyobjc-framework-ScreenSaver==8.5
459 | pyobjc-framework-ScreenTime==8.5
460 | pyobjc-framework-ScriptingBridge==8.5
461 | pyobjc-framework-SearchKit==8.5
462 | pyobjc-framework-Security==8.5
463 | pyobjc-framework-SecurityFoundation==8.5
464 | pyobjc-framework-SecurityInterface==8.5
465 | pyobjc-framework-ServiceManagement==8.5
466 | pyobjc-framework-ShazamKit==8.5
467 | pyobjc-framework-Social==8.5
468 | pyobjc-framework-SoundAnalysis==8.5
469 | pyobjc-framework-Speech==8.5
470 | pyobjc-framework-SpriteKit==8.5
471 | pyobjc-framework-StoreKit==8.5
472 | pyobjc-framework-SyncServices==8.5
473 | pyobjc-framework-SystemConfiguration==8.5
474 | pyobjc-framework-SystemExtensions==8.5
475 | pyobjc-framework-UniformTypeIdentifiers==8.5
476 | pyobjc-framework-UserNotifications==8.5
477 | pyobjc-framework-UserNotificationsUI==8.5
478 | pyobjc-framework-VideoSubscriberAccount==8.5
479 | pyobjc-framework-VideoToolbox==8.5
480 | pyobjc-framework-Virtualization==8.5
481 | pyobjc-framework-Vision==8.5
482 | pyobjc-framework-WebKit==8.5
483 | PyOpenGL==3.1.6
484 | pyOpenSSL==22.0.0
485 | pyparsing==3.0.9
486 | PyPDF2==3.0.1
487 | pyperclip==1.8.2
488 | pyppeteer==1.0.2
489 | pyproject_api==1.5.1
490 | PyQt5==5.15.11
491 | pyqt5-plugins==5.15.4.2.2
492 | PyQt5-Qt5==5.15.2
493 | pyqt5-tools==5.15.4.3.2
494 | PyQt5_sip==12.15.0
495 | pyquery==1.4.1
496 | Pyrogram==1.4.12
497 | pyrsistent==0.18.1
498 | PyRSS2Gen==1.1
499 | pysaml2==7.2.1
500 | PySimpleGUI==4.60.3
501 | PySocks==1.7.1
502 | pyspnego==0.9.0
503 | pytest==7.3.1
504 | pytest-cov==4.0.0
505 | python-dateutil==2.8.2
506 | python-docx==0.8.11
507 | python-dotenv==0.20.0
508 | python-keystoneclient==5.0.1
509 | python-owasp-zap-v2.4==0.0.14
510 | python-scrapyd-api==2.1.2
511 | python-slugify==6.1.2
512 | pytz==2022.1
513 | pytz-deprecation-shim==0.1.0.post0
514 | PyWavelets==1.4.1
515 | pywifi==1.1.12
516 | PyYAML==6.0.2
517 | pyzmq==23.1.0
518 | qrcode==7.3.1
519 | QScintilla==2.13.3
520 | qt5-applications==5.15.2.2.2
521 | qt5-tools==5.15.2.1.2
522 | qtconsole==5.3.1
523 | QtPy==2.1.0
524 | qudida==0.0.4
525 | queuelib==1.6.2
526 | redis==4.5.5
527 | redis-py-cluster==2.1.3
528 | repath==0.9.0
529 | repoze.lru==0.7
530 | requests==2.32.3
531 | requests-file==1.5.1
532 | requests-html==0.10.0
533 | requests-ntlm==1.2.0
534 | requests-oauthlib==1.3.1
535 | requests-toolbelt==0.9.1
536 | retry==0.9.2
537 | rfc3986==1.5.0
538 | rich==12.1.0
539 | Routes==2.5.1
540 | rsa==4.8
541 | ruamel.yaml==0.17.21
542 | ruamel.yaml.clib==0.2.7
543 | s3transfer==0.10.4
544 | scikeras @ git+https://github.com/rdk2132/scikeras@b7a2ce5487b2a0164e6be7f5172a894859eebb03
545 | scikit-image==0.21.0
546 | scikit-learn==1.1.1
547 | scipy==1.8.1
548 | Scrapy==2.9.0
549 | scrapy-redis==0.7.3
550 | scrapy-splash==0.8.0
551 | scrapyd==1.4.2
552 | scrapyd-client==1.2.2
553 | scrapydart==1.2.0.327
554 | scrapydo==0.2.2
555 | scrapydweb==1.4.0
556 | scrypt==0.8.20
557 | seaborn==0.11.2
558 | secret==0.8
559 | selenium==4.15.2
560 | Send2Trash==1.8.0
561 | service-identity==21.1.0
562 | sgmllib3k==1.0.0
563 | sh==1.14.3
564 | Simple-AES-Cipher==1.0.7
565 | six==1.16.0
566 | sklearn==0.0.post1
567 | sniffio==1.2.0
568 | sortedcontainers==2.4.0
569 | soupsieve==2.3.2.post1
570 | SQLAlchemy==1.4.37
571 | sqlalchemy-migrate==0.13.0
572 | sqlparse==0.4.2
573 | stack-data==0.3.0
574 | statsd==4.0.1
575 | stevedore==4.1.1
576 | sympy==1.10.1
577 | tabulate==0.9.0
578 | tb-nightly==2.14.0a20230522
579 | Tempita==0.5.2
580 | tenacity==8.2.2
581 | tensorboard==2.13.0
582 | tensorboard-data-server==0.7.0
583 | tensorboard-plugin-wit==1.8.1
584 | tensorflow==2.13.0rc1
585 | tensorflow-estimator==2.13.0
586 | tensorflow-io-gcs-filesystem==0.26.0
587 | termcolor==1.1.0
588 | terminado==0.15.0
589 | testresources==2.0.1
590 | testscenarios==0.5.0
591 | testtools==2.5.0
592 | text-unidecode==1.3
593 | TgCrypto==1.2.3
594 | threadpoolctl==3.1.0
595 | tifffile==2023.4.12
596 | tinycss2==1.1.1
597 | tk==0.1.0
598 | tldextract==3.3.0
599 | tomli==2.0.1
600 | torch==2.0.1
601 | torchvision==0.15.2
602 | tornado==6.1
603 | tox==4.5.1
604 | tqdm==4.65.0
605 | traitlets==5.3.0
606 | trio==0.21.0
607 | trio-websocket==0.9.2
608 | Twisted==24.10.0
609 | typing_extensions==4.2.0
610 | tzdata==2022.1
611 | tzlocal==2.1
612 | uberegg==0.1.1
613 | ui==0.1.4
614 | urllib3==2.2.3
615 | urwid==2.1.2
616 | validators==0.20.0
617 | vine==5.0.0
618 | virtualenv==20.23.0
619 | visvis==1.13.0
620 | w3lib==1.22.0
621 | waitress==2.1.2
622 | wallbreaker==1.0.3
623 | watchdog==2.3.0
624 | wcwidth==0.2.5
625 | webdriver-manager==3.7.1
626 | webencodings==0.5.1
627 | WebOb==1.8.7
628 | websocket==0.2.1
629 | websocket-client==1.5.1
630 | websockets==11.0.3
631 | Werkzeug==2.1.2
632 | wget==3.2
633 | whichcraft==0.6.1
634 | widgetsnbextension==3.6.0
635 | WMI==1.4.9
636 | wrapt==1.14.1
637 | wsproto==1.1.0
638 | wxPython==4.1.1
639 | xlwt==1.3.0
640 | xmlschema==2.1.1
641 | xmltodict==0.13.0
642 | xvfbwrapper==0.2.9
643 | yapf==0.33.0
644 | yappi==1.4.0
645 | yarg==0.1.9
646 | yarl==1.8.2
647 | YJ-3==9.9
648 | zhconv==1.4.3
649 | zipp==3.8.0
650 | zope.event==4.5.0
651 | zope.interface==5.4.0
652 | zstandard==0.17.0
653 |
--------------------------------------------------------------------------------