# vs-wobbly
<p align="center">
<img alt="PyPI - Python Version" src="https://img.shields.io/pypi/pyversions/vswobbly">
<a href="https://pypi.org/project/vswobbly/"><img alt="PyPI" src="https://img.shields.io/pypi/v/vswobbly"></a>
<a href="https://github.com/Jaded-Encoding-Thaumaturgy/vs-wobbly/commits/master"><img alt="GitHub commits since tagged version" src="https://img.shields.io/github/commits-since/Jaded-Encoding-Thaumaturgy/vs-wobbly/latest"></a>
<a href="https://github.com/Jaded-Encoding-Thaumaturgy/vs-wobbly/blob/master/LICENSE"><img alt="PyPI - License" src="https://img.shields.io/pypi/l/vswobbly"></a>
<a href="https://discord.gg/XTpc6Fa9eB"><img alt="Discord" src="https://img.shields.io/discord/856381934052704266?label=discord"></a>
</p>
A collection of VapourSynth functions for parsing and filtering wobbly files.
Full information on how every function works,
as well as a list of dependencies and links,
can be found in the docstrings of each function and class.
For further support,
drop by `#dev` in the [JET Discord server](https://discord.gg/XTpc6Fa9eB).
## How to install
Install `vswobbly` with the following command:
```shell
pip install vswobbly
```
## How to use
Simplest way to use it is to pass a wobbly file (`.wob`) to `WobblyProcessor.from_file()`,
followed by calling `apply()`.
```python
from vswobbly import WobblyProcessor,
wob = WobblyProcessor.from_file('C:/path/to/wobbly.wob')
clip = wob.apply()
```
If you only need the parsed wobbly data,
you can use `WobblyParser.from_file()`:
```python
from vswobbly import WobblyParser
wob = WobblyParser.from_file('C:/path/to/wobbly.wob')
```
This will return a `WobblyParser` data class,
containing all the relevant data for video processing.
Note that metadata, information about wobbly's UI,
and wibbly parameters are currently excluded.
### Strategies
Different "strategies" can be passed to `WobblyProcessor`
to change how certain problems are handled internally.
This package comes with a handful included.
For example,
automatically handling combed frames
with vinverse:
```python
from vswobbly import WobblyProcessor, DecombVinverseStrategy
wob = WobblyProcessor.from_file(
'C:/path/to/wobbly.wob',
strategies=[DecombVinverseStrategy()]
)
clip = wob.apply()
```
Which would then run the [DecombVinverseStrategy](./vswobbly/process/strategies/combed.py) strategy
on all combed frames.
This is written to be really flexible,
and allow users to handle these problems however they see fit.
To implement your own strategy,
create a class and inherit from [AbstractProcessingStrategy](./vswobbly/process/strategies/abstract.py).
Refer to the existing strategies and the docstrings of the abstract class for examples.
Note: For orphan field handling to be handled correctly,
the strategy *must* have 'Orphan' in its name.
Raw data
{
"_id": null,
"home_page": null,
"name": "vswobbly",
"maintainer": "LightArrowsEXE",
"docs_url": null,
"requires_python": ">=3.12",
"maintainer_email": "LightArrowsReboot@gmail.com",
"keywords": null,
"author": "LightArrowsEXE",
"author_email": "LightArrowsReboot@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/07/3b/934590afba125568c10f6c6ed66d2df4ca3a53d218e3e85c8a7cd8b95ebc/vswobbly-0.1.3.tar.gz",
"platform": null,
"description": "# vs-wobbly\n\n<p align=\"center\">\n <img alt=\"PyPI - Python Version\" src=\"https://img.shields.io/pypi/pyversions/vswobbly\">\n <a href=\"https://pypi.org/project/vswobbly/\"><img alt=\"PyPI\" src=\"https://img.shields.io/pypi/v/vswobbly\"></a>\n <a href=\"https://github.com/Jaded-Encoding-Thaumaturgy/vs-wobbly/commits/master\"><img alt=\"GitHub commits since tagged version\" src=\"https://img.shields.io/github/commits-since/Jaded-Encoding-Thaumaturgy/vs-wobbly/latest\"></a>\n <a href=\"https://github.com/Jaded-Encoding-Thaumaturgy/vs-wobbly/blob/master/LICENSE\"><img alt=\"PyPI - License\" src=\"https://img.shields.io/pypi/l/vswobbly\"></a>\n <a href=\"https://discord.gg/XTpc6Fa9eB\"><img alt=\"Discord\" src=\"https://img.shields.io/discord/856381934052704266?label=discord\"></a>\n</p>\n\nA collection of VapourSynth functions for parsing and filtering wobbly files.\nFull information on how every function works,\nas well as a list of dependencies and links,\ncan be found in the docstrings of each function and class.\nFor further support,\ndrop by `#dev` in the [JET Discord server](https://discord.gg/XTpc6Fa9eB).\n\n## How to install\n\nInstall `vswobbly` with the following command:\n\n```shell\npip install vswobbly\n```\n\n## How to use\n\nSimplest way to use it is to pass a wobbly file (`.wob`) to `WobblyProcessor.from_file()`,\nfollowed by calling `apply()`.\n\n```python\nfrom vswobbly import WobblyProcessor,\n\nwob = WobblyProcessor.from_file('C:/path/to/wobbly.wob')\nclip = wob.apply()\n```\n\nIf you only need the parsed wobbly data,\nyou can use `WobblyParser.from_file()`:\n\n```python\nfrom vswobbly import WobblyParser\n\nwob = WobblyParser.from_file('C:/path/to/wobbly.wob')\n```\n\nThis will return a `WobblyParser` data class,\ncontaining all the relevant data for video processing.\nNote that metadata, information about wobbly's UI,\nand wibbly parameters are currently excluded.\n\n### Strategies\n\nDifferent \"strategies\" can be passed to `WobblyProcessor`\nto change how certain problems are handled internally.\nThis package comes with a handful included.\n\nFor example,\nautomatically handling combed frames\nwith vinverse:\n\n```python\nfrom vswobbly import WobblyProcessor, DecombVinverseStrategy\n\nwob = WobblyProcessor.from_file(\n 'C:/path/to/wobbly.wob',\n strategies=[DecombVinverseStrategy()]\n)\n\nclip = wob.apply()\n```\n\nWhich would then run the [DecombVinverseStrategy](./vswobbly/process/strategies/combed.py) strategy\non all combed frames.\n\nThis is written to be really flexible,\nand allow users to handle these problems however they see fit.\nTo implement your own strategy,\ncreate a class and inherit from [AbstractProcessingStrategy](./vswobbly/process/strategies/abstract.py).\nRefer to the existing strategies and the docstrings of the abstract class for examples.\n\nNote: For orphan field handling to be handled correctly,\nthe strategy *must* have 'Orphan' in its name.\n",
"bugtrack_url": null,
"license": null,
"summary": "Wobbly Vapoursynth Functions.",
"version": "0.1.3",
"project_urls": {
"Contact": "https://discord.gg/XTpc6Fa9eB",
"Source Code": "https://github.com/Jaded-Encoding-Thaumaturgy/vs-wobbly"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "3dad3d0b8de6d8e0acf5fcea79cc2f20c4fea707a5bb51c450541272e685048c",
"md5": "5d59de23e747e714acbfc4eedfe1243d",
"sha256": "4c94803048250ef7400b2bde253df72b2d5ad52ffc53de5a06ff4b8c2f6a1feb"
},
"downloads": -1,
"filename": "vswobbly-0.1.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "5d59de23e747e714acbfc4eedfe1243d",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.12",
"size": 31900,
"upload_time": "2024-12-06T07:20:37",
"upload_time_iso_8601": "2024-12-06T07:20:37.196298Z",
"url": "https://files.pythonhosted.org/packages/3d/ad/3d0b8de6d8e0acf5fcea79cc2f20c4fea707a5bb51c450541272e685048c/vswobbly-0.1.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "073b934590afba125568c10f6c6ed66d2df4ca3a53d218e3e85c8a7cd8b95ebc",
"md5": "49caee03005ba44efbcbaf19120173ba",
"sha256": "d7ec7fd5d49fa4d9e1527ae3e7360a8a354a93b473f59b95205ef74114cfff74"
},
"downloads": -1,
"filename": "vswobbly-0.1.3.tar.gz",
"has_sig": false,
"md5_digest": "49caee03005ba44efbcbaf19120173ba",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.12",
"size": 22002,
"upload_time": "2024-12-06T07:20:38",
"upload_time_iso_8601": "2024-12-06T07:20:38.379520Z",
"url": "https://files.pythonhosted.org/packages/07/3b/934590afba125568c10f6c6ed66d2df4ca3a53d218e3e85c8a7cd8b95ebc/vswobbly-0.1.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-06 07:20:38",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Jaded-Encoding-Thaumaturgy",
"github_project": "vs-wobbly",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "VapourSynth",
"specs": [
[
">=",
"70"
]
]
},
{
"name": "vstools",
"specs": [
[
">=",
"3.3.3"
]
]
},
{
"name": "vsdeinterlace",
"specs": [
[
">=",
"0.8.0"
]
]
}
],
"lcname": "vswobbly"
}