# Media Parser
[![Poetry](https://img.shields.io/endpoint?url=https://python-poetry.org/badge/v0.json)](https://python-poetry.org/)
[![Documentation Status](https://readthedocs.org/projects/media-parser/badge/?version=latest)](https://media-parser.readthedocs.io/?badge=latest)
[![Build Docker image](https://github.com/jag-k/media-parser/actions/workflows/docker-image.yml/badge.svg)](https://github.com/jag-k/media-parser/actions/workflows/docker-image.yml)
[![PyPI publish](https://github.com/jag-k/media-parser/actions/workflows/pypi-publish.yml/badge.svg)](https://github.com/jag-k/media-parser/actions/workflows/pypi-publish.yml)
[![PyPI version](https://img.shields.io/pypi/v/media-parser?logo=pypi&label=media-parser)](https://pypi.org/project/media-parsers/)
Server for parse Media by URL.
## Supported medias
- [x] Youtube
- [x] Tiktok
- [x] Instagram
- [x] Twitter
- [x] Reddit
- [ ] Pinterest
## Installation and Configuration Server
Use the `docker-compose.yml` file to run the server.
```yaml
version: "3.8"
service:
media-parser:
image: ghcr.io/jag-k/media-parser:latest
ports:
- 8000:8000
environment:
# Sentry integration (optional)
SENTRY_DSN: "https://abcabc@sentry.io/2"
SENTRY_ENVIRONMENT: "dev"
# Enable sentry user feedback (optional)
SENTRY_ORGANISATION_SLUG: "sentry"
SENTRY_PROJECT_SLUG: "media-parser"
SENTRY_AUTH_TOKEN: "..." # with scope project:write
SENTRY_API_HOST: "https://api.sentry.io/"
# Database
MONGO_URL: "mongodb://mongodb:27017"
MONGO_DATABASE: "test"
volumes:
- ./config:/config
mongodb:
image: mongo:latest
volumes:
- ./data:/data/db
```
### Parsers Configuration
All configs for parsers stored in `config/parsers.json`. JSON Schema for
this: [schemas/parser_schema.json](https://github.com/jag-k/media-parser/blob/main/schemas/parser_schema.json).
To enable parser, you need to add config for this parser.
If parser hasn't config, like `tiktok` set an empty object (`{}`) to enable it.
Example:
```json5
// config/parsers.json
{
"$schema": "https://raw.github.com/jag-k/media-parsers/blob/main/schemas/parser_schema.json",
"instagram": {
// Optional
"instagram_saas_token": "asdasd"
},
"reddit": {
"client_id": "",
"client_secret": "",
// Optional
"user_agent": "video downloader (by u/Jag_k)"
},
"tiktok": {},
"twitter": {
"twitter_bearer_token": "asdasd"
},
"youtube": {}
}
```
Or you can use YAML file like `config/parsers.yaml` or `config/parsers.yml`:
```yaml
# config/parsers.yml
$schema: "https://raw.github.com/jag-k/media-parsers/blob/main/schemas/parser_schema.json"
instagram:
# Optional
instagram_saas_token: "asdasd"
reddit:
client_id: ""
client_secret: ""
# Optional
user_agent: "video downloader (by u/Jag_k)"
tiktok: {}
twitter:
twitter_bearer_token: "asdasd"
youtube: {}
```
## Usage
API documentation available on `/docs` endpoint.
## Clients
### Installation
```bash
poetry add media-parser # or pip install media-parser
```
### Usage
```python
from media_parser import Client, FeedbackTypes
client = Client(url="http://localhost:8000")
async def main():
# Get all media
media = await client.parse("https://www.youtube.com/watch?v=9bZkp7q19f0", user="jag-k")
print(media)
# If media is incorrect, you can send feedback
await client.send_feedback(media, "jag-k", FeedbackTypes.wrong_media)
if __name__ == '__main__':
import asyncio
asyncio.run(main())
```
## License
[MIT](https://github.com/jag-k/media-parser/blob/main/LICENSE)
Raw data
{
"_id": null,
"home_page": "https://github.com/jag-k/media-parser#readme",
"name": "media-parser",
"maintainer": "Jag_k",
"docs_url": null,
"requires_python": ">=3.11,<4.0",
"maintainer_email": "me@jagk.dev",
"keywords": "media-parser,poetry,tiktok,youtube,reddit,twitter",
"author": "Jag_k",
"author_email": "me@jagk.dev",
"download_url": "https://files.pythonhosted.org/packages/be/3d/a5d8c61f7ae7b5ae14f63ff4411b7ecd6da23fb8ae51091c5056ac3405be/media_parser-1.1.4.tar.gz",
"platform": null,
"description": "# Media Parser\n\n[![Poetry](https://img.shields.io/endpoint?url=https://python-poetry.org/badge/v0.json)](https://python-poetry.org/)\n[![Documentation Status](https://readthedocs.org/projects/media-parser/badge/?version=latest)](https://media-parser.readthedocs.io/?badge=latest)\n[![Build Docker image](https://github.com/jag-k/media-parser/actions/workflows/docker-image.yml/badge.svg)](https://github.com/jag-k/media-parser/actions/workflows/docker-image.yml)\n[![PyPI publish](https://github.com/jag-k/media-parser/actions/workflows/pypi-publish.yml/badge.svg)](https://github.com/jag-k/media-parser/actions/workflows/pypi-publish.yml)\n[![PyPI version](https://img.shields.io/pypi/v/media-parser?logo=pypi&label=media-parser)](https://pypi.org/project/media-parsers/)\n\nServer for parse Media by URL.\n\n## Supported medias\n\n- [x] Youtube\n- [x] Tiktok\n- [x] Instagram\n- [x] Twitter\n- [x] Reddit\n- [ ] Pinterest\n\n## Installation and Configuration Server\n\nUse the `docker-compose.yml` file to run the server.\n\n```yaml\nversion: \"3.8\"\n\nservice:\n media-parser:\n image: ghcr.io/jag-k/media-parser:latest\n ports:\n - 8000:8000\n environment:\n # Sentry integration (optional)\n SENTRY_DSN: \"https://abcabc@sentry.io/2\"\n SENTRY_ENVIRONMENT: \"dev\"\n\n # Enable sentry user feedback (optional)\n SENTRY_ORGANISATION_SLUG: \"sentry\"\n SENTRY_PROJECT_SLUG: \"media-parser\"\n SENTRY_AUTH_TOKEN: \"...\" # with scope project:write\n SENTRY_API_HOST: \"https://api.sentry.io/\"\n\n # Database\n MONGO_URL: \"mongodb://mongodb:27017\"\n MONGO_DATABASE: \"test\"\n\n volumes:\n - ./config:/config\n\n mongodb:\n image: mongo:latest\n volumes:\n - ./data:/data/db\n```\n\n### Parsers Configuration\n\nAll configs for parsers stored in `config/parsers.json`. JSON Schema for\nthis: [schemas/parser_schema.json](https://github.com/jag-k/media-parser/blob/main/schemas/parser_schema.json).\n\nTo enable parser, you need to add config for this parser.\nIf parser hasn't config, like `tiktok` set an empty object (`{}`) to enable it.\n\nExample:\n\n```json5\n// config/parsers.json\n{\n \"$schema\": \"https://raw.github.com/jag-k/media-parsers/blob/main/schemas/parser_schema.json\",\n \"instagram\": {\n // Optional\n \"instagram_saas_token\": \"asdasd\"\n },\n \"reddit\": {\n \"client_id\": \"\",\n \"client_secret\": \"\",\n // Optional\n \"user_agent\": \"video downloader (by u/Jag_k)\"\n },\n \"tiktok\": {},\n \"twitter\": {\n \"twitter_bearer_token\": \"asdasd\"\n },\n \"youtube\": {}\n}\n```\n\nOr you can use YAML file like `config/parsers.yaml` or `config/parsers.yml`:\n\n```yaml\n# config/parsers.yml\n$schema: \"https://raw.github.com/jag-k/media-parsers/blob/main/schemas/parser_schema.json\"\ninstagram:\n # Optional\n instagram_saas_token: \"asdasd\"\nreddit:\n client_id: \"\"\n client_secret: \"\"\n # Optional\n user_agent: \"video downloader (by u/Jag_k)\"\ntiktok: {}\ntwitter:\n twitter_bearer_token: \"asdasd\"\nyoutube: {}\n```\n\n## Usage\n\nAPI documentation available on `/docs` endpoint.\n\n## Clients\n\n### Installation\n\n```bash\npoetry add media-parser # or pip install media-parser\n```\n\n### Usage\n\n```python\nfrom media_parser import Client, FeedbackTypes\n\nclient = Client(url=\"http://localhost:8000\")\n\n\nasync def main():\n # Get all media\n media = await client.parse(\"https://www.youtube.com/watch?v=9bZkp7q19f0\", user=\"jag-k\")\n print(media)\n\n # If media is incorrect, you can send feedback\n await client.send_feedback(media, \"jag-k\", FeedbackTypes.wrong_media)\n\n\nif __name__ == '__main__':\n import asyncio\n\n asyncio.run(main())\n```\n\n## License\n\n[MIT](https://github.com/jag-k/media-parser/blob/main/LICENSE)\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "API for parsing media from social networks",
"version": "1.1.4",
"project_urls": {
"Documentation": "https://media-parser.rtfd.io",
"Homepage": "https://github.com/jag-k/media-parser#readme",
"Repository": "https://github.com/jag-k/media-parser"
},
"split_keywords": [
"media-parser",
"poetry",
"tiktok",
"youtube",
"reddit",
"twitter"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "d17421b333a7949750e58e4328c3f8dfd491fd2a6c6c917bd3571196909f0177",
"md5": "ca2f911ff20b2ced30f54f4a209969af",
"sha256": "29dd383ea7e83c8c39fb9b807ffc5c49230f469d1e2b13818be29811a83efc94"
},
"downloads": -1,
"filename": "media_parser-1.1.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "ca2f911ff20b2ced30f54f4a209969af",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.11,<4.0",
"size": 7893,
"upload_time": "2023-10-18T22:07:09",
"upload_time_iso_8601": "2023-10-18T22:07:09.973264Z",
"url": "https://files.pythonhosted.org/packages/d1/74/21b333a7949750e58e4328c3f8dfd491fd2a6c6c917bd3571196909f0177/media_parser-1.1.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "be3da5d8c61f7ae7b5ae14f63ff4411b7ecd6da23fb8ae51091c5056ac3405be",
"md5": "f4208fba58aea4720b86f7d5d6d30e3a",
"sha256": "11740ea983b6d9481a31291a79c5ae5ad20c78b2292cd66bfcd7a2ef2ebf0e6a"
},
"downloads": -1,
"filename": "media_parser-1.1.4.tar.gz",
"has_sig": false,
"md5_digest": "f4208fba58aea4720b86f7d5d6d30e3a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11,<4.0",
"size": 7148,
"upload_time": "2023-10-18T22:07:11",
"upload_time_iso_8601": "2023-10-18T22:07:11.454825Z",
"url": "https://files.pythonhosted.org/packages/be/3d/a5d8c61f7ae7b5ae14f63ff4411b7ecd6da23fb8ae51091c5056ac3405be/media_parser-1.1.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-10-18 22:07:11",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "jag-k",
"github_project": "media-parser#readme",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "media-parser"
}