Commit 200605c2 authored by Vanja Matija's avatar Vanja Matija
Browse files

Update README.md

parent 7b1bd11c
Pipeline #14267 passed with stage
in 36 seconds
Showing with 35 additions and 22 deletions
+35 -22
# link-reader
This Plugin will read all Link schema record in the pod and parse this link in to LinkPreview
LinkPreview contains :
-title
-description
-force_title
-site_name
-image
-absolute_image
# Install
......@@ -27,4 +37,4 @@ To run the plugin:
```
simulate_run_plugin_from_frontend --metadata "metadata.json"
```
\ No newline at end of file
```
......@@ -7,12 +7,12 @@ from pymemri.data.schema import Item, Message, Photo, Edge
# pass
class LinkCollector(Item):
class Link(Item):
link: Optional[str] = None
message: List[Message] = None
class LinkReader(Item):
class LinkPreview(Item):
title: Optional[str] = None
description: Optional[str] = None
force_title: Optional[str] = None
......@@ -20,8 +20,8 @@ class LinkReader(Item):
image: List[Photo] = None
absolute_image: List[Photo] = None
link_collector: List[LinkCollector] = None
link: List[Link] = None
class LinkCollector(LinkCollector):
link_reader: List[LinkReader] = None
class Link(Link):
link_preview: List[LinkPreview] = None
from loguru import logger
from pymemri.plugin.pluginbase import PluginBase
from linkpreview import link_preview
from link_reader.data.schema import LinkCollector, LinkReader as LinkReaderItem, Photo, Edge
from link_reader.data.schema import Link, LinkPreview, Photo, Edge
import requests
......@@ -13,11 +13,10 @@ class LinkReader(PluginBase):
super().__init__(**kwargs)
def add_to_schema(self):
return self.client.add_to_schema(LinkCollector, LinkReaderItem, Photo)
return self.client.add_to_schema(Link, LinkPreview, Photo)
def load_link_collector(self):
result = {}
search_filter = {"type": "LinkCollector"}
search_filter = {"type": "Link"}
for batch in self.client.search_paginate(search_filter, 100):
for item in batch:
try:
......@@ -30,16 +29,19 @@ class LinkReader(PluginBase):
files = []
creates = []
preview = link_preview(item.link)
if not item.link_reader:
link_reader_item = LinkReaderItem(
if not item.link_preview:
link_preview_item = LinkPreview(
title=preview.title,
description=preview.description,
force_title=preview.force_title,
site_name=preview.site_name,
)
creates.append(link_reader_item)
creates.append(link_preview_item)
edges.extend(
[link_reader_item, item, "link_collector", item, link_reader_item, "link_reader"]
[
Edge(link_preview_item, item, "link"),
Edge(item, link_preview_item, "link_preview")
]
)
try:
image = requests.get(preview.image)
......@@ -49,7 +51,7 @@ class LinkReader(PluginBase):
edges.extend(
[
Edge(img, img.file[0], "file"),
Edge(link_reader_item, img, "image"),
Edge(link_preview_item, img, "image"),
]
)
files.append(img.data)
......@@ -64,7 +66,7 @@ class LinkReader(PluginBase):
edges.extend(
[
Edge(absolute_img, absolute_img.file[0], "file"),
Edge(link_reader_item, absolute_img, "absolute_image"),
Edge(link_preview_item, absolute_img, "absolute_image"),
]
)
files.append(absolute_img.data)
......
......@@ -2,7 +2,7 @@ from unittest import TestCase
from pymemri import PodClient
from link_reader.data.schema import LinkReader as LinkReaderItem, Photo, Edge
from link_reader.data.schema import LinkPreview, Photo, Edge, Link
from link_reader.plugin import LinkReader
from tests.loader import load_mock_data
from linkpreview import link_preview
......@@ -13,14 +13,15 @@ class LinkReaderTest(TestCase):
plugin = LinkReader(client=client)
def test_link_reader(self):
link_collector = load_mock_data("link_collector")
for link in link_collector:
url = link["link"]
link_collectors = load_mock_data("link_collector")
for link in link_collectors:
edges = []
files = []
creates = []
preview = link_preview(url)
link_reader_item = LinkReaderItem(
link_item = Link(link=link["link"])
self.plugin.client.create(link_item)
preview = link_preview(link["link"])
link_reader_item = LinkPreview(
title=preview.title,
description=preview.description,
force_title=preview.force_title,
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment