tapestry-attachment-extraction.js
· 1011 B · JavaScript
Raw
/*
Attachment Extracting
for Iconfactory's Tapestry plugins
Grabs urls from a string, like `content_html` in a JSON Feed, and makes them attachments.
Made to be used in your Tapestry plugins like so:
```js
const myItem = Item.createWithUriDate(url, date);
myItem.attachments = extractAttachments(content_html, [rest?.external_url, rest?.image])
```
*/
const URL_REGEX =
/https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)/g;
const MEDIA_EXT = ["png", "tif", "tiff", "jpeg", "jpg", "gif", "bmp", "bmpf", "ico", "cur", "xbm", "aac", "aiff", "aifc", "avi", "ac3", "mp4", "m2v", "ts", "mpg", "mp2", "mp3", "au", "3gp", "3g2"];
function extractAttachments(from = "", exclude = []) {
return (from.match(URL_REGEX) || [])
.filter((url) => !exclude.includes(url))
.map((url) =>
MEDIA_EXT.some((ext) => url.includes(`.${ext}`))
? MediaAttachment.createWithUrl(url)
: LinkAttachment.createWithUrl(url)
);
}
| 1 | /* |
| 2 | Attachment Extracting |
| 3 | for Iconfactory's Tapestry plugins |
| 4 | |
| 5 | Grabs urls from a string, like `content_html` in a JSON Feed, and makes them attachments. |
| 6 | |
| 7 | Made to be used in your Tapestry plugins like so: |
| 8 | |
| 9 | ```js |
| 10 | const myItem = Item.createWithUriDate(url, date); |
| 11 | myItem.attachments = extractAttachments(content_html, [rest?.external_url, rest?.image]) |
| 12 | ``` |
| 13 | */ |
| 14 | |
| 15 | const URL_REGEX = |
| 16 | /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)/g; |
| 17 | const MEDIA_EXT = ["png", "tif", "tiff", "jpeg", "jpg", "gif", "bmp", "bmpf", "ico", "cur", "xbm", "aac", "aiff", "aifc", "avi", "ac3", "mp4", "m2v", "ts", "mpg", "mp2", "mp3", "au", "3gp", "3g2"]; |
| 18 | |
| 19 | function extractAttachments(from = "", exclude = []) { |
| 20 | return (from.match(URL_REGEX) || []) |
| 21 | .filter((url) => !exclude.includes(url)) |
| 22 | .map((url) => |
| 23 | MEDIA_EXT.some((ext) => url.includes(`.${ext}`)) |
| 24 | ? MediaAttachment.createWithUrl(url) |
| 25 | : LinkAttachment.createWithUrl(url) |
| 26 | ); |
| 27 | } |
| 28 |