* Created first dev version of Telegram channels parser * Created endpoint for get Telegram Channel RSS * Added *.session and venv/ in .gitignore * Added dependency telethon * Added script for init Telethon * Removed unnecessary script parse.py * Added possibility for dynamic generate RSS feeds from Telegram channel * Deleted saving Telegram messages in database * Minor refactor Created separated files: parsers.py and utils.py * Enhanced text parser: parse title and description if can * Added attachment parsers: video, photo, voice and file parsers * Added possibility for merge grouped messages into one item * Renamed url for parse Telegram channel from "rss/telegram/<str:channel>" to "parsing/telegram/<str:channel>/" * Format code with black * Refactor: created package parsing.telegram and rename utils to models * Added Makefile target telegram
35 lines
773 B
Python
35 lines
773 B
Python
from django.contrib.syndication.views import Feed
|
|
from parsing.telegram.telegram import get_channel
|
|
|
|
|
|
class TelegramChannelFeed(Feed):
|
|
|
|
FEED_ITEMS = 30
|
|
|
|
def get_object(self, request, channel):
|
|
feed_items = (
|
|
int(request.GET["size"]) if "size" in request.GET else self.FEED_ITEMS
|
|
)
|
|
return get_channel(channel, feed_items)
|
|
|
|
def title(self, obj):
|
|
return obj.title
|
|
|
|
def link(self, obj):
|
|
return obj.link
|
|
|
|
def description(self, obj):
|
|
return obj.description
|
|
|
|
def items(self, obj):
|
|
return obj.messages
|
|
|
|
def item_title(self, item):
|
|
return item.title
|
|
|
|
def item_description(self, item):
|
|
return item.description
|
|
|
|
def item_link(self, item):
|
|
return item.link
|