diff --git a/Changelog8.html b/Changelog8.html index 9758e42fad0..8ef5d00b489 100644 --- a/Changelog8.html +++ b/Changelog8.html @@ -22,6 +22,7 @@

Version 8.3.0

  • #751 - Shuffle tracks added with "playlist loadtracks" for a given year (thanks philchillbill!)
  • #758 - Allow selection of regional language (eg. ZH_CH or EN_GB) through JSONRPC (thanks expectingtofly!)
  • Remove support for media types other than audio (video, pictures).
  • +
  • Remove more legacy plugins: Amazon, MP3Tunes, Orange, YALP

  • diff --git a/Slim/Plugin/Amazon/HTML/EN/plugins/Amazon/html/images/icon.png b/Slim/Plugin/Amazon/HTML/EN/plugins/Amazon/html/images/icon.png deleted file mode 100644 index 123adf85d79..00000000000 Binary files a/Slim/Plugin/Amazon/HTML/EN/plugins/Amazon/html/images/icon.png and /dev/null differ diff --git a/Slim/Plugin/Amazon/HTML/EN/plugins/Amazon/html/images/icon_40x40_m.png b/Slim/Plugin/Amazon/HTML/EN/plugins/Amazon/html/images/icon_40x40_m.png deleted file mode 100644 index fb60c9fd838..00000000000 Binary files a/Slim/Plugin/Amazon/HTML/EN/plugins/Amazon/html/images/icon_40x40_m.png and /dev/null differ diff --git a/Slim/Plugin/Amazon/Plugin.pm b/Slim/Plugin/Amazon/Plugin.pm deleted file mode 100644 index 8ae4a9d0fb2..00000000000 --- a/Slim/Plugin/Amazon/Plugin.pm +++ /dev/null @@ -1,72 +0,0 @@ -package Slim::Plugin::Amazon::Plugin; - - -use strict; -use base qw(Slim::Plugin::OPMLBased); - -use URI::Escape qw(uri_escape_utf8); - -sub initPlugin { - my $class = shift; - - $class->SUPER::initPlugin( - feed => Slim::Networking::SqueezeNetwork->url( '/api/amazon/v1/opml' ), - tag => 'amazon', - menu => 'music_stores', - weight => 30, - is_app => 1, - ); - - # Track Info item - Slim::Menu::TrackInfo->registerInfoProvider( amazon => ( - after => 'middle', - func => \&trackInfoMenu, - ) ); -} - -sub getDisplayName { - return 'PLUGIN_AMAZON_MODULE_NAME'; -} - -# Don't add this item to any menu -sub playerMenu { } - -sub trackInfoMenu { - my ( $client, $url, $track, $remoteMeta ) = @_; - - return unless $client; - - # Only show if in the app list - return unless $client->isAppEnabled('amazon'); - - my $artist = $track->remote ? $remoteMeta->{artist} : $track->artistName; - my $album = $track->remote ? $remoteMeta->{album} : ( $track->album ? $track->album->name : undef ); - my $title = $track->remote ? $remoteMeta->{title} : $track->title; - - my $snURL = '/api/amazon/v1/opml/context'; - - # Check for amazon-specific metadata - if ( my $amazon = $remoteMeta->{amazon} ) { - $snURL .= '?album_asin=' . $amazon->{album_asin} - . '&album_asin_digital=' . $amazon->{album_asin_digital} - . '&song_asin_digital=' . $amazon->{song_asin_digital}; - } - else { - # Search by artist/album/track - $snURL .= '?artist=' . uri_escape_utf8($artist) - . '&album=' . uri_escape_utf8($album) - . '&track=' . uri_escape_utf8($title) - . '&upc=' . $remoteMeta->{upc}; - } - - if ( $artist && ( $album || $title ) ) { - return { - type => 'link', - name => $client->string('PLUGIN_AMAZON_ON_AMAZON'), - url => Slim::Networking::SqueezeNetwork->url($snURL), - favorites => 0, - }; - } -} - -1; diff --git a/Slim/Plugin/Amazon/install.xml b/Slim/Plugin/Amazon/install.xml deleted file mode 100644 index ad87aef0b40..00000000000 --- a/Slim/Plugin/Amazon/install.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - 587A25E9-49AB-4497-BE47-2962E5742DC4 - PLUGIN_AMAZON_MODULE_NAME - Slim::Plugin::Amazon::Plugin - 1.0 - PLUGIN_AMAZON_MODULE_NAME - Logitech - enabled - true - http://www.mysqueezebox.com/appgallery/Amazon - plugins/Amazon/html/images/icon.png - 2 - - Logitech Media Server - 7.3 - * - - diff --git a/Slim/Plugin/Amazon/strings.txt b/Slim/Plugin/Amazon/strings.txt deleted file mode 100644 index 4c17b66a1dd..00000000000 --- a/Slim/Plugin/Amazon/strings.txt +++ /dev/null @@ -1,30 +0,0 @@ -PLUGIN_AMAZON_MODULE_NAME - CS Amazon - CD obchod - DA Amazons cd-butik - DE Amazon-CD-Store - EN Amazon CD Store - ES Amazon CD Store - FI Amazonin CD-kauppa - FR Magasin de CD Amazon - IT Amazon CD Store - NL Amazon CD Store - NO Amazons cd-butikk - PL Amazon - sklep z płytami CD - RU Магазин CD Amazon - SV Amazon CD Store - -PLUGIN_AMAZON_ON_AMAZON - CS Na Amazonu - DA På Amazon - DE Bei Amazon - EN On Amazon - ES En Amazon - FI Amazonilla - FR Sur Amazon - IT Su Amazon - NL Op Amazon - NO På Amazon - PL Na stronie Amazon - RU На Amazon - SV På Amazon - diff --git a/Slim/Plugin/MP3tunes/HTML/EN/plugins/MP3tunes/html/images/icon.png b/Slim/Plugin/MP3tunes/HTML/EN/plugins/MP3tunes/html/images/icon.png deleted file mode 100755 index a97b5de99ac..00000000000 Binary files a/Slim/Plugin/MP3tunes/HTML/EN/plugins/MP3tunes/html/images/icon.png and /dev/null differ diff --git a/Slim/Plugin/MP3tunes/HTML/EN/plugins/MP3tunes/html/images/icon_40x40_m.png b/Slim/Plugin/MP3tunes/HTML/EN/plugins/MP3tunes/html/images/icon_40x40_m.png deleted file mode 100644 index 6f620c23648..00000000000 Binary files a/Slim/Plugin/MP3tunes/HTML/EN/plugins/MP3tunes/html/images/icon_40x40_m.png and /dev/null differ diff --git a/Slim/Plugin/MP3tunes/Plugin.pm b/Slim/Plugin/MP3tunes/Plugin.pm deleted file mode 100644 index b90105bef4b..00000000000 --- a/Slim/Plugin/MP3tunes/Plugin.pm +++ /dev/null @@ -1,136 +0,0 @@ -package Slim::Plugin::MP3tunes::Plugin; - - -# Browse MP3tunes via SqueezeNetwork - -use strict; -use base qw(Slim::Plugin::OPMLBased); -use Date::Parse; - -use Slim::Formats::RemoteMetadata; -use Slim::Networking::SqueezeNetwork; - -sub initPlugin { - my $class = shift; - - Slim::Player::ProtocolHandlers->registerIconHandler( - qr/(?:mysqueezebox\.com.*\/mp3tunes|mp3tunes\.com\/)/, - sub { return $class->_pluginDataFor('icon'); } - ); - - $class->SUPER::initPlugin( - feed => Slim::Networking::SqueezeNetwork->url('/api/mp3tunes/v1/opml'), - tag => 'mp3tunes', - menu => 'music_services', - weight => 50, - is_app => 1, - ); - - Slim::Formats::RemoteMetadata->registerProvider( - match => qr{mp3tunes\.com|mysqueezebox\.com/mp3tunes}, - func => \&metaProvider, - ); -} - -sub getDisplayName () { - return 'PLUGIN_MP3TUNES_MODULE_NAME'; -} - -# Don't add this item to any menu -sub playerMenu { } - -# If the HTTP protocol handler sees an mp3tunes X-Locker-Info header, it will -# pass it to us -sub setLockerInfo { - my ( $class, $client, $url, $info ) = @_; - - if ( $info =~ /(.+) - (.+) - (\d+) - (.+)/ ) { - my $artist = $1; - my $album = $2; - my $tracknum = $3; - my $title = $4; - - # DAR.fm has slightly different formatting: $title would be the same as the track no. - # let's shuffle things around to get the recording title as the track title - if ($artist && $title && $title + 0 == $tracknum) { - $title = $artist; - $artist = ''; - - # DAR.fm appends the station name to the title - move it to the $artist value - if ($title =~ s/ \((.*?)\)$//) { - $artist = $1; - } - - # try to localize the recording date - if (my $date = Date::Parse::str2time($album)) { - $album = Slim::Utils::DateTime::shortDateF($date); - } - } - - my $cover; - - if ( $url =~ /hasArt=1/ ) { - my ($id) = $url =~ m/([0-9a-f]+\?sid=[0-9a-f]+)/; - $cover = "http://content.mp3tunes.com/storage/albumartget/$id"; - } - - $client->master->pluginData( currentTrack => { - url => $url, - artist => $artist, - album => $album, - tracknum => $tracknum, - title => $title, - cover => $cover, - } ); - } -} - -sub getLockerInfo { - my ( $class, $client, $url ) = @_; - - my $meta = $client->master->pluginData('currentTrack'); - - if ( $meta->{url} eq $url ) { - return $meta; - } - - return; -} - -sub metaProvider { - my ( $client, $url ) = @_; - - my $icon = __PACKAGE__->_pluginDataFor('icon'); - my $meta = __PACKAGE__->getLockerInfo( $client, $url ); - - if ( $meta ) { - # Metadata for currently playing song - return { - artist => $meta->{artist}, - album => $meta->{album}, - tracknum => $meta->{tracknum}, - title => $meta->{title}, - cover => $meta->{cover} || $icon, - icon => $icon, - type => 'MP3tunes', - }; - } - else { - # Metadata for items in the playlist that have not yet been played - - # We can still get cover art for items not yet played - my $cover; - if ( $url =~ /hasArt=1/ ) { - my ($id) = $url =~ m/([0-9a-f]+\?sid=[0-9a-f]+)/; - $cover = "http://content.mp3tunes.com/storage/albumartget/$id"; - } - - return { - cover => $cover || $icon, - icon => $icon, - type => 'MP3tunes', - }; - } -} - -1; diff --git a/Slim/Plugin/MP3tunes/install.xml b/Slim/Plugin/MP3tunes/install.xml deleted file mode 100644 index 0cd8c460237..00000000000 --- a/Slim/Plugin/MP3tunes/install.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - D91733B9-C52A-4D15-AEBC-8C0257FC3E0A - PLUGIN_MP3TUNES_MODULE_NAME - Slim::Plugin::MP3tunes::Plugin - 1.0 - PLUGIN_MP3TUNES_MODULE_NAME_DESC - Logitech - enabled - true - http://www.mysqueezebox.com/appgallery/MP3tunes - plugins/MP3tunes/html/images/icon.png - 2 - - Logitech Media Server - 7.0a - * - - diff --git a/Slim/Plugin/MP3tunes/strings.txt b/Slim/Plugin/MP3tunes/strings.txt deleted file mode 100644 index b2c73c58572..00000000000 --- a/Slim/Plugin/MP3tunes/strings.txt +++ /dev/null @@ -1,45 +0,0 @@ -PLUGIN_MP3TUNES_MODULE_NAME - CS Úschovna MP3tunes Music - DA MP3tunes Music Locker - DE MP3tunes-Musiktruhe - EN MP3tunes Music Locker - ES Armario de música de MP3tunes - FI MP3tunes-musiikkilokero - FR Librairie musicale en ligne - MP3tunes - IT Raccoglitore musicale MP3tunes - NL MP3tunes Music Locker - NO MP3tunes Music Locker - PL MP3tunes Music Locker - RU Музыкальный архив MP3tunes - SV MP3tunes Music Locker - -PLUGIN_MP3TUNES_LOADING - CS Přihlašování... - DA Logger på... - DE Anmelden läuft ... - EN Logging in... - ES Iniciando sesión... - FI Kirjaudutaan... - FR Connexion en cours... - IT Accesso in corso... - NL Bezig met aanmelden... - NO Logger på... - PL Logowanie... - RU Вход в систему... - SV Loggar in... - -PLUGIN_MP3TUNES_MODULE_NAME_DESC - CS Přístup k hudbě z vaší úschovny MP3tunes Music. Tento zásuvný modul vyžaduje účet mysqueezebox.com. - DA Du kan høre numre som er gemt i din MP3tunes Music Locker. Dette udvidelsesmodul kræver at du har en konto til mysqueezebox.com. - DE Zugriff auf den MP3tunes Music Locker gewähren. Dieses Plugin benötigt ein mysqueezebox.com-Konto. - EN Access music from your MP3tunes Music Locker. This plugin requires a mysqueezebox.com account. - ES Acceso a música en su Armario de música de MP3tunes. Este extra requiere una cuenta mysqueezebox.com. - FI Käytä MP3tunes-musiikkilokerossa olevaa musiikkia. Laajennus vaatii mysqueezebox.com-tilin. - FR Accès à la musique de votre librairie musicale en ligne MP3tunes. Cet extra nécessite un compte mysqueezebox.com. - IT Accesso ai brani del raccoglitore musicale MP3tunes. Questo plugin richiede un account mysqueezebox.com. - NL Krijg toegang tot muziek vanuit jouw MP3tunes Music Locker. Voor deze plug-in is een mysqueezebox.com account vereist. - NO Hent musikk fra MP3tunes Music Locker. Du må ha en konto på mysqueezebox.com for å kunne bruke denne plugin-modulen. - PL Uzyskaj dostęp do muzyki w usłudze MP3tunes Music Locker. Ten dodatek wymaga konta w usłudze mysqueezebox.com. - RU Получайте доступ к песням в своем музыкальном архиве MP3tunes. Для этого подключаемого модуля требуется учетная запись mysqueezebox.com. - SV Få tillgång till musiken i ditt MP3tunes-arkiv. Det här plugin-programmet kräver ett mysqueezebox.com-konto. - diff --git a/Slim/Plugin/Orange/HTML/EN/plugins/Orange/html/images/icon.png b/Slim/Plugin/Orange/HTML/EN/plugins/Orange/html/images/icon.png deleted file mode 100644 index d5f71aec590..00000000000 Binary files a/Slim/Plugin/Orange/HTML/EN/plugins/Orange/html/images/icon.png and /dev/null differ diff --git a/Slim/Plugin/Orange/Metadata.pm b/Slim/Plugin/Orange/Metadata.pm deleted file mode 100644 index f65ed5d8c69..00000000000 --- a/Slim/Plugin/Orange/Metadata.pm +++ /dev/null @@ -1,222 +0,0 @@ -package Slim::Plugin::Orange::Metadata; - -# Logitech Media Server Copyright 2003-2020 Logitech. -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License, -# version 2. - -use strict; - -use URI::Escape qw(uri_escape_utf8); -use URI::Split qw(uri_split); - -use Slim::Formats::RemoteMetadata; -use JSON::XS::VersionOneAndTwo; -use Slim::Music::Info; -use Slim::Networking::SimpleAsyncHTTP; -use Slim::Utils::Log; - -my $ICON = Slim::Plugin::Orange::Plugin->_pluginDataFor('icon'); - -my $log = logger('plugin.orange'); - -sub init { - my $class = shift; - - Slim::Formats::RemoteMetadata->registerParser( - match => qr/api\/orange\/v1/, - func => \&parser, - ); - - Slim::Formats::RemoteMetadata->registerProvider( - match => qr/api\/orange\/v1/, - func => \&provider, - ); -} - -sub defaultMeta { - my ( $client, $url ) = @_; - - return { - title => Slim::Music::Info::getCurrentTitle($url), - icon => $ICON, - type => $client->string('RADIO'), - ttl => time() + 30, - }; -} - -sub provider { - my ( $client, $url ) = @_; - - if ( !$client->isPlaying && !$client->isPaused ) { - return defaultMeta( $client, $url ); - } - - if ( my $meta = $client->master->pluginData('metadata') ) { - - if ( $meta->{_url} eq $url ) { - $meta->{title} ||= Slim::Music::Info::getCurrentTitle($url); - - # need to refresh meta data - if ($meta->{ttl} < time()) { - fetchMetadata( $client, $url ); - } - - return $meta; - } - - } - - if ( !$client->master->pluginData('fetchingMeta') ) { - fetchMetadata( $client, $url ); - } - - return defaultMeta( $client, $url ); -} - -sub fetchMetadata { - my ( $client, $url ) = @_; - - return unless $client; - - Slim::Utils::Timers::killTimers( $client, \&fetchMetadata ); - - # Make sure client is still playing this station - if ( Slim::Player::Playlist::url($client) ne $url ) { - main::DEBUGLOG && $log->is_debug && $log->debug( $client->id . " no longer playing $url, stopping metadata fetch" ); - return; - } - - $client->master->pluginData( fetchingMeta => 1 ); - - my ($scheme, $auth, $path, $query, $frag) = uri_split($url); - - # SN URL to fetch track info menu - my $metaUrl = Slim::Networking::SqueezeNetwork->url( - '/api/orange/v1/playback/getMetadata?' . $query - ); - - main::DEBUGLOG && $log->is_debug && $log->debug( "Fetching Orange metadata from $metaUrl" ); - - my $http = Slim::Networking::SqueezeNetwork->new( - \&_gotMetadata, - \&_gotMetadataError, - { - client => $client, - url => $url, - timeout => 30, - }, - ); - - $http->get( $metaUrl ); -} - -sub _gotMetadata { - my $http = shift; - my $client = $http->params('client'); - my $url = $http->params('url'); - - my $feed = eval { from_json( $http->content ) }; - - if ( $@ ) { - $http->error( $@ ); - _gotMetadataError( $http ); - return; - } - - if ( main::DEBUGLOG && $log->is_debug ) { - $log->debug( "Raw Orange metadata: " . Data::Dump::dump($feed) ); - } - - my $meta = defaultMeta( $client, $url ); - $meta->{_url} = $url; - - while (my ($k, $v) = each %{$feed}) { - if ($v) { - $meta->{$k} = $v; - } - } - - if ($meta->{ttl} < time()) { - $meta->{ttl} = time() + ($meta->{ttl} || 60); - } - - $client->master->pluginData( fetchingMeta => 0 ); - $client->master->pluginData( metadata => $meta ); - - Slim::Control::Request::notifyFromArray( $client, [ 'newmetadata' ] ); - - Slim::Utils::Timers::setTimer( - $client, - $meta->{ttl}, - \&fetchMetadata, - $url, - ); -} - -sub _gotMetadataError { - my $http = shift; - my $client = $http->params('client'); - my $url = $http->params('url'); - my $error = $http->error; - - main::DEBUGLOG && $log->is_debug && $log->debug( "Error fetching Orange metadata: $error" ); - - $client->master->pluginData( fetchingMeta => 0 ); - - # To avoid flooding the RT servers in the case of errors, we just ignore further - # metadata for this station if we get an error - my $meta = defaultMeta( $client, $url ); - $meta->{_url} = $url; - - $client->master->pluginData( metadata => $meta ); - - Slim::Control::Request::notifyFromArray( $client, [ 'newmetadata' ] ); - - Slim::Utils::Timers::setTimer( - $client, - $meta->{ttl}, - \&fetchMetadata, - $url, - ); -} - -sub parser { - my ( $client, $url, $metadata ) = @_; - - # If a station is providing Icy metadata, disable metadata - # provided by Orange - if ( $metadata =~ /StreamTitle=\'([^']+)\'/ ) { - if ( $1 ) { - if ( $client->master->pluginData('metadata' ) ) { - main::DEBUGLOG && $log->is_debug && $log->debug('Disabling Orange metadata, stream has Icy metadata'); - - Slim::Utils::Timers::killTimers( $client, \&fetchMetadata ); - #$client->master->pluginData( metadata => undef ); - } - - # Let the default metadata handler process the Icy metadata - $client->master->pluginData( hasIcy => $url ); - return; - } - } - - # If a station is providing WMA metadata, disable metadata - # provided by Orange - elsif ( $metadata =~ /(?:CAPTION|artist|type=SONG)/ ) { - if ( $client->master->pluginData('metadata' ) ) { - main::DEBUGLOG && $log->is_debug && $log->debug('Disabling Orange metadata, stream has WMA metadata'); - - Slim::Utils::Timers::killTimers( $client, \&fetchMetadata ); - #$client->master->pluginData( metadata => undef ); - } - - # Let the default metadata handler process the WMA metadata - $client->master->pluginData( hasIcy => $url ); - return; - } - - return 1; -} - -1; diff --git a/Slim/Plugin/Orange/Plugin.pm b/Slim/Plugin/Orange/Plugin.pm deleted file mode 100644 index 6e8921d0e63..00000000000 --- a/Slim/Plugin/Orange/Plugin.pm +++ /dev/null @@ -1,90 +0,0 @@ -package Slim::Plugin::Orange::Plugin; - -# Logitech Media Server Copyright 2003-2020 Logitech. -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License, -# version 2. - -use strict; -use base qw(Slim::Plugin::OPMLBased); - -use URI::Split qw(uri_split); -use Slim::Player::ProtocolHandlers; -use Slim::Plugin::Orange::Metadata; -use Slim::Networking::SqueezeNetwork; -use Slim::Utils::Strings qw(cstring); - -my $log = Slim::Utils::Log->addLogCategory( { - category => 'plugin.orange', - defaultLevel => 'ERROR', - description => 'PLUGIN_ORANGE_LIVERADIO', -} ); - -sub initPlugin { - my $class = shift; - - Slim::Plugin::Orange::Metadata->init(); - - Slim::Player::ProtocolHandlers->registerIconHandler( - qr|mysqueezebox\.com.*/api/orange/|, - sub { $class->_pluginDataFor('icon') } - ); - - # Track Info handler - Slim::Menu::TrackInfo->registerInfoProvider( infoOrange => ( - before => 'top', - func => \&trackInfoHandler, - ) ); - - $class->SUPER::initPlugin( - feed => Slim::Networking::SqueezeNetwork->url('/api/orange/v1/opml'), - tag => 'orange', - menu => 'radios', - weight => 40, - is_app => 1, - ); -} - -sub getDisplayName () { - return 'PLUGIN_ORANGE_LIVERADIO'; -} - -# Don't add this item to any menu -sub playerMenu { } - -sub trackInfoHandler { - my ( $client, $url, $track ) = @_; - - my $items = []; - - if ( $url =~ m{^http://.*/api/orange/v1} ) { - push @$items, { - name => cstring($client, 'PLUGIN_ORANGE_OPTIONS'), - url => __PACKAGE__->trackInfoURL( $client, $url, 'orange_options' ), - }; - push @$items , { - name => cstring($client, 'PLUGIN_ORANGE_FAVORITES'), - url => __PACKAGE__->trackInfoURL( $client, $url, 'orange_favorites' ), - }; - } - - return $items; -} - -# URL used for CLI trackinfo queries -sub trackInfoURL { - my ( $class, $client, $url, $type ) = @_; - - my ($scheme, $auth, $path, $query, $frag) = uri_split($url); - - $query .= '&type=' . $type; - - # SN URL to fetch track info menu - my $trackInfoURL = Slim::Networking::SqueezeNetwork->url( - '/api/orange/v1/opml/trackinfo?' . $query - ); - - return $trackInfoURL; -} - -1; diff --git a/Slim/Plugin/Orange/install.xml b/Slim/Plugin/Orange/install.xml deleted file mode 100644 index a7a09231d05..00000000000 --- a/Slim/Plugin/Orange/install.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - 659FB200-642F-11E0-AE3E-0800200C9A66 - PLUGIN_ORANGE_LIVERADIO - Slim::Plugin::Orange::Plugin - 1.0 - PLUGIN_ORANGE_LIVERADIO - Logitech - enabled - true - http://www.mysqueezebox.com/appgallery/Orange - plugins/Orange/html/images/icon.png - 2 - - Logitech Media Server - 7.5 - * - - diff --git a/Slim/Plugin/Orange/strings.txt b/Slim/Plugin/Orange/strings.txt deleted file mode 100644 index 55ecc933446..00000000000 --- a/Slim/Plugin/Orange/strings.txt +++ /dev/null @@ -1,51 +0,0 @@ -PLUGIN_ORANGE_LIVERADIO - EN Orange Liveradio - NL Orange Liveradio - NO Orange Liveradio - -PLUGIN_ORANGE_FAVORITES - CS Orange Liveradio – oblíbené - DA Orange Liveradio-favoritter - DE Orange Liveradio-Favoriten - EN Orange Liveradio Favorites - EN_GB Orange Liveradio Favourites - ES Favoritos de Orange Liveradio - FI Orangen Liveradio-suosikit - FR Favoris Orange Liveradio - IT Preferiti di Orange Liveradio - NL Orange Liveradio favorieten - NO Orange Liveradio-favoritter - PL Ulubione Orange Liveradio - RU Избранное Orange Liveradio - SV Orange Liveradio-favoriter - -PLUGIN_ORANGE_ERROR - CS Liveradio - chyba - DA Liveradio har angivet en fejl - DE LiveRadio-Fehler - EN LiveRadio Error - ES Error de LiveRadio - FI LiveRadion virhe - FR Erreur Liveradio - IT Errore LiveRadio - NL Fout bij Liveradio - NO LiveRadio-feil - PL Błąd usługi Liveradio - RU LiveRadio Error - SV LiveRadio-fel - -PLUGIN_ORANGE_OPTIONS - CS Orange Liveradio - možnosti - DA Orange Liveradio, valgmuligheder - DE Optionen für Orange Liveradio - EN Orange Liveradio Options - ES Opciones de Orange Liveradio - FI Orange Liveradion asetukset - FR Options Orange Liveradio - IT Opzioni Orange Liveradio - NL Opties voor Orange Liveradio - NO Alternativer for Orange Liveradio - PL Opcje usługi Orange Liveradio - RU Orange Liveradio Options - SV Alternativ för Orange Liveradio - diff --git a/Slim/Plugin/YALP/Plugin.pm b/Slim/Plugin/YALP/Plugin.pm deleted file mode 100644 index adf126d6f7d..00000000000 --- a/Slim/Plugin/YALP/Plugin.pm +++ /dev/null @@ -1,51 +0,0 @@ -package Slim::Plugin::YALP::Plugin; - -# WMA metadata parser for YALP radio -# /tilive1.alice.cdn.interbusiness.it/ - -use strict; - -use Slim::Formats::RemoteMetadata; -use Slim::Utils::Log; - -my $log = logger('formats.metadata'); - -use constant IMAGE_PREFIX => 'http://images.rossoalice.alice.it/musicbox/'; - -sub initPlugin { - Slim::Formats::RemoteMetadata->registerParser( - match => qr/tilive1.alice.cdn.interbusiness.it/, - func => \&parser, - ); -} - -sub parser { - my ( $client, $url, $metadata ) = @_; - - # Sequence number|Asset ID|Song Title|Artist Name|Comment|Sellable|Small Image|Large Image - # There are 4 songs in the metadata, separated by semicolons, - # the current song has sequence number 0 - - my ($title, $artist, $comment, $simage, $limage) - = $metadata =~ m{;0\|\d+\|([^|]+)?\|([^|]+)?\|([^|]+)?\|\d?\|([^|]+)?\|([^|]+)?;}; - - my $cover - = $limage =~ /\.(?:jpg|png|gif)/i ? IMAGE_PREFIX . $limage - : $simage =~ /\.(?:jpg|png|gif)/i ? IMAGE_PREFIX . $simage - : undef; - - my $meta = { - title => $title, - artist => $artist, - cover => $cover, - }; - - # This metadata is read by HTTP's getMetadataFor - $client->playingSong->pluginData( wmaMeta => $meta ); - - main::DEBUGLOG && $log->is_debug && $log->debug( "YALP metadata: " . Data::Dump::dump($meta) ); - - return 1; -} - -1; \ No newline at end of file diff --git a/Slim/Plugin/YALP/install.xml b/Slim/Plugin/YALP/install.xml deleted file mode 100644 index 49b1300055f..00000000000 --- a/Slim/Plugin/YALP/install.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - b29433d0-e9bc-4e3d-8907-89aa77bab5b8 - PLUGIN_YALP - Slim::Plugin::YALP::Plugin - 1.0 - PLUGIN_YALP - Logitech - - disabled - - http://www.mysqueezebox.com/support - 2 - - Logitech Media Server - 7.0a - * - - diff --git a/Slim/Plugin/YALP/strings.txt b/Slim/Plugin/YALP/strings.txt deleted file mode 100644 index c45d9266a58..00000000000 --- a/Slim/Plugin/YALP/strings.txt +++ /dev/null @@ -1,4 +0,0 @@ -PLUGIN_YALP - EN WMA metadata parser for YALP radio - FR Analyseur de métadonnées WMA pour la radio YALP - NL WMA metadata parser voor YALP radio