Add support to sharing from Arte's video to Kodi (#736)

* Add support to sharing from Arte video (The European Culture Channel) to Kodi
* Handle Arte's video (The European Culture Channel)
This commit is contained in:
STB Land 2020-05-25 20:38:50 +02:00 committed by GitHub
parent 74ef717a37
commit a9a833ddfe
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 98 additions and 0 deletions

View File

@ -1,6 +1,10 @@
Changelog
---------
Version 2.5.1
-------------
- Add support to sharing from Arte video (The European Culture Channel) to Kodi
Version 2.5.0
-------------
- Include search option in PVR section

View File

@ -75,6 +75,7 @@
<data android:host="www.svtplay.se"/>
<data android:host="soundcloud.com"/>
<data android:host="m.soundcloud.com"/>
<data android:host="www.arte.tv"/>
</intent-filter>
<meta-data android:name="android.service.chooser.chooser_target_service"
@ -128,6 +129,7 @@
<data android:host="www.svtplay.se"/>
<data android:host="soundcloud.com"/>
<data android:host="m.soundcloud.com"/>
<data android:host="www.arte.tv"/>
</intent-filter>
</activity>

View File

@ -64,6 +64,7 @@ import org.xbmc.kore.utils.LogUtils;
import org.xbmc.kore.utils.TabsAdapter;
import org.xbmc.kore.utils.UIUtils;
import org.xbmc.kore.utils.Utils;
import org.xbmc.kore.utils.PluginUrlUtils;
import java.io.IOException;
import java.net.MalformedURLException;
@ -623,6 +624,8 @@ public class RemoteActivity extends BaseActivity
String gti = amazonMatcher.group(1);
return "plugin://plugin.video.amazon-test/?asin=" + gti + "&mode=PlayVideo&adult=0&name=&trailer=0&selbitrate=0";
}
} else if (PluginUrlUtils.isHostArte(host)) {
return PluginUrlUtils.toPluginUrlArte(playuri);
}
return null;
}

View File

@ -0,0 +1,42 @@
/*
* Copyright 2020 STB Land. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.xbmc.kore.utils;
import android.net.Uri;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* Misc util methods for use with plugin URL
*/
public class PluginUrlUtils {
public static boolean isHostArte(String host) {
return host.equals("www.arte.tv");
}
public static String toPluginUrlArte(Uri playUri) {
Pattern pattern = Pattern.compile("^https://www.arte.tv/[a-z]{2}/videos/([0-9]{6}-[0-9]{3}-[A-Z])/.*$");
Matcher matcher = pattern.matcher(playUri.toString());
if (matcher.matches()) {
String kind="SHOW";
String program_id=matcher.group(1);
return "plugin://plugin.video.arteplussept/play/" + kind + "/" + program_id;
}
return null;
}
}

View File

@ -0,0 +1,47 @@
/*
* Copyright 2016 Martijn Brekhof. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.xbmc.kore.utils;
import android.net.Uri;
import org.junit.runner.RunWith;
import org.junit.Test;
import org.robolectric.annotation.Config;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
@RunWith(AndroidJUnit4.class)
@Config(sdk = 28)
public class PluginUrlUtilsTest {
@Test
public void isHostArte() throws Exception {
assertTrue(PluginUrlUtils.isHostArte("www.arte.tv"));
}
@Test
public void toPluginUrlArte() throws Exception {
Uri playUri = Uri.parse("https://www.arte.tv/fr/videos/084692-000-A/mongolie-le-reve-d-une-jeune-nomade/");
String pluginUrl = PluginUrlUtils.toPluginUrlArte(playUri);
assertNotNull(pluginUrl);
assertEquals("plugin://plugin.video.arteplussept/play/SHOW/084692-000-A", pluginUrl);
}
}