feat(cyberfeed): Add radio and podcast presets
- Add Radio France presets (France Inter, France Culture, France Info, FIP, Mouv) - Add international radio (BBC World, NPR) - Add tech podcasts (Darknet Diaries, Changelog, Syntax.fm) - Add 'radio' category to feed selector - One-click quick-add buttons for all radio presets Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
0607ed5628
commit
19c30ddce9
@ -11,7 +11,7 @@ LUCI_PKGARCH:=all
|
||||
|
||||
PKG_NAME:=luci-app-cyberfeed
|
||||
PKG_VERSION:=0.1.0
|
||||
PKG_RELEASE:=2
|
||||
PKG_RELEASE:=3
|
||||
|
||||
PKG_MAINTAINER:=CyberMind <contact@cybermind.fr>
|
||||
PKG_LICENSE:=MIT
|
||||
|
||||
@ -78,7 +78,8 @@ return view.extend({
|
||||
E('option', { 'value': 'security' }, 'Security'),
|
||||
E('option', { 'value': 'tech' }, 'Tech'),
|
||||
E('option', { 'value': 'social' }, 'Social'),
|
||||
E('option', { 'value': 'news' }, 'News')
|
||||
E('option', { 'value': 'news' }, 'News'),
|
||||
E('option', { 'value': 'radio' }, 'Radio/Podcasts')
|
||||
])
|
||||
])
|
||||
]),
|
||||
@ -131,6 +132,70 @@ return view.extend({
|
||||
])
|
||||
]));
|
||||
|
||||
// Radio Presets
|
||||
content.push(E('div', { 'class': 'cf-card' }, [
|
||||
E('div', { 'class': 'cf-card-header' }, [
|
||||
E('div', { 'class': 'cf-card-title' }, [
|
||||
E('span', { 'class': 'cf-card-title-icon' }, '\uD83D\uDCFB'),
|
||||
'Radio & Podcast Presets'
|
||||
])
|
||||
]),
|
||||
E('div', { 'class': 'cf-card-body' }, [
|
||||
E('p', { 'style': 'margin-bottom: 16px; color: var(--cf-text-dim);' },
|
||||
'Quick-add popular radio stations and podcasts'),
|
||||
E('div', { 'style': 'margin-bottom: 12px;' }, [
|
||||
E('strong', { 'style': 'color: var(--cf-neon-cyan);' }, 'Radio France')
|
||||
]),
|
||||
E('div', { 'class': 'cf-grid cf-grid-3', 'style': 'gap: 12px; margin-bottom: 16px;' }, [
|
||||
E('button', {
|
||||
'class': 'cf-btn cf-btn-sm',
|
||||
'click': function() { self.addRadioPreset('franceinter', 'https://radiofrance-podcast.net/podcast09/rss_10239.xml', 'France Inter'); }
|
||||
}, '\uD83C\uDDEB\uD83C\uDDF7 France Inter'),
|
||||
E('button', {
|
||||
'class': 'cf-btn cf-btn-sm',
|
||||
'click': function() { self.addRadioPreset('franceculture', 'https://radiofrance-podcast.net/podcast09/rss_10351.xml', 'France Culture'); }
|
||||
}, '\uD83C\uDDEB\uD83C\uDDF7 France Culture'),
|
||||
E('button', {
|
||||
'class': 'cf-btn cf-btn-sm',
|
||||
'click': function() { self.addRadioPreset('franceinfo', 'https://radiofrance-podcast.net/podcast09/rss_10134.xml', 'France Info'); }
|
||||
}, '\uD83C\uDDEB\uD83C\uDDF7 France Info'),
|
||||
E('button', {
|
||||
'class': 'cf-btn cf-btn-sm',
|
||||
'click': function() { self.addRadioPreset('fip', 'https://radiofrance-podcast.net/podcast09/rss_18981.xml', 'FIP'); }
|
||||
}, '\uD83C\uDFA7 FIP'),
|
||||
E('button', {
|
||||
'class': 'cf-btn cf-btn-sm',
|
||||
'click': function() { self.addRadioPreset('mouv', 'https://radiofrance-podcast.net/podcast09/rss_21649.xml', 'Mouv'); }
|
||||
}, '\uD83C\uDFA4 Mouv')
|
||||
]),
|
||||
E('div', { 'style': 'margin-bottom: 12px;' }, [
|
||||
E('strong', { 'style': 'color: var(--cf-neon-cyan);' }, 'International & Tech')
|
||||
]),
|
||||
E('div', { 'class': 'cf-grid cf-grid-3', 'style': 'gap: 12px;' }, [
|
||||
E('button', {
|
||||
'class': 'cf-btn cf-btn-sm',
|
||||
'click': function() { self.addRadioPreset('bbc_world', 'https://feeds.bbci.co.uk/news/world/rss.xml', 'BBC World'); }
|
||||
}, '\uD83C\uDDEC\uD83C\uDDE7 BBC World'),
|
||||
E('button', {
|
||||
'class': 'cf-btn cf-btn-sm',
|
||||
'click': function() { self.addRadioPreset('npr', 'https://feeds.npr.org/1001/rss.xml', 'NPR News'); }
|
||||
}, '\uD83C\uDDFA\uD83C\uDDF8 NPR'),
|
||||
E('button', {
|
||||
'class': 'cf-btn cf-btn-sm',
|
||||
'click': function() { self.addRadioPreset('darknet_diaries', 'https://feeds.megaphone.fm/darknetdiaries', 'Darknet Diaries'); }
|
||||
}, '\uD83D\uDD75 Darknet Diaries'),
|
||||
E('button', {
|
||||
'class': 'cf-btn cf-btn-sm',
|
||||
'click': function() { self.addRadioPreset('changelog', 'https://changelog.com/podcast/feed', 'The Changelog'); }
|
||||
}, '\uD83D\uDCBB Changelog'),
|
||||
E('button', {
|
||||
'class': 'cf-btn cf-btn-sm',
|
||||
'click': function() { self.addRadioPreset('syntax', 'https://feed.syntax.fm/rss', 'Syntax.fm'); }
|
||||
}, '\uD83D\uDCBB Syntax.fm')
|
||||
])
|
||||
])
|
||||
]));
|
||||
|
||||
// Feeds List
|
||||
var feedsContent;
|
||||
if (feeds.length === 0) {
|
||||
@ -219,6 +284,19 @@ return view.extend({
|
||||
});
|
||||
},
|
||||
|
||||
addRadioPreset: function(name, url, displayName) {
|
||||
var self = this;
|
||||
|
||||
return api.addFeed(name, url, 'rss', 'radio').then(function(res) {
|
||||
if (res && res.success) {
|
||||
self.showToast(displayName + ' added', 'success');
|
||||
window.location.reload();
|
||||
} else {
|
||||
self.showToast('Failed: ' + (res.error || 'Unknown error'), 'error');
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
handleDeleteFeed: function(name) {
|
||||
var self = this;
|
||||
|
||||
|
||||
@ -34,3 +34,21 @@ hackernews|https://news.ycombinator.com/rss|rss|tech
|
||||
#
|
||||
# YouTube Channel:
|
||||
#channel_yt|http://localhost:3000/?action=display&bridge=Youtube&c=CHANNEL_ID&format=Atom|rss-bridge|social
|
||||
|
||||
# === Radio Streams (Podcasts/News) ===
|
||||
# Radio France
|
||||
#franceinter|https://radiofrance-podcast.net/podcast09/rss_10239.xml|rss|radio
|
||||
#franceculture|https://radiofrance-podcast.net/podcast09/rss_10351.xml|rss|radio
|
||||
#franceinfo|https://radiofrance-podcast.net/podcast09/rss_10134.xml|rss|radio
|
||||
#fip|https://radiofrance-podcast.net/podcast09/rss_18981.xml|rss|radio
|
||||
#mouv|https://radiofrance-podcast.net/podcast09/rss_21649.xml|rss|radio
|
||||
|
||||
# International Radio
|
||||
#bbc_world|https://feeds.bbci.co.uk/news/world/rss.xml|rss|radio
|
||||
#npr|https://feeds.npr.org/1001/rss.xml|rss|radio
|
||||
#deutschlandfunk|https://www.deutschlandfunk.de/podcast-nachrichten.1257.de.podcast.xml|rss|radio
|
||||
|
||||
# Tech Podcasts
|
||||
#changelog|https://changelog.com/podcast/feed|rss|radio
|
||||
#syntax|https://feed.syntax.fm/rss|rss|radio
|
||||
#darknet_diaries|https://feeds.megaphone.fm/darknetdiaries|rss|radio
|
||||
|
||||
Loading…
Reference in New Issue
Block a user