Compare commits

..

9 Commits

Author SHA1 Message Date
dd3714f8c8 feat: fetches per default every category
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2024-05-13 13:53:36 +02:00
760e12889c Merge pull request 'ci: add pipeline' (#1) from ci/add-pipeline into main
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Reviewed-on: #1
2024-04-26 09:48:07 +00:00
7d14fef3f5 docs: add ci badge
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
2024-04-25 19:56:55 -07:00
65b1d17253 docs: fix command in README 2024-04-25 19:56:08 -07:00
b57991c3ce ci: install requests package
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/manual/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2024-04-25 19:50:11 -07:00
17203825ed ci: remove _version.py file
Some checks failed
ci/woodpecker/manual/woodpecker Pipeline failed
2024-04-25 19:45:45 -07:00
e97ee0ea13 ci: add version file to gitignore 2024-04-25 19:45:09 -07:00
68919e2c35 ci: remove no-longer-needed __about__ file 2024-04-25 19:43:50 -07:00
03e094a497 ci: add pipeline 2024-04-25 19:43:08 -07:00
6 changed files with 66 additions and 7 deletions

2
.gitignore vendored
View File

@@ -160,3 +160,5 @@ cython_debug/
# option (not recommended) you can uncomment the following to ignore the entire idea folder. # option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/ #.idea/
# setuptools-scm
_version.py

36
.woodpecker.yml Normal file
View File

@@ -0,0 +1,36 @@
labels:
platform: linux/amd64
steps:
build:
image: python
commands:
- python -m pip install hatch requests
- python -m unittest
- hatch build
when:
- event: manual
- event: tag
publish-gitea:
image: gitea.elara.ws/music-kraken/plugin-twine
settings:
repository_url: "https://gitea.elara.ws/api/packages/music-kraken/pypi"
username:
from_secret: gitea_username
password:
from_secret: gitea_password
when:
- event: manual
- event: tag
publish-pypi:
image: gitea.elara.ws/music-kraken/plugin-twine
settings:
username:
from_secret: pypi_username
password:
from_secret: pypi_password
when:
- event: manual
- event: tag

View File

@@ -1,5 +1,7 @@
# Python Sponsorblock # Python Sponsorblock
[![status-badge](https://ci.elara.ws/api/badges/61/status.svg)](https://ci.elara.ws/repos/61)
<img src="https://gitea.elara.ws/music-kraken/python-sponsorblock/raw/branch/main/assets/logo.svg" width=300 alt="python-sponsorblock logo"/> <img src="https://gitea.elara.ws/music-kraken/python-sponsorblock/raw/branch/main/assets/logo.svg" width=300 alt="python-sponsorblock logo"/>
This is a wrapper for the sponsorblock api, enabling you to get the timestamps of sponsor segments from Youtube videos. This is a wrapper for the sponsorblock api, enabling you to get the timestamps of sponsor segments from Youtube videos.
@@ -8,7 +10,7 @@ This is a wrapper for the sponsorblock api, enabling you to get the timestamps o
```bash ```bash
# using this gitea repository (recommended) # using this gitea repository (recommended)
pip install --index-url https://gitea.elara.ws/api/packages/music-kraken/pypi/simple/ music-kraken pip install --index-url https://gitea.elara.ws/api/packages/music-kraken/pypi/simple/ python-sponsorblock
``` ```
```bash ```bash

View File

@@ -12,7 +12,16 @@ include = ["python_sponsorblock/*.py", "python_sponsorblock/**/*.py" ]
packages = ["python_sponsorblock"] packages = ["python_sponsorblock"]
[tool.hatch.version] [tool.hatch.version]
path = "python_sponsorblock/__about__.py" source = "vcs"
path = "python_sponsorblock/_version.py"
fallback-version = "0.0.0"
[tool.hatch.version.raw-options]
local_scheme = "no-local-version"
[tool.hatch.build.hooks.vcs]
version-file = "python_sponsorblock/_version.py"
[project] [project]
name = "python-sponsorblock" name = "python-sponsorblock"

View File

@@ -1 +0,0 @@
__version__ = '0.0.0'

View File

@@ -7,7 +7,7 @@ import json
from functools import wraps from functools import wraps
from .exceptions import SponsorBlockError, SponsorBlockIdNotFoundError, ReturnDefault from .exceptions import SponsorBlockError, SponsorBlockIdNotFoundError, ReturnDefault
from .constants import Segment from .constants import Segment, Category
def error_handling(default: Any) -> Callable: def error_handling(default: Any) -> Callable:
@@ -99,14 +99,25 @@ class SponsorBlock:
return data return data
@error_handling(default=[]) @error_handling(default=[])
def get_segments(self, video: str) -> List[Segment]: def get_segments(self, video: str, categories: List[Category] = None) -> List[Segment]:
"""
Retrieves the skip segments for a given video.
Args:
video (str): The video identifier.
categories (List[Category], optional): A list of categories to filter the skip segments. Defaults to all categories.
Returns:
List[Segment]: A list of skip segments for the given video.
"""
video_id = self._get_video_id(video) video_id = self._get_video_id(video)
categories = categories or [c for c in Category]
# build query parameters # build query parameters
query = { query = {
"videoID": video_id "videoID": video_id,
"categories": json.dumps([c.value for c in categories])
} }
print(query)
r = self._request(method="GET", endpoint="/api/skipSegments?" + urlencode(query)) r = self._request(method="GET", endpoint="/api/skipSegments?" + urlencode(query))
return [constants.Segment(**d) for d in r] return [constants.Segment(**d) for d in r]