media-parser


Namemedia-parser JSON
Version 1.1.4 PyPI version JSON
download
home_pagehttps://github.com/jag-k/media-parser#readme
SummaryAPI for parsing media from social networks
upload_time2023-10-18 22:07:11
maintainerJag_k
docs_urlNone
authorJag_k
requires_python>=3.11,<4.0
licenseMIT
keywords media-parser poetry tiktok youtube reddit twitter
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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"
}
        
Elapsed time: 0.12254s