podcastfy


Namepodcastfy JSON
Version 0.4.1 PyPI version JSON
download
home_pageNone
SummaryAn Open Source alternative to NotebookLM's podcast feature: Transforming Multimodal Content into Captivating Multilingual Audio Conversations with GenAI
upload_time2024-11-16 20:05:35
maintainerNone
docs_urlNone
authorTharsis T. P. Souza
requires_python<4.0,>=3.11
licenseApache-2.0
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <div align="center">
<a name="readme-top"></a>

# Podcastfy.ai 🎙️🤖
An Open Source API alternative to NotebookLM's podcast feature: Transforming Multimodal Content into Captivating Multilingual Audio Conversations with GenAI



https://github.com/user-attachments/assets/5d42c106-aabe-44c1-8498-e9c53545ba40



[Paper](https://github.com/souzatharsis/podcastfy/blob/main/paper/paper.pdf) |
[Python Package](https://github.com/souzatharsis/podcastfy/blob/59563ee105a0d1dbb46744e0ff084471670dd725/podcastfy.ipynb) |
[CLI](https://github.com/souzatharsis/podcastfy/blob/59563ee105a0d1dbb46744e0ff084471670dd725/usage/cli.md) |
[REST API](https://github.com/souzatharsis/podcastfy/blob/59563ee105a0d1dbb46744e0ff084471670dd725/usage/api.md) |
[Web App](https://huggingface.co/spaces/thatupiso/Podcastfy.ai_demo) |
[Feedback](https://github.com/souzatharsis/podcastfy/issues)

[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/souzatharsis/podcastfy/blob/main/podcastfy.ipynb)
[![PyPi Status](https://img.shields.io/pypi/v/podcastfy)](https://pypi.org/project/podcastfy/)
![PyPI Downloads](https://static.pepy.tech/badge/podcastfy)
[![Issues](https://img.shields.io/github/issues-raw/souzatharsis/podcastfy)](https://github.com/souzatharsis/podcastfy/issues)
[![Pytest](https://github.com/souzatharsis/podcastfy/actions/workflows/python-app.yml/badge.svg)](https://github.com/souzatharsis/podcastfy/actions/workflows/python-app.yml)
[![Docker](https://github.com/souzatharsis/podcastfy/actions/workflows/docker-publish.yml/badge.svg)](https://github.com/souzatharsis/podcastfy/actions/workflows/docker-publish.yml)
[![Documentation Status](https://readthedocs.org/projects/podcastfy/badge/?version=latest)](https://podcastfy.readthedocs.io/en/latest/?badge=latest)
[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
![GitHub Repo stars](https://img.shields.io/github/stars/souzatharsis/podcastfy)
</div>

Podcastfy is an open-source Python package that transforms multi-modal content (text, images) into engaging, multi-lingual audio conversations using GenAI. Input content includes websites, PDFs, images, YouTube videos, as well as user provided topics.

Unlike closed-source UI-based tools focused primarily on research synthesis (e.g. NotebookLM ❤️), Podcastfy focuses on open source, programmatic and bespoke generation of engaging, conversational content from a multitude of multi-modal sources, enabling customization and scale.

[![Star History Chart](https://api.star-history.com/svg?repos=souzatharsis/podcastfy&type=Date&theme=dark)](https://api.star-history.com/svg?repos=souzatharsis/podcastfy&type=Date&theme=dark)

## Audio Examples 🔊
This sample collection was generated using this [Python Notebook](usage/examples.ipynb).

### Images
Sample 1: Senecio, 1922 (Paul Klee) and Connection of Civilizations (2017) by Gheorghe Virtosu
***
<img src="data/images/Senecio.jpeg" alt="Senecio, 1922 (Paul Klee)" width="20%" height="auto"> <img src="data/images/connection.jpg" alt="Connection of Civilizations (2017) by Gheorghe Virtosu " width="21.5%" height="auto">
<video src="https://github.com/user-attachments/assets/a4134a0d-138c-4ab4-bc70-0f53b3507e6b"></video>  
***
Sample 2: The Great Wave off Kanagawa, 1831 (Hokusai) and Takiyasha the Witch and the Skeleton Spectre, c. 1844 (Kuniyoshi)
***
 <img src="data/images/japan_1.jpg" alt="The Great Wave off Kanagawa, 1831 (Hokusai)" width="20%" height="auto"> <img src="data/images/japan2.jpg" alt="Takiyasha the Witch and the Skeleton Spectre, c. 1844 (Kuniyoshi)" width="21.5%" height="auto"> 
<video src="https://github.com/user-attachments/assets/f6aaaeeb-39d2-4dde-afaf-e2cd212e9fed"></video>  
***
Sample 3: Pop culture icon Taylor Swift and Mona Lisa, 1503 (Leonardo da Vinci)
***
<img src="data/images/taylor.png" alt="Taylor Swift" width="28%" height="auto"> <img src="data/images/monalisa.jpeg" alt="Mona Lisa" width="10.5%" height="auto">
<video src="https://github.com/user-attachments/assets/3b6f7075-159b-4540-946f-3f3907dffbca"></video> 


### Text
| Audio | Description  | Source |
|-------|--|--------|
| <video src="https://github.com/user-attachments/assets/ef41a207-a204-4b60-a11e-06d66a0fbf06"></video>  | Person Website | [Website](https://www.souzatharsis.com) |
| [Audio](https://soundcloud.com/high-lander123/amodei?in=high-lander123/sets/podcastfy-sample-audio-longform&si=b8dfaf4e3ddc4651835e277500384156) (`longform=True`) | Lex Fridman Podcast: Dario Amodei Anthropic's CEO |  [Youtube](https://www.youtube.com/watch?v=ugvHCXCOmm4) |
| [Audio](https://soundcloud.com/high-lander123/benjamin?in=high-lander123/sets/podcastfy-sample-audio-longform&si=dca7e2eec1c94252be18b8794499959a&utm_source=clipboard&utm_medium=text&utm_campaign=social_sharing) (`longform=True`)| Benjamin Franklin's Autobiography | [Book](https://www.gutenberg.org/cache/epub/148/pg148.txt) |

### Multi-Lingual Text
| Language | Content Type | Description | Audio | Source |
|----------|--------------|-------------|-------|--------|
| French | Website | Agroclimate research information | [Audio](https://audio.com/thatupiso/audio/podcast-fr-agro) | [Website](https://agroclim.inrae.fr/) |
| Portuguese-BR | News Article | Election polls in São Paulo | [Audio](https://audio.com/thatupiso/audio/podcast-thatupiso-br) | [Website](https://noticias.uol.com.br/eleicoes/2024/10/03/nova-pesquisa-datafolha-quem-subiu-e-quem-caiu-na-disputa-de-sp-03-10.htm) |

## Features ✨

- Generate conversational content from multiple sources and formats (images, text, websites, YouTube, and PDFs).
- Generate shorts (2-5 minutes) or longform (30+ minutes) podcasts.
- Customize transcript and audio generation (e.g., style, language, structure).
- Generate transcripts using 100+ LLM models (OpenAI, Anthropic, Google etc).
- Leverage local LLMs for transcript generation for increased privacy and control.
- Integrate with advanced text-to-speech models (OpenAI, Google, ElevenLabs, and Microsoft Edge).
- Provide multi-language support for global content creation.
- Integrate seamlessly with CLI and Python packages for automated workflows.

## Built with Podcastfy 🚀

- [OpenNotebook](https://www.open-notebook.ai/)
- [SurfSense](https://www.surfsense.net/)
- [Podcast-llm](https://github.com/evandempsey/podcast-llm)
- [Podcastfy-HuggingFace App](https://huggingface.co/spaces/thatupiso/Podcastfy.ai_demo)
- [Podcastfy-UI](https://github.com/giulioco/podcastfy-ui)

## Updates 🚀🚀

### v0.4.0+ release
- Released new Multi-Speaker TTS model (is it the one NotebookLM uses?!?)
- Generate short or longform podcasts
- Generate podcasts from input topic using grounded real-time web search
- Integrate with 100+ LLM models (OpenAI, Anthropic, Google etc) for transcript generation

See [CHANGELOG](CHANGELOG.md) for more details.

## Quickstart 💻

### Prerequisites
- Python 3.11 or higher
- `$ pip install ffmpeg` (for audio processing)

### Setup
1. Install from PyPI
  `$ pip install podcastfy`

2. Set up your [API keys](usage/config.md)

### Python
```python
from podcastfy.client import generate_podcast

audio_file = generate_podcast(urls=["<url1>", "<url2>"])
```
### CLI
```
python -m podcastfy.client --url <url1> --url <url2>
```
  
## Usage 💻

- [Python Package Quickstart](podcastfy.ipynb)

- [How to](usage/how-to.md)

- [Python Package Reference Manual](https://podcastfy.readthedocs.io/en/latest/podcastfy.html)

- [REST API Reference Manual](usage/api.md)

- [CLI](usage/cli.md)


Experience Podcastfy with our [HuggingFace](https://huggingface.co/spaces/thatupiso/Podcastfy.ai_demo) 🤗 Spaces app. (Note: This UI app is less extensively tested than the Python package.)

## Customization 🔧

Podcastfy offers a range of customization options to tailor your AI-generated podcasts:
- Customize podcast [conversation](usage/conversation_custom.md) (e.g. format, style, voices)
- Choose to run [Local LLMs](usage/local_llm.md) (156+ HuggingFace models)
- Set [System Settings](usage/config_custom.md) (e.g. output directory settings)


## License

This software is licensed under [Apache 2.0](LICENSE). See [instructions](usage/license-guide.md) if you would like to use podcastfy in your software.

## Contributing 🤝

We welcome contributions! See [Guidelines](GUIDELINES.md) for more details.

## Example Use Cases 🎧🎶

- **Content Creators** can use `Podcastfy` to convert blog posts, articles, or multimedia content into podcast-style audio, enabling them to reach broader audiences. By transforming content into an audio format, creators can cater to users who prefer listening over reading.

- **Educators** can transform lecture notes, presentations, and visual materials into audio conversations, making educational content more accessible to students with different learning preferences. This is particularly beneficial for students with visual impairments or those who have difficulty processing written information.

- **Researchers** can convert research papers, visual data, and technical content into conversational audio. This makes it easier for a wider audience, including those with disabilities, to consume and understand complex scientific information. Researchers can also create audio summaries of their work to enhance accessibility.

- **Accessibility Advocates** can use `Podcastfy` to promote digital accessibility by providing a tool that converts multimodal content into auditory formats. This helps individuals with visual impairments, dyslexia, or other disabilities that make it challenging to consume written or visual content.
  
## Contributors

<a href="https://github.com/souzatharsis/podcastfy/graphs/contributors">
  <img alt="contributors" src="https://contrib.rocks/image?repo=souzatharsis/podcastfy"/>
</a>

<p align="right" style="font-size: 14px; color: #555; margin-top: 20px;">
    <a href="#readme-top" style="text-decoration: none; color: #007bff; font-weight: bold;">
        ↑ Back to Top ↑
    </a>
</p>

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "podcastfy",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.11",
    "maintainer_email": null,
    "keywords": null,
    "author": "Tharsis T. P. Souza",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/8f/7f/f4bf76dc4db77bafd427a7d3ac69c6541ca044f9916118169b16ef0acff7/podcastfy-0.4.1.tar.gz",
    "platform": null,
    "description": "<div align=\"center\">\n<a name=\"readme-top\"></a>\n\n# Podcastfy.ai \ud83c\udf99\ufe0f\ud83e\udd16\nAn Open Source API alternative to NotebookLM's podcast feature: Transforming Multimodal Content into Captivating Multilingual Audio Conversations with GenAI\n\n\n\nhttps://github.com/user-attachments/assets/5d42c106-aabe-44c1-8498-e9c53545ba40\n\n\n\n[Paper](https://github.com/souzatharsis/podcastfy/blob/main/paper/paper.pdf) |\n[Python Package](https://github.com/souzatharsis/podcastfy/blob/59563ee105a0d1dbb46744e0ff084471670dd725/podcastfy.ipynb) |\n[CLI](https://github.com/souzatharsis/podcastfy/blob/59563ee105a0d1dbb46744e0ff084471670dd725/usage/cli.md) |\n[REST API](https://github.com/souzatharsis/podcastfy/blob/59563ee105a0d1dbb46744e0ff084471670dd725/usage/api.md) |\n[Web App](https://huggingface.co/spaces/thatupiso/Podcastfy.ai_demo) |\n[Feedback](https://github.com/souzatharsis/podcastfy/issues)\n\n[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/souzatharsis/podcastfy/blob/main/podcastfy.ipynb)\n[![PyPi Status](https://img.shields.io/pypi/v/podcastfy)](https://pypi.org/project/podcastfy/)\n![PyPI Downloads](https://static.pepy.tech/badge/podcastfy)\n[![Issues](https://img.shields.io/github/issues-raw/souzatharsis/podcastfy)](https://github.com/souzatharsis/podcastfy/issues)\n[![Pytest](https://github.com/souzatharsis/podcastfy/actions/workflows/python-app.yml/badge.svg)](https://github.com/souzatharsis/podcastfy/actions/workflows/python-app.yml)\n[![Docker](https://github.com/souzatharsis/podcastfy/actions/workflows/docker-publish.yml/badge.svg)](https://github.com/souzatharsis/podcastfy/actions/workflows/docker-publish.yml)\n[![Documentation Status](https://readthedocs.org/projects/podcastfy/badge/?version=latest)](https://podcastfy.readthedocs.io/en/latest/?badge=latest)\n[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n![GitHub Repo stars](https://img.shields.io/github/stars/souzatharsis/podcastfy)\n</div>\n\nPodcastfy is an open-source Python package that transforms multi-modal content (text, images) into engaging, multi-lingual audio conversations using GenAI. Input content includes websites, PDFs, images, YouTube videos, as well as user provided topics.\n\nUnlike closed-source UI-based tools focused primarily on research synthesis (e.g. NotebookLM \u2764\ufe0f), Podcastfy focuses on open source, programmatic and bespoke generation of engaging, conversational content from a multitude of multi-modal sources, enabling customization and scale.\n\n[![Star History Chart](https://api.star-history.com/svg?repos=souzatharsis/podcastfy&type=Date&theme=dark)](https://api.star-history.com/svg?repos=souzatharsis/podcastfy&type=Date&theme=dark)\n\n## Audio Examples \ud83d\udd0a\nThis sample collection was generated using this [Python Notebook](usage/examples.ipynb).\n\n### Images\nSample 1: Senecio, 1922 (Paul Klee) and Connection of Civilizations (2017) by Gheorghe Virtosu\n***\n<img src=\"data/images/Senecio.jpeg\" alt=\"Senecio, 1922 (Paul Klee)\" width=\"20%\" height=\"auto\"> <img src=\"data/images/connection.jpg\" alt=\"Connection of Civilizations (2017) by Gheorghe Virtosu \" width=\"21.5%\" height=\"auto\">\n<video src=\"https://github.com/user-attachments/assets/a4134a0d-138c-4ab4-bc70-0f53b3507e6b\"></video>  \n***\nSample 2: The Great Wave off Kanagawa, 1831 (Hokusai) and Takiyasha the Witch and the Skeleton Spectre, c. 1844 (Kuniyoshi)\n***\n <img src=\"data/images/japan_1.jpg\" alt=\"The Great Wave off Kanagawa, 1831 (Hokusai)\" width=\"20%\" height=\"auto\"> <img src=\"data/images/japan2.jpg\" alt=\"Takiyasha the Witch and the Skeleton Spectre, c. 1844 (Kuniyoshi)\" width=\"21.5%\" height=\"auto\"> \n<video src=\"https://github.com/user-attachments/assets/f6aaaeeb-39d2-4dde-afaf-e2cd212e9fed\"></video>  \n***\nSample 3: Pop culture icon Taylor Swift and Mona Lisa, 1503 (Leonardo da Vinci)\n***\n<img src=\"data/images/taylor.png\" alt=\"Taylor Swift\" width=\"28%\" height=\"auto\"> <img src=\"data/images/monalisa.jpeg\" alt=\"Mona Lisa\" width=\"10.5%\" height=\"auto\">\n<video src=\"https://github.com/user-attachments/assets/3b6f7075-159b-4540-946f-3f3907dffbca\"></video> \n\n\n### Text\n| Audio | Description  | Source |\n|-------|--|--------|\n| <video src=\"https://github.com/user-attachments/assets/ef41a207-a204-4b60-a11e-06d66a0fbf06\"></video>  | Person Website | [Website](https://www.souzatharsis.com) |\n| [Audio](https://soundcloud.com/high-lander123/amodei?in=high-lander123/sets/podcastfy-sample-audio-longform&si=b8dfaf4e3ddc4651835e277500384156) (`longform=True`) | Lex Fridman Podcast: Dario Amodei Anthropic's CEO |  [Youtube](https://www.youtube.com/watch?v=ugvHCXCOmm4) |\n| [Audio](https://soundcloud.com/high-lander123/benjamin?in=high-lander123/sets/podcastfy-sample-audio-longform&si=dca7e2eec1c94252be18b8794499959a&utm_source=clipboard&utm_medium=text&utm_campaign=social_sharing) (`longform=True`)| Benjamin Franklin's Autobiography | [Book](https://www.gutenberg.org/cache/epub/148/pg148.txt) |\n\n### Multi-Lingual Text\n| Language | Content Type | Description | Audio | Source |\n|----------|--------------|-------------|-------|--------|\n| French | Website | Agroclimate research information | [Audio](https://audio.com/thatupiso/audio/podcast-fr-agro) | [Website](https://agroclim.inrae.fr/) |\n| Portuguese-BR | News Article | Election polls in S\u00e3o Paulo | [Audio](https://audio.com/thatupiso/audio/podcast-thatupiso-br) | [Website](https://noticias.uol.com.br/eleicoes/2024/10/03/nova-pesquisa-datafolha-quem-subiu-e-quem-caiu-na-disputa-de-sp-03-10.htm) |\n\n## Features \u2728\n\n- Generate conversational content from multiple sources and formats (images, text, websites, YouTube, and PDFs).\n- Generate shorts (2-5 minutes) or longform (30+ minutes) podcasts.\n- Customize transcript and audio generation (e.g., style, language, structure).\n- Generate transcripts using 100+ LLM models (OpenAI, Anthropic, Google etc).\n- Leverage local LLMs for transcript generation for increased privacy and control.\n- Integrate with advanced text-to-speech models (OpenAI, Google, ElevenLabs, and Microsoft Edge).\n- Provide multi-language support for global content creation.\n- Integrate seamlessly with CLI and Python packages for automated workflows.\n\n## Built with Podcastfy \ud83d\ude80\n\n- [OpenNotebook](https://www.open-notebook.ai/)\n- [SurfSense](https://www.surfsense.net/)\n- [Podcast-llm](https://github.com/evandempsey/podcast-llm)\n- [Podcastfy-HuggingFace App](https://huggingface.co/spaces/thatupiso/Podcastfy.ai_demo)\n- [Podcastfy-UI](https://github.com/giulioco/podcastfy-ui)\n\n## Updates \ud83d\ude80\ud83d\ude80\n\n### v0.4.0+ release\n- Released new Multi-Speaker TTS model (is it the one NotebookLM uses?!?)\n- Generate short or longform podcasts\n- Generate podcasts from input topic using grounded real-time web search\n- Integrate with 100+ LLM models (OpenAI, Anthropic, Google etc) for transcript generation\n\nSee [CHANGELOG](CHANGELOG.md) for more details.\n\n## Quickstart \ud83d\udcbb\n\n### Prerequisites\n- Python 3.11 or higher\n- `$ pip install ffmpeg` (for audio processing)\n\n### Setup\n1. Install from PyPI\n  `$ pip install podcastfy`\n\n2. Set up your [API keys](usage/config.md)\n\n### Python\n```python\nfrom podcastfy.client import generate_podcast\n\naudio_file = generate_podcast(urls=[\"<url1>\", \"<url2>\"])\n```\n### CLI\n```\npython -m podcastfy.client --url <url1> --url <url2>\n```\n  \n## Usage \ud83d\udcbb\n\n- [Python Package Quickstart](podcastfy.ipynb)\n\n- [How to](usage/how-to.md)\n\n- [Python Package Reference Manual](https://podcastfy.readthedocs.io/en/latest/podcastfy.html)\n\n- [REST API Reference Manual](usage/api.md)\n\n- [CLI](usage/cli.md)\n\n\nExperience Podcastfy with our [HuggingFace](https://huggingface.co/spaces/thatupiso/Podcastfy.ai_demo) \ud83e\udd17 Spaces app. (Note: This UI app is less extensively tested than the Python package.)\n\n## Customization \ud83d\udd27\n\nPodcastfy offers a range of customization options to tailor your AI-generated podcasts:\n- Customize podcast [conversation](usage/conversation_custom.md) (e.g. format, style, voices)\n- Choose to run [Local LLMs](usage/local_llm.md) (156+ HuggingFace models)\n- Set [System Settings](usage/config_custom.md) (e.g. output directory settings)\n\n\n## License\n\nThis software is licensed under [Apache 2.0](LICENSE). See [instructions](usage/license-guide.md) if you would like to use podcastfy in your software.\n\n## Contributing \ud83e\udd1d\n\nWe welcome contributions! See [Guidelines](GUIDELINES.md) for more details.\n\n## Example Use Cases \ud83c\udfa7\ud83c\udfb6\n\n- **Content Creators** can use `Podcastfy` to convert blog posts, articles, or multimedia content into podcast-style audio, enabling them to reach broader audiences. By transforming content into an audio format, creators can cater to users who prefer listening over reading.\n\n- **Educators** can transform lecture notes, presentations, and visual materials into audio conversations, making educational content more accessible to students with different learning preferences. This is particularly beneficial for students with visual impairments or those who have difficulty processing written information.\n\n- **Researchers** can convert research papers, visual data, and technical content into conversational audio. This makes it easier for a wider audience, including those with disabilities, to consume and understand complex scientific information. Researchers can also create audio summaries of their work to enhance accessibility.\n\n- **Accessibility Advocates** can use `Podcastfy` to promote digital accessibility by providing a tool that converts multimodal content into auditory formats. This helps individuals with visual impairments, dyslexia, or other disabilities that make it challenging to consume written or visual content.\n  \n## Contributors\n\n<a href=\"https://github.com/souzatharsis/podcastfy/graphs/contributors\">\n  <img alt=\"contributors\" src=\"https://contrib.rocks/image?repo=souzatharsis/podcastfy\"/>\n</a>\n\n<p align=\"right\" style=\"font-size: 14px; color: #555; margin-top: 20px;\">\n    <a href=\"#readme-top\" style=\"text-decoration: none; color: #007bff; font-weight: bold;\">\n        \u2191 Back to Top \u2191\n    </a>\n</p>\n",
    "bugtrack_url": null,
    "license": "Apache-2.0",
    "summary": "An Open Source alternative to NotebookLM's podcast feature: Transforming Multimodal Content into Captivating Multilingual Audio Conversations with GenAI",
    "version": "0.4.1",
    "project_urls": null,
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "af55c66aab5fa7dbc56f036de26d6d85235b819c161403164b7f60779cc4f328",
                "md5": "4f5fa31cfbeed190b69a0c1263da9429",
                "sha256": "1a4b5544a2b4dbd871ac06fbb51567c5828aa7805c1a45f13ae5bad2e3cfd9f2"
            },
            "downloads": -1,
            "filename": "podcastfy-0.4.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "4f5fa31cfbeed190b69a0c1263da9429",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.11",
            "size": 937946,
            "upload_time": "2024-11-16T20:05:33",
            "upload_time_iso_8601": "2024-11-16T20:05:33.398315Z",
            "url": "https://files.pythonhosted.org/packages/af/55/c66aab5fa7dbc56f036de26d6d85235b819c161403164b7f60779cc4f328/podcastfy-0.4.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8f7ff4bf76dc4db77bafd427a7d3ac69c6541ca044f9916118169b16ef0acff7",
                "md5": "5e404ab3f8338cb7393ea954b9a2e178",
                "sha256": "1800be6b19026cf970e209ad9e7cbd3c2599d37b82cc6fbf3b6ef41e3f85a169"
            },
            "downloads": -1,
            "filename": "podcastfy-0.4.1.tar.gz",
            "has_sig": false,
            "md5_digest": "5e404ab3f8338cb7393ea954b9a2e178",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.11",
            "size": 932884,
            "upload_time": "2024-11-16T20:05:35",
            "upload_time_iso_8601": "2024-11-16T20:05:35.797453Z",
            "url": "https://files.pythonhosted.org/packages/8f/7f/f4bf76dc4db77bafd427a7d3ac69c6541ca044f9916118169b16ef0acff7/podcastfy-0.4.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-11-16 20:05:35",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "podcastfy"
}
        
Elapsed time: 9.51329s