From 6fab06243cd01fc116aa01d6cd0f03d800fb87a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Pabel?= Date: Sat, 9 Oct 2021 18:32:44 +0200 Subject: [PATCH] [feed] added channel for enclosure link on latest entry (#11345) Signed-off-by: Juergen Pabel --- bundles/org.openhab.binding.feed/README.md | 24 ++++++++++--------- .../feed/internal/FeedBindingConstants.java | 6 +++++ .../feed/internal/handler/FeedHandler.java | 8 +++++++ .../resources/OH-INF/thing/thing-types.xml | 8 +++++++ 4 files changed, 35 insertions(+), 11 deletions(-) diff --git a/bundles/org.openhab.binding.feed/README.md b/bundles/org.openhab.binding.feed/README.md index 686d3e9f597..d1f5d0f7f33 100644 --- a/bundles/org.openhab.binding.feed/README.md +++ b/bundles/org.openhab.binding.feed/README.md @@ -32,17 +32,18 @@ Optional configuration: The binding supports following channels -| Channel Type ID | Item Type | Description | -|--------------------|-----------|-----------------------------------------------------| -| latest-title | String | Contains the title of the last feed entry. | -| latest-description | String | Contains the description of the last feed entry. | -| latest-date | DateTime | Contains the published date of the last feed entry. | -| latest-link | String | Contains the link of the last feed entry. | -| author | String | The name of the feed author, if author is present. | -| title | String | The title of the feed. | -| description | String | Description of the feed. | -| last-update | DateTime | The last update date of the feed. | -| number-of-entries | Number | Number of entries in the feed. | +| Channel Type ID | Item Type | Description | +|--------------------|-----------|-----------------------------------------------------------------------------------------------------------| +| latest-title | String | Contains the title of the last feed entry. | +| latest-description | String | Contains the description of the last feed entry. | +| latest-date | DateTime | Contains the published date of the last feed entry. | +| latest-link | String | Contains the link of the last feed entry. | +| latest-enclosure | String | Contains the enclosure link (podcast) of the last feed entry, if enclosure is present (used in podcasts). | +| author | String | The name of the feed author, if author is present. | +| title | String | The title of the feed. | +| description | String | Description of the feed. | +| last-update | DateTime | The last update date of the feed. | +| number-of-entries | Number | Number of entries in the feed. | ## Example @@ -60,6 +61,7 @@ String latest_title {channel="feed:feed:bbc:latest-title"} String latest_description {channel="feed:feed:bbc:latest-description"} DateTime latest_date {channel="feed:feed:bbc:latest-date"} String latest_link {channel="feed:feed:bbc:latest-link"} +String latest_enclosure {channel="feed:feed:bbc:latest-enclosure"} Number number_of_entries {channel="feed:feed:bbc:number-of-entries"} String description {channel="feed:feed:bbc:description"} String author {channel="feed:feed:bbc:author"} diff --git a/bundles/org.openhab.binding.feed/src/main/java/org/openhab/binding/feed/internal/FeedBindingConstants.java b/bundles/org.openhab.binding.feed/src/main/java/org/openhab/binding/feed/internal/FeedBindingConstants.java index f909f687eab..177449e51e5 100644 --- a/bundles/org.openhab.binding.feed/src/main/java/org/openhab/binding/feed/internal/FeedBindingConstants.java +++ b/bundles/org.openhab.binding.feed/src/main/java/org/openhab/binding/feed/internal/FeedBindingConstants.java @@ -20,6 +20,7 @@ import org.openhab.core.thing.ThingTypeUID; * used across the whole binding. * * @author Svilen Valkanov - Initial contribution + * @author Juergen Pabel - Added enclosure channel */ @NonNullByDefault public class FeedBindingConstants { @@ -50,6 +51,11 @@ public class FeedBindingConstants { */ public static final String CHANNEL_LATEST_LINK = "latest-link"; + /** + * Contains the enclosure link to the last feed entry. + */ + public static final String CHANNEL_LATEST_ENCLOSURE = "latest-enclosure"; + /** * Description of the feed. */ diff --git a/bundles/org.openhab.binding.feed/src/main/java/org/openhab/binding/feed/internal/handler/FeedHandler.java b/bundles/org.openhab.binding.feed/src/main/java/org/openhab/binding/feed/internal/handler/FeedHandler.java index 7fd560f1928..3b8b2711c97 100644 --- a/bundles/org.openhab.binding.feed/src/main/java/org/openhab/binding/feed/internal/handler/FeedHandler.java +++ b/bundles/org.openhab.binding.feed/src/main/java/org/openhab/binding/feed/internal/handler/FeedHandler.java @@ -57,6 +57,7 @@ import com.rometools.rome.io.SyndFeedInput; * sent to one of the channels and for the regular updates of the feed data. * * @author Svilen Valkanov - Initial contribution + * @author Juergen Pabel - Added enclosure channel */ @NonNullByDefault public class FeedHandler extends BaseThingHandler { @@ -169,6 +170,13 @@ public class FeedHandler extends BaseThingHandler { state = new StringType(getValueSafely(latestEntry.getLink())); } break; + case CHANNEL_LATEST_ENCLOSURE: + if (latestEntry == null || latestEntry.getEnclosures().isEmpty()) { + state = UnDefType.UNDEF; + } else { + state = new StringType(getValueSafely(latestEntry.getEnclosures().get(0).getUrl())); + } + break; case CHANNEL_LATEST_PUBLISHED_DATE: case CHANNEL_LAST_UPDATE: if (latestEntry == null || latestEntry.getPublishedDate() == null) { diff --git a/bundles/org.openhab.binding.feed/src/main/resources/OH-INF/thing/thing-types.xml b/bundles/org.openhab.binding.feed/src/main/resources/OH-INF/thing/thing-types.xml index f1c8259e340..017295641e3 100644 --- a/bundles/org.openhab.binding.feed/src/main/resources/OH-INF/thing/thing-types.xml +++ b/bundles/org.openhab.binding.feed/src/main/resources/OH-INF/thing/thing-types.xml @@ -20,6 +20,7 @@ + @@ -71,6 +72,13 @@ + + String + + Contains the first (if any) enclosure link of the last feed entry. + + + String