Initial Upload
This commit is contained in:
201
modules/mastodon.xml
Normal file
201
modules/mastodon.xml
Normal file
@@ -0,0 +1,201 @@
|
||||
<!--
|
||||
~ Copyright (C) 2024 Xibo Signage Ltd
|
||||
~
|
||||
~ Xibo - Digital Signage - https://xibosignage.com
|
||||
~
|
||||
~ This file is part of Xibo.
|
||||
~
|
||||
~ Xibo is free software: you can redistribute it and/or modify
|
||||
~ it under the terms of the GNU Affero General Public License as published by
|
||||
~ the Free Software Foundation, either version 3 of the License, or
|
||||
~ any later version.
|
||||
~
|
||||
~ Xibo is distributed in the hope that it will be useful,
|
||||
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
~ GNU Affero General Public License for more details.
|
||||
~
|
||||
~ You should have received a copy of the GNU Affero General Public License
|
||||
~ along with Xibo. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
<module>
|
||||
<id>core-mastodon</id>
|
||||
<name>Mastodon</name>
|
||||
<author>Core</author>
|
||||
<description>Mastodon</description>
|
||||
<icon>fab fa-mastodon</icon>
|
||||
<class>\Xibo\Widget\MastodonProvider</class>
|
||||
<type>mastodon</type>
|
||||
<dataType>social-media</dataType>
|
||||
<dataCacheKey>%hashtag%_%numItems%_%searchOn%_%onlyMedia%_%serverUrl%_%userName%</dataCacheKey>
|
||||
<fallbackData>1</fallbackData>
|
||||
<schemaVersion>1</schemaVersion>
|
||||
<assignable>1</assignable>
|
||||
<regionSpecific>1</regionSpecific>
|
||||
<renderAs>html</renderAs>
|
||||
<defaultDuration>60</defaultDuration>
|
||||
<settings>
|
||||
<property id="defaultServerUrl" type="text">
|
||||
<title>Default Server URL</title>
|
||||
<helpText>The default URL for the mastodon instance.</helpText>
|
||||
<default>https://mastodon.social</default>
|
||||
</property>
|
||||
<property id="cachePeriodImages" type="number">
|
||||
<title>Cache Period for Images</title>
|
||||
<helpText>Please enter the number of hours you would like to cache mastodon images.</helpText>
|
||||
<default>24</default>
|
||||
</property>
|
||||
<property id="cachePeriod" type="number">
|
||||
<title>Cache Period</title>
|
||||
<helpText>Please enter the number of seconds you would like to cache mastodon search results.</helpText>
|
||||
<default>3600</default>
|
||||
</property>
|
||||
</settings>
|
||||
<properties>
|
||||
<property id="hashtag" type="text">
|
||||
<title>Hashtag</title>
|
||||
<helpText>Test your search by using a Hashtag to return results from the mastodon URL provided in the module settings.</helpText>
|
||||
<default></default>
|
||||
</property>
|
||||
<property id="searchOn" type="dropdown" mode="single">
|
||||
<title>Search on</title>
|
||||
<helpText>Show only local/remote server posts.</helpText>
|
||||
<default>all</default>
|
||||
<options>
|
||||
<option name="all">All known servers</option>
|
||||
<option name="local">Local server</option>
|
||||
<option name="remote">Remote servers</option>
|
||||
</options>
|
||||
</property>
|
||||
<property id="serverUrl" type="text">
|
||||
<title>Server</title>
|
||||
<helpText>Leave empty to use the one from settings.</helpText>
|
||||
<default></default>
|
||||
</property>
|
||||
<property id="userName" type="text">
|
||||
<title>Username</title>
|
||||
<helpText>Provide Mastodon username to get public statuses from the account.</helpText>
|
||||
<default></default>
|
||||
</property>
|
||||
<property id="numItems" type="number">
|
||||
<title>Count</title>
|
||||
<helpText>The number of posts to return (default = 15).</helpText>
|
||||
<default>15</default>
|
||||
<rule>
|
||||
<test type="or" message="When duration is per item then number of items must be 1 or higher">
|
||||
<condition type="gte">1</condition>
|
||||
<condition field="durationIsPerItem" type="eq">0</condition>
|
||||
</test>
|
||||
</rule>
|
||||
</property>
|
||||
<property id="onlyMedia" type="checkbox">
|
||||
<title>Only posts with attached media?</title>
|
||||
<helpText>Return only posts which included attached media.</helpText>
|
||||
<default>0</default>
|
||||
</property>
|
||||
<property id="durationIsPerItem" type="checkbox">
|
||||
<title>Duration is per item</title>
|
||||
<helpText>The duration specified is per item otherwise it is per feed.</helpText>
|
||||
<default>0</default>
|
||||
</property>
|
||||
<property id="removeMentions" type="checkbox">
|
||||
<title>Remove Mentions?</title>
|
||||
<helpText>Should mentions (@someone) be removed from the Mastodon Post?</helpText>
|
||||
<default>0</default>
|
||||
</property>
|
||||
<property id="removeHashtags" type="checkbox">
|
||||
<title>Remove Hashtags?</title>
|
||||
<helpText>Should Hashtags (#something) be removed from the Mastodon Post?</helpText>
|
||||
<default>0</default>
|
||||
</property>
|
||||
<property id="removeUrls" type="checkbox">
|
||||
<title>Remove URLs?</title>
|
||||
<helpText>Should URLs be removed from the Mastodon Post? Most URLs do not compliment digital signage.</helpText>
|
||||
<default>1</default>
|
||||
</property>
|
||||
</properties>
|
||||
<onParseData><![CDATA[
|
||||
// item - element to be parsed
|
||||
// properties - object containing the values to be evaluated/used
|
||||
if(properties.removeMentions == 1) {
|
||||
item.text = item.text.replace(/@[^\s]+/g, '');
|
||||
}
|
||||
if(properties.removeHashtags == 1) {
|
||||
item.text = item.text.replace(/#[^\s]+/g, '');
|
||||
}
|
||||
if(properties.removeUrls == 1) {
|
||||
item.text = item.text.replace(/(https?:\/\/)?(www\.)?[-a-zA-Z0-9()@:%_\+.~#?&//=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)/g, '');
|
||||
}
|
||||
if(properties.dateFormat) {
|
||||
item.date = moment(item.date).format(properties.dateFormat);
|
||||
}
|
||||
// Return the parsed item
|
||||
return item;
|
||||
]]></onParseData>
|
||||
<sampleData><![CDATA[
|
||||
[{
|
||||
"date": "2000-01-01T01:00:30+00:00",
|
||||
"text": "This is a sample mastodon text",
|
||||
"location": "Mastodon location",
|
||||
"photo": "[[assetId=mastodonContentPhoto]]",
|
||||
"user": "@mastodon_user",
|
||||
"screenName": "Mastodon user",
|
||||
"userProfileImage": "[[assetId=mastodonProfilePhoto]]",
|
||||
"userProfileImageMini": "[[assetId=mastodonProfilePhotoMini]]",
|
||||
"userProfileImageBigger": "[[assetId=mastodonProfilePhotoBigger]]"
|
||||
},
|
||||
{
|
||||
"date": "2000-01-01T01:00:30+00:00",
|
||||
"text": "This is a sample mastodon text",
|
||||
"location": "Mastodon location",
|
||||
"photo": "[[assetId=mastodonContentPhoto]]",
|
||||
"user": "@mastodon_user",
|
||||
"screenName": "Mastodon user",
|
||||
"userProfileImage": "[[assetId=mastodonProfilePhoto]]",
|
||||
"userProfileImageMini": "[[assetId=mastodonProfilePhotoMini]]",
|
||||
"userProfileImageBigger": "[[assetId=mastodonProfilePhotoBigger]]"
|
||||
},
|
||||
{
|
||||
"date": "2000-01-01T01:00:30+00:00",
|
||||
"text": "This is a sample mastodon text",
|
||||
"location": "Mastodon location",
|
||||
"photo": "[[assetId=mastodonContentPhoto]]",
|
||||
"user": "@mastodon_user",
|
||||
"screenName": "Mastodon user",
|
||||
"userProfileImage": "[[assetId=mastodonProfilePhoto]]",
|
||||
"userProfileImageMini": "[[assetId=mastodonProfilePhotoMini]]",
|
||||
"userProfileImageBigger": "[[assetId=mastodonProfilePhotoBigger]]"
|
||||
},
|
||||
{
|
||||
"date": "2000-01-01T01:00:30+00:00",
|
||||
"text": "This is a sample mastodon text",
|
||||
"location": "Mastodon location",
|
||||
"photo": "[[assetId=mastodonContentPhoto]]",
|
||||
"user": "@mastodon_user",
|
||||
"screenName": "Mastodon user",
|
||||
"userProfileImage": "[[assetId=mastodonProfilePhoto]]",
|
||||
"userProfileImageMini": "[[assetId=mastodonProfilePhotoMini]]",
|
||||
"userProfileImageBigger": "[[assetId=mastodonProfilePhotoBigger]]"
|
||||
},
|
||||
{
|
||||
"date": "2000-01-01T01:00:30+00:00",
|
||||
"text": "This is a sample mastodon text",
|
||||
"location": "Mastodon location",
|
||||
"photo": "[[assetId=mastodonContentPhoto]]",
|
||||
"user": "@mastodon_user",
|
||||
"screenName": "Mastodon user",
|
||||
"userProfileImage": "[[assetId=mastodonProfilePhoto]]",
|
||||
"userProfileImageMini": "[[assetId=mastodonProfilePhotoMini]]",
|
||||
"userProfileImageBigger": "[[assetId=mastodonProfilePhotoBigger]]"
|
||||
}]
|
||||
]]></sampleData>
|
||||
<preview></preview>
|
||||
<assets>
|
||||
<asset id="mastodonLogo" alias="providerLogo" type="path" mimeType="image/png" path="/modules/assets/mastodon_blue.png"></asset>
|
||||
<asset id="mastodonLogoWhite" alias="providerLogoWhite" type="path" mimeType="image/png" path="/modules/assets/mastodon_white.png"></asset>
|
||||
<asset id="mastodonContentPhoto" type="path" mimeType="image/png" path="/modules/assets/mastodon_content_photo.jpg" cmsOnly="true"></asset>
|
||||
<asset id="mastodonProfilePhoto" type="path" mimeType="image/png" path="/modules/assets/mastodon_profile_photo.jpg" cmsOnly="true"></asset>
|
||||
<asset id="mastodonProfilePhotoMini" type="path" mimeType="image/png" path="/modules/assets/mastodon_profile_photo_mini.jpg" cmsOnly="true"></asset>
|
||||
<asset id="mastodonProfilePhotoBigger" type="path" mimeType="image/png" path="/modules/assets/mastodon_profile_photo_bigger.jpg" cmsOnly="true"></asset>
|
||||
</assets>
|
||||
</module>
|
||||
Reference in New Issue
Block a user