mirror of
https://github.com/csd4ni3l/gp-dl.git
synced 2025-11-05 05:58:09 +01:00
Add PyPI github action, move to package based folder structure, fix
banner
This commit is contained in:
34
.github/workflows/publish.yml
vendored
Normal file
34
.github/workflows/publish.yml
vendored
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
name: Publish to PyPI
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- "v*"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-and-publish:
|
||||||
|
name: Build and Publish to PyPI
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Set up Python
|
||||||
|
uses: actions/setup-python@v5
|
||||||
|
with:
|
||||||
|
python-version: "3.11"
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
python -m pip install --upgrade build twine
|
||||||
|
|
||||||
|
- name: Build the package
|
||||||
|
run: |
|
||||||
|
python -m build
|
||||||
|
|
||||||
|
- name: Publish to PyPI
|
||||||
|
env:
|
||||||
|
TWINE_USERNAME: __token__
|
||||||
|
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
|
||||||
|
run: |
|
||||||
|
python -m twine upload dist/*
|
||||||
1
gp_dl/__init__.py
Normal file
1
gp_dl/__init__.py
Normal file
@@ -0,0 +1 @@
|
|||||||
|
__version__ = "0.1.0"
|
||||||
@@ -8,22 +8,22 @@ from selenium.webdriver.support import expected_conditions as EC
|
|||||||
from zipfile import ZipFile
|
from zipfile import ZipFile
|
||||||
|
|
||||||
BANNER = """
|
BANNER = """
|
||||||
██████ ██████ ██████ ██
|
██████ ██████ ██████ ██
|
||||||
██ ██ ██ ██ ██ ██
|
██ ██ ██ ██ ██ ██
|
||||||
██ ███ ██████ █████ ██ ██ ██
|
██ ███ ██████ █████ ██ ██ ██
|
||||||
██ ██ ██ ██ ██ ██
|
██ ██ ██ ██ ██ ██
|
||||||
██████ ██ ██████ ███████
|
██████ ██ ██████ ███████
|
||||||
|
|
||||||
gp-dl — Google Photos Downloader
|
gp-dl — Google Photos Downloader
|
||||||
Download full-res albums using Selenium
|
Download full-res albums using Selenium
|
||||||
|
|
||||||
Author: csd4ni3l | GitHub: https://github.com/csd4ni3l
|
Author: csd4ni3l | GitHub: https://github.com/csd4ni3l
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def parse_args():
|
def parse_args():
|
||||||
parser = argparse.ArgumentParser(description="Download full-res images from a Google Photos album using Selenium.")
|
parser = argparse.ArgumentParser(description="Download full-res images from a Google Photos album using Selenium.")
|
||||||
parser.add_argument("--album-urls", nargs="+", required=True, help="Google Photos album URL")
|
parser.add_argument("--album-urls", nargs="+", required=True, help="Google Photos album URL(s)")
|
||||||
parser.add_argument("--output-dir", required=True, help="Directory to save downloaded images")
|
parser.add_argument("--output-dir", required=True, help="Directory to save downloaded albums")
|
||||||
parser.add_argument("--driver-path", default=None, help="Custom Chrome driver path")
|
parser.add_argument("--driver-path", default=None, help="Custom Chrome driver path")
|
||||||
parser.add_argument("--profile-dir", default=None, help="Chrome user data directory for session reuse")
|
parser.add_argument("--profile-dir", default=None, help="Chrome user data directory for session reuse")
|
||||||
parser.add_argument("--headless", action="store_true", help="Run Chrome headlessly")
|
parser.add_argument("--headless", action="store_true", help="Run Chrome headlessly")
|
||||||
@@ -123,13 +123,13 @@ def main():
|
|||||||
logging.debug("Clicking the download all button...")
|
logging.debug("Clicking the download all button...")
|
||||||
download_all_button.click()
|
download_all_button.click()
|
||||||
|
|
||||||
logging.debug("Waiting for Google to prepare the file...")
|
logging.info("Waiting for Google to prepare the file...")
|
||||||
crdownload_file = None
|
crdownload_file = None
|
||||||
while not crdownload_file:
|
while not crdownload_file:
|
||||||
crdownload_file = find_crdownload_file()
|
crdownload_file = find_crdownload_file()
|
||||||
time.sleep(0.1)
|
time.sleep(0.1)
|
||||||
|
|
||||||
logging.debug("Waiting for the download to finish...")
|
logging.info("Waiting for the download to finish...")
|
||||||
zip_file = None
|
zip_file = None
|
||||||
while not zip_file:
|
while not zip_file:
|
||||||
zip_file = find_zip_file()
|
zip_file = find_zip_file()
|
||||||
@@ -148,7 +148,7 @@ def main():
|
|||||||
successful_album_count += 1
|
successful_album_count += 1
|
||||||
album_times.append(time.perf_counter() - album_start)
|
album_times.append(time.perf_counter() - album_start)
|
||||||
|
|
||||||
logging.debug("Removing gp_temp directory.")
|
logging.debug("Removing temporary gp_temp directory.")
|
||||||
os.removedirs("gp_temp")
|
os.removedirs("gp_temp")
|
||||||
|
|
||||||
print("\n===== DOWNLOAD STATISTICS =====")
|
print("\n===== DOWNLOAD STATISTICS =====")
|
||||||
@@ -161,7 +161,7 @@ def main():
|
|||||||
|
|
||||||
driver.quit()
|
driver.quit()
|
||||||
|
|
||||||
if __name__ == '__main__':
|
def run_cli():
|
||||||
print(BANNER)
|
print(BANNER)
|
||||||
configure_logging()
|
configure_logging()
|
||||||
main()
|
main()
|
||||||
@@ -4,4 +4,22 @@ version = "0.1.0"
|
|||||||
description = "A Python-based Google Photos downloader built with Selenium."
|
description = "A Python-based Google Photos downloader built with Selenium."
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
requires-python = ">=3.11"
|
requires-python = ">=3.11"
|
||||||
|
license = { text = "GPL v3" }
|
||||||
|
authors = [{ name = "csd4ni3l", email = "csd4ni3l@duck.com" }]
|
||||||
dependencies = ["selenium>=4.33.0"]
|
dependencies = ["selenium>=4.33.0"]
|
||||||
|
classifiers = [
|
||||||
|
"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
|
||||||
|
"Programming Language :: Python :: 3",
|
||||||
|
"Programming Language :: Python :: 3.11",
|
||||||
|
"Operating System :: OS Independent",
|
||||||
|
"Environment :: Console",
|
||||||
|
"Topic :: Internet :: WWW/HTTP :: Indexing/Search",
|
||||||
|
"Topic :: Utilities",
|
||||||
|
]
|
||||||
|
|
||||||
|
[project.scripts]
|
||||||
|
gp-dl = "gp_dl.main:run_cli"
|
||||||
|
|
||||||
|
[build-system]
|
||||||
|
requires = ["setuptools>=61.0"]
|
||||||
|
build-backend = "setuptools.build_meta"
|
||||||
|
|||||||
Reference in New Issue
Block a user