The feature introduced in version 1.8.0 where you could paste a Bandcamp
URL into the "Tune in to URL" box was lost again in version 1.8.5.
Here's a patch to restore it:
Code:
--------------------
From 6714d94c0001a5128ce739e6e470aca6979ff343 Mon Sep 17 00:00:00 2001
From: Peter Oliver <[email protected]>
Date: Mon, 21 Nov 2022 20:53:58 +0000
Subject: [PATCH] Restore "Tune In URL" handling.
---
Plugin.pm | 7 +++++++
ProtocolHandler.pm | 23 +----------------------
URLHandler.pm | 28 ++++++++++++++++++++++++++++
3 files changed, 36 insertions(+), 22 deletions(-)
create mode 100644 URLHandler.pm
diff --git a/Plugin.pm b/Plugin.pm
index 84ca0e1..7efe0c5 100644
--- a/Plugin.pm
+++ b/Plugin.pm
@@ -135,6 +135,13 @@ sub initPlugin {
},
) );
+ if (Slim::Player::ProtocolHandlers->can('registerURLHandler')) {
+ Slim::Player::ProtocolHandlers->registerURLHandler(
+ Plugins::Bandcamp::URLHandler::PAGE_URL_REGEX,
+ 'Plugins::Bandcamp::URLHandler'
+ );
+ }
+
# initialize recent plays: need to add them to the LRU cache ordered by
timestamp
my $recent_plays = $cache->get('recent_plays');
map {
diff --git a/ProtocolHandler.pm b/ProtocolHandler.pm
index 89cce95..385859a 100644
--- a/ProtocolHandler.pm
+++ b/ProtocolHandler.pm
@@ -1,7 +1,7 @@
package Plugins::Bandcamp::ProtocolHandler;
use strict;
-use base qw(Slim::Player::Protocols::HTTPS);
+use base qw(Plugins::Bandcamp::URLHandler);
# use Scalar::Util qw(blessed);
@@ -9,10 +9,6 @@ package Plugins::Bandcamp::ProtocolHandler;
use Plugins::Bandcamp::Plugin;
-use constant PAGE_URL_REGEX =>
qr{^https?://(?:[a-z0-9-]+\.)?bandcamp\.com/}i;
-
-# Slim::Player::ProtocolHandlers->registerURLHandler(PAGE_URL_REGEX,
__PACKAGE__) if Slim::Player::ProtocolHandlers->can('registerURLHandler');
-
my $log = logger('plugin.bandcamp');
sub new {
@@ -38,23 +34,6 @@ sub new {
return $sock;
}
-sub explodePlaylist {
- my ($class, $client, $url, $cb) = @_;
-
- if ($url =~ m{https?://bandcamp\.com/stream_redirect}) {
- return $cb->([$url]);
- }
-
- Plugins::Bandcamp::Plugin::get_item_info_by_url( $client, sub {
- $cb->([ map { $_->{'play'} // () } @{$_[0]} ]);
- }, {}, { 'url' => $url } );
-}
-
-sub getMetadataFor {
- my ( $class, $client, $url ) = @_;
- return Plugins::Bandcamp::Plugin::metadata_provider($client, $url);
-}
-
sub scanUrl {
my ($class, $url, $args) = @_;
$args->{'cb'}->($args->{'song'}->currentTrack());
diff --git a/URLHandler.pm b/URLHandler.pm
new file mode 100644
index 0000000..26ae1a1
--- /dev/null
+++ b/URLHandler.pm
@@ -0,0 +1,28 @@
+package Plugins::Bandcamp::URLHandler;
+
+use strict;
+use base qw(Slim::Player::Protocols::HTTPS);
+use Plugins::Bandcamp::Plugin;
+
+use constant PAGE_URL_REGEX =>
qr{^https?://(?:[a-z0-9-]+\.)?bandcamp\.com/}i;
+
+
+sub explodePlaylist {
+ my ($class, $client, $url, $cb) = @_;
+
+ if ($url =~ m{https?://bandcamp\.com/stream_redirect}) {
+ return $cb->([$url]);
+ }
+
+ Plugins::Bandcamp::Plugin::get_item_info_by_url( $client, sub {
+ $cb->([ map { $_->{'play'} // () } @{$_[0]} ]);
+ }, {}, { 'url' => $url } );
+}
+
+sub getMetadataFor {
+ my ( $class, $client, $url ) = @_;
+ return Plugins::Bandcamp::Plugin::metadata_provider($client, $url);
+}
+
+
+1;
--
2.38.1
--------------------
------------------------------------------------------------------------
mavit's Profile: http://forums.slimdevices.com/member.php?userid=10203
View this thread: http://forums.slimdevices.com/showthread.php?t=112519
_______________________________________________
plugins mailing list
[email protected]
http://lists.slimdevices.com/mailman/listinfo/plugins