Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/py-package/masonite-instant-articles

This helps you generate facebooks instant articles and also regular feeds with enough customizations you might need.
https://github.com/py-package/masonite-instant-articles

feed instant-articles masonite masonite-package package rss

Last synced: about 14 hours ago
JSON representation

This helps you generate facebooks instant articles and also regular feeds with enough customizations you might need.

Awesome Lists containing this project

README

        

# Instant Articles





GitHub Workflow Status
PyPI
Python Version
GitHub release (latest by date including pre-releases)
License
star
Code style: black

**If you are seeking package for generating instant article or feeds in Masonite then yes, this package is for you.**

> This helps you generate facebooks instant articles and also regular feeds with enough customizations you might need.

## Installation

```shell
pip install masonite-instant-article
```

## Configuration

Add `InstantArticleProvider` to your project in `config/providers.py`:

```python
# config/providers.py
# ...
from instant_article.providers import InstantArticleProvider

# ...
PROVIDERS = [
# ...
# Third Party Providers
InstantArticleProvider
# ...
]
```

Then you can publish the configuration by doing:

```bash
python craft package:publish instant_article
```

## Update Configurations

You need to define options in your `instant_article` configuration file inside `config` directory.

```python
# config
INSTANT_ARTICLE = {
"force_validate": False,
"feed_details": {
"your-custom-route-name.xml": {
'model': 'path-to-your-model-class',
'title': '',
'description': '',
'lang': 'en-us',
'brand': '',
'type': 'instant-article' # feed, instant-article
}
}
}

# Example
INSTANT_ARTICLE = {
"force_validate": False,
"feed_details": {
"blogs-rss.xml": {
'model': 'app.models.Blog',
'title': 'Blog Feed',
'description': '',
'lang': 'en-us',
'brand': '',
'type': 'instant-article' # feed, instant-article
},
"news-rss.xml": {
'model': 'app.models.News',
'title': 'News Feed',
'description': '',
'lang': 'en-us',
'brand': '',
'type': 'instant-article' # feed, instant-article
}
}
}

# Above feeds can be access from:
"""
https://your-domain.com/rss/blogs-rss.xml
https://your-domain.com/rss/news-rss.xml
"""
```

## Implementation

```python
from instant_article.interfaces.instant_article_interface import InstantArticleInterface
from instant_article.models.instant_article import InstantArticle

class YourModel(Model, InstantArticleInterface):

@staticmethod
def get_feed_items():
return YourModel.all() # can be any query returning proper values

def format_feed(self):
return InstantArticle.create({
'id': self.id, # required | integer
'title': self.name, # required | string
'subtitle': '', # nullable | string
'kicker': '', # nullable | string
'summary': '', # required | string
'description': '', # required | string
'cover': '', # nullable | string
'updated': self.updated_at, # required | date
'published': self.created_at, # required | date
'link': '', # full url to item...
'author': '' # nullable | email | string
})
```

Your project is now ready to go :+1:.

## Contributing

Please read the [Contributing Documentation](CONTRIBUTING.md) here.

## License

masonite-filemanager is open-sourced software licensed under the [MIT license](LICENSE).