mirror of
https://github.com/bellingcat/vk-url-scraper.git
synced 2026-06-12 21:38:36 +03:00
Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
73f17407c0 | ||
|
|
95d249f5d0 | ||
|
|
ccb8c1f5c7 | ||
|
|
e525ff24b1 | ||
|
|
699b4ebdd8 | ||
|
|
8d1a86a7fa |
2
.github/workflows/main.yml
vendored
2
.github/workflows/main.yml
vendored
@@ -30,7 +30,7 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
python: ['3.7', '3.10']
|
python: ['3.10']
|
||||||
task: # --show-capture=no on purpose, -s for captchas
|
task: # --show-capture=no on purpose, -s for captchas
|
||||||
- name: Test
|
- name: Test
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ sphinx:
|
|||||||
build:
|
build:
|
||||||
os: "ubuntu-22.04"
|
os: "ubuntu-22.04"
|
||||||
tools:
|
tools:
|
||||||
python: "3.8"
|
python: "3.10"
|
||||||
|
|
||||||
python:
|
python:
|
||||||
install:
|
install:
|
||||||
|
|||||||
2
Makefile
2
Makefile
@@ -13,4 +13,4 @@ run-checks :
|
|||||||
black .
|
black .
|
||||||
flake8 .
|
flake8 .
|
||||||
mypy .
|
mypy .
|
||||||
CUDA_VISIBLE_DEVICES='' pytest -v --color=yes --doctest-modules tests/ vk_url_scraper/
|
CUDA_VISIBLE_DEVICES='' pytest -v --color=yes .
|
||||||
|
|||||||
3
Pipfile
3
Pipfile
@@ -29,7 +29,8 @@ pycryptodomex = ">=3.17"
|
|||||||
requests = ">=2.28.2"
|
requests = ">=2.28.2"
|
||||||
urllib3 = ">=1.26.14"
|
urllib3 = ">=1.26.14"
|
||||||
websockets = ">=10.4"
|
websockets = ">=10.4"
|
||||||
vk-api = {ref = "77b5a0d51a6bbf54d59554332f28a488615fbd6c", git = "git+https://github.com/python273/vk_api.git"}
|
# vk-api = {ref = "77b5a0d51a6bbf54d59554332f28a488615fbd6c", git = "git+https://github.com/python273/vk_api.git"}
|
||||||
|
vk-api = "*"
|
||||||
|
|
||||||
[dev-packages]
|
[dev-packages]
|
||||||
sphinx-copybutton = "==0.5.0"
|
sphinx-copybutton = "==0.5.0"
|
||||||
|
|||||||
14
Pipfile.lock
generated
14
Pipfile.lock
generated
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"_meta": {
|
"_meta": {
|
||||||
"hash": {
|
"hash": {
|
||||||
"sha256": "4ed4f585754a730a8d70a7807090b2d65604fe90ea08513115eedfd9e4999bf9"
|
"sha256": "1d1631b546ca122099049518541fc986888d12c864474b5de52ec9b2afcbbe84"
|
||||||
},
|
},
|
||||||
"pipfile-spec": 6,
|
"pipfile-spec": 6,
|
||||||
"requires": {
|
"requires": {
|
||||||
@@ -1413,7 +1413,7 @@
|
|||||||
"sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783",
|
"sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783",
|
||||||
"sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"
|
"sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.8'",
|
"markers": "python_version < '3.11'",
|
||||||
"version": "==4.9.0"
|
"version": "==4.9.0"
|
||||||
},
|
},
|
||||||
"urllib3": {
|
"urllib3": {
|
||||||
@@ -1426,8 +1426,12 @@
|
|||||||
"version": "==2.1.0"
|
"version": "==2.1.0"
|
||||||
},
|
},
|
||||||
"vk-api": {
|
"vk-api": {
|
||||||
"git": "git+https://github.com/python273/vk_api.git",
|
"hashes": [
|
||||||
"ref": null
|
"sha256:c71021506449afe5b9bbb1c4acb0d86b35a007ddc21678478e46fbbeabd1f3ef",
|
||||||
|
"sha256:c7741e40bc05980c91ed94c84542e1e7e7370e101b5eaa74222958d4130fe3c2"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"version": "==11.9.9"
|
||||||
},
|
},
|
||||||
"websockets": {
|
"websockets": {
|
||||||
"hashes": [
|
"hashes": [
|
||||||
@@ -2615,7 +2619,7 @@
|
|||||||
"sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783",
|
"sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783",
|
||||||
"sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"
|
"sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"
|
||||||
],
|
],
|
||||||
"markers": "python_version >= '3.8'",
|
"markers": "python_version < '3.11'",
|
||||||
"version": "==4.9.0"
|
"version": "==4.9.0"
|
||||||
},
|
},
|
||||||
"urllib3": {
|
"urllib3": {
|
||||||
|
|||||||
@@ -97,10 +97,11 @@ To test the command line interface available in [__main__.py](__vk_url_scraper/_
|
|||||||
|
|
||||||
## Releasing new version
|
## Releasing new version
|
||||||
1. edit [version.py](vk_url_scraper/version.py) with proper versioning
|
1. edit [version.py](vk_url_scraper/version.py) with proper versioning
|
||||||
2. run `./scripts/release.sh` to create a tag and push, alternatively
|
2. make sure to run `pipenv run pip freeze > requirements.txt` if you manage libs with pipenv
|
||||||
|
3. run `./scripts/release.sh` to create a tag and push, alternatively
|
||||||
1. `git tag vx.y.z` to tag version
|
1. `git tag vx.y.z` to tag version
|
||||||
2. `git push origin vx.y.z` -> this will trigger workflow and put project on [pypi](https://pypi.org/project/vk-url-scraper/)
|
2. `git push origin vx.y.z` -> this will trigger workflow and put project on [pypi](https://pypi.org/project/vk-url-scraper/)
|
||||||
3. go to https://readthedocs.org/ to deploy new docs version (if webhook is not setup)
|
4. go to https://readthedocs.org/ to deploy new docs version (if webhook is not setup)
|
||||||
|
|
||||||
### Fixing a failed release
|
### Fixing a failed release
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
Installation
|
Installation
|
||||||
============
|
============
|
||||||
|
|
||||||
**vk-url-scraper** supports Python >= 3.7.
|
**vk-url-scraper** supports Python >= 3.10.
|
||||||
|
|
||||||
## Installing with `pip`
|
## Installing with `pip`
|
||||||
|
|
||||||
|
|||||||
113
requirements.txt
113
requirements.txt
@@ -1,19 +1,94 @@
|
|||||||
#
|
aiohttp==3.9.1
|
||||||
# These requirements were autogenerated by pipenv
|
aiosignal==1.3.1
|
||||||
# To regenerate from the project's Pipfile, run:
|
alabaster==0.7.16
|
||||||
#
|
async-timeout==4.0.3
|
||||||
# pipenv lock --requirements
|
attrs==23.2.0
|
||||||
#
|
Babel==2.14.0
|
||||||
|
beautifulsoup4==4.12.3
|
||||||
# -i https://pypi.org/simple
|
black==24.1a1
|
||||||
brotli>=1.0.9; platform_python_implementation >= 'CPython'
|
bleach==6.0.0
|
||||||
certifi>=2022.12.7; python_version >= '3.6'
|
Brotli==1.1.0
|
||||||
charset-normalizer>=3.0.1; python_version >= '3.6'
|
certifi==2023.11.17
|
||||||
idna>=3.4; python_version >= '3.5'
|
cffi==1.16.0
|
||||||
mutagen>=1.46.0; python_version >= '3.7'
|
charset-normalizer==3.3.2
|
||||||
pycryptodomex>=3.17; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'
|
click==8.1.7
|
||||||
requests>=2.28.2; python_version >= '3.7' and python_version < '4'
|
colorama==0.4.6
|
||||||
urllib3>=1.26.14; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'
|
commonmark==0.9.1
|
||||||
vk-api>=11.9.9
|
coverage==7.4.0
|
||||||
websockets>=10.4; python_version >= '3.7'
|
cryptography==42.0.0
|
||||||
yt-dlp>=2023.2.17
|
docutils==0.18.1
|
||||||
|
exceptiongroup==1.2.0
|
||||||
|
flake8==7.0.0
|
||||||
|
frozenlist==1.4.1
|
||||||
|
furo==2023.3.27
|
||||||
|
idna==3.6
|
||||||
|
imagesize==1.4.1
|
||||||
|
importlib-metadata==7.0.1
|
||||||
|
iniconfig==2.0.0
|
||||||
|
isort==6.0.0b2
|
||||||
|
jaraco.classes==3.3.0
|
||||||
|
jeepney==0.8.0
|
||||||
|
Jinja2==3.1.3
|
||||||
|
keyring==24.3.0
|
||||||
|
livereload==2.6.3
|
||||||
|
markdown-it-py==2.2.0
|
||||||
|
MarkupSafe==2.1.4
|
||||||
|
mccabe==0.7.0
|
||||||
|
mdit-py-plugins==0.3.5
|
||||||
|
mdurl==0.1.2
|
||||||
|
more-itertools==10.2.0
|
||||||
|
multidict==6.0.4
|
||||||
|
mutagen==1.47.0
|
||||||
|
mypy==1.8.0
|
||||||
|
mypy-extensions==1.0.0
|
||||||
|
myst-parser==0.18.1
|
||||||
|
nh3==0.2.15
|
||||||
|
packaging==23.2
|
||||||
|
pathspec==0.12.1
|
||||||
|
pkginfo==1.9.6
|
||||||
|
platformdirs==4.1.0
|
||||||
|
pluggy==1.3.0
|
||||||
|
py==1.11.0
|
||||||
|
pycodestyle==2.11.1
|
||||||
|
pycparser==2.21
|
||||||
|
pycryptodomex==3.20.0
|
||||||
|
pyflakes==3.2.0
|
||||||
|
Pygments==2.17.2
|
||||||
|
pyparsing==3.0.9
|
||||||
|
pytest==8.0.0rc2
|
||||||
|
pytest-cov==4.1.0
|
||||||
|
pytest-sphinx==0.5.0
|
||||||
|
python-dotenv==1.0.1
|
||||||
|
pytz==2022.1
|
||||||
|
PyYAML==6.0.1
|
||||||
|
readme-renderer==42.0
|
||||||
|
requests==2.31.0
|
||||||
|
requests-toolbelt==1.0.0
|
||||||
|
rfc3986==2.0.0
|
||||||
|
rich==13.7.0
|
||||||
|
SecretStorage==3.3.3
|
||||||
|
six==1.16.0
|
||||||
|
snowballstemmer==2.2.0
|
||||||
|
soupsieve==2.5
|
||||||
|
Sphinx==5.0.2
|
||||||
|
sphinx-autobuild==2021.3.14
|
||||||
|
sphinx-autodoc-typehints==1.19.1
|
||||||
|
sphinx-basic-ng==1.0.0b2
|
||||||
|
sphinx-copybutton==0.5.2
|
||||||
|
sphinxcontrib-applehelp==1.0.8
|
||||||
|
sphinxcontrib-devhelp==1.0.6
|
||||||
|
sphinxcontrib-htmlhelp==2.0.5
|
||||||
|
sphinxcontrib-jsmath==1.0.1
|
||||||
|
sphinxcontrib-qthelp==1.0.7
|
||||||
|
sphinxcontrib-serializinghtml==1.1.10
|
||||||
|
tomli==2.0.1
|
||||||
|
tornado==6.4
|
||||||
|
twine==4.0.2
|
||||||
|
typing_extensions==4.9.0
|
||||||
|
urllib3==2.1.0
|
||||||
|
vk-api @ git+https://github.com/python273/vk_api.git@77b5a0d51a6bbf54d59554332f28a488615fbd6c
|
||||||
|
webencodings==0.5.1
|
||||||
|
websockets==12.0
|
||||||
|
yarl==1.9.4
|
||||||
|
yt-dlp==2024.1.22.232713.dev0
|
||||||
|
zipp==3.17.0
|
||||||
|
|||||||
2
setup.py
2
setup.py
@@ -57,7 +57,7 @@ setup(
|
|||||||
package_data={"vk_url_scraper": ["py.typed"]},
|
package_data={"vk_url_scraper": ["py.typed"]},
|
||||||
install_requires=read_requirements("requirements.txt"),
|
install_requires=read_requirements("requirements.txt"),
|
||||||
extras_require={"dev": read_requirements("dev-requirements.txt")},
|
extras_require={"dev": read_requirements("dev-requirements.txt")},
|
||||||
python_requires=">=3.7",
|
python_requires=">=3.10",
|
||||||
entry_points={
|
entry_points={
|
||||||
"console_scripts": [
|
"console_scripts": [
|
||||||
"vk_url_scraper=vk_url_scraper.__main__:main",
|
"vk_url_scraper=vk_url_scraper.__main__:main",
|
||||||
|
|||||||
@@ -339,7 +339,9 @@ class VkScraper:
|
|||||||
filename = os.path.join(destination, f"{r['id']}_{i}.%(ext)s")
|
filename = os.path.join(destination, f"{r['id']}_{i}.%(ext)s")
|
||||||
ydl = yt_dlp.YoutubeDL(
|
ydl = yt_dlp.YoutubeDL(
|
||||||
{
|
{
|
||||||
"format": "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best",
|
"format": (
|
||||||
|
"bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best"
|
||||||
|
),
|
||||||
"merge_output_format": "mp4",
|
"merge_output_format": "mp4",
|
||||||
"retries": 5,
|
"retries": 5,
|
||||||
"noplaylist": True,
|
"noplaylist": True,
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ def captcha_handler(captcha):
|
|||||||
key = input(
|
key = input(
|
||||||
f"CAPTCHA DETECTED, please solve it and input the solution. url= {captcha.get_url()} :"
|
f"CAPTCHA DETECTED, please solve it and input the solution. url= {captcha.get_url()} :"
|
||||||
).strip()
|
).strip()
|
||||||
return captcha.try_again(key)
|
return captcha.try_again(key.strip())
|
||||||
|
|
||||||
|
|
||||||
@contextmanager
|
@contextmanager
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ _MAJOR = "0"
|
|||||||
_MINOR = "3"
|
_MINOR = "3"
|
||||||
# On main and in a nightly release the patch should be one ahead of the last
|
# On main and in a nightly release the patch should be one ahead of the last
|
||||||
# released build.
|
# released build.
|
||||||
_PATCH = "27"
|
_PATCH = "28"
|
||||||
# This is mainly for nightly builds which have the suffix ".dev$DATE". See
|
# This is mainly for nightly builds which have the suffix ".dev$DATE". See
|
||||||
# https://semver.org/#is-v123-a-semantic-version for the semantics.
|
# https://semver.org/#is-v123-a-semantic-version for the semantics.
|
||||||
_SUFFIX = ""
|
_SUFFIX = ""
|
||||||
|
|||||||
Reference in New Issue
Block a user