Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add-on version incremented to 21.3.1 from Weblate #473

Open
wants to merge 16 commits into
base: Omega
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/increment-version.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: Increment version when languages are updated

on:
push:
branches: [ Matrix, Nexus, Omega ]
branches: [ Matrix, Nexus, Omega, Piers ]
paths:
- '**resource.language.**strings.po'

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/sync-addon-metadata-translations.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: Sync addon metadata translations

on:
push:
branches: [ Matrix, Nexus, Omega ]
branches: [ Matrix, Nexus, Omega, Piers ]
paths:
- '**addon.xml.in'
- '**resource.language.**strings.po'
Expand Down
2 changes: 1 addition & 1 deletion Jenkinsfile
Original file line number Diff line number Diff line change
@@ -1 +1 @@
buildPlugin(version: "Omega")
buildPlugin(version: "Piers")
7 changes: 4 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[![License: GPL-2.0-or-later](https://img.shields.io/badge/License-GPL%20v2+-blue.svg)](LICENSE.md)
[![Build and run tests](https://github.com/kodi-pvr/pvr.vuplus/actions/workflows/build.yml/badge.svg?branch=Omega)](https://github.com/kodi-pvr/pvr.vuplus/actions/workflows/build.yml)
[![Build Status](https://dev.azure.com/teamkodi/kodi-pvr/_apis/build/status/kodi-pvr.pvr.vuplus?branchName=Omega)](https://dev.azure.com/teamkodi/kodi-pvr/_build/latest?definitionId=68&branchName=Omega)
[![Build Status](https://jenkins.kodi.tv/view/Addons/job/kodi-pvr/job/pvr.vuplus/job/Omega/badge/icon)](https://jenkins.kodi.tv/blue/organizations/jenkins/kodi-pvr%2Fpvr.vuplus/branches/)
[![Build and run tests](https://github.com/kodi-pvr/pvr.vuplus/actions/workflows/build.yml/badge.svg?branch=Piers)](https://github.com/kodi-pvr/pvr.vuplus/actions/workflows/build.yml)
[![Build Status](https://dev.azure.com/teamkodi/kodi-pvr/_apis/build/status/kodi-pvr.pvr.vuplus?branchName=Piers)](https://dev.azure.com/teamkodi/kodi-pvr/_build/latest?definitionId=68&branchName=Piers)
[![Build Status](https://jenkins.kodi.tv/view/Addons/job/kodi-pvr/job/pvr.vuplus/job/Piers/badge/icon)](https://jenkins.kodi.tv/blue/organizations/jenkins/kodi-pvr%2Fpvr.vuplus/branches/)

# Enigma2 PVR
Enigma2 PVR client addon for [Kodi](https://kodi.tv). Enigma2 is a open source TV-receiver/DVR platform which Linux-based firmware (OS images) can be loaded onto many Linux-based set-top boxes (satellite, terrestrial, cable or a combination of these) from different manufacturers. This add-on leverages the [OpenWebIf project](#https://github.com/E2OpenPlugins/e2openplugin-OpenWebif) to interact with the Enigma2 device via Restful APIs.
Expand Down Expand Up @@ -217,6 +217,7 @@ The following configuration is available on the Recordings tab of the addon sett
* **Enable EDLs support**: EDLs are used to define commericals etc. in recordings. If a tool like [Comskip]() is used to generate EDL files enabling this will allow Kodi PVR to use them. E.g. if there is a file called ```my recording.ts``` the EDL file should be call ```my recording.edl```. Note: enabling this setting has no effect if the files are not present.
* **EDL start time padding**: Padding to use at an EDL stop. I.e. use a negative number to start the cut earlier and positive to start the cut later. Default 0.
* **EDL stop time padding**: Padding to use at an EDL stop. I.e. use a negative number to stop the cut earlier and positive to stop the cut later. Default 0.
* **Enable WebIf Internal Movie List**: Use internal OWF MovieList (avoids memory leak on some images). Note: this will only have an effect if OpenWebIf is of the minimum supported version (1.4.6).

### Timers

Expand Down
2 changes: 1 addition & 1 deletion azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ variables:
trigger:
branches:
include:
- Nexus
- Piers
- Omega
- releases/*
paths:
Expand Down
4 changes: 2 additions & 2 deletions pvr.vuplus/addon.xml.in
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<addon
id="pvr.vuplus"
version="21.2.0"
version="22.3.1"
name="Enigma2 Client"
provider-name="Joerg Dembski and Ross Nicholson">
<requires>@ADDON_DEPENDS@
<import addon="inputstream.ffmpegdirect" minversion="21.0.0"/>
<import addon="inputstream.ffmpegdirect" minversion="22.0.0"/>
</requires>
<extension
point="kodi.pvrclient"
Expand Down
16 changes: 16 additions & 0 deletions pvr.vuplus/changelog.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,19 @@
v22.3.1
- Translations updates from Weblate
- en_gb

v22.3.0
- Add expert setting to toggle using OpenWebIf internal MovieList on/off

v22.2.0
- PVR Add-on API v9.2.0

v22.1.0
- PVR Add-on API v9.0.0

v22.0.0
- Initial release for Piers (PVR Add-on API v8.4.0)

v21.2.0
- If a custom timeshift buffer path does not exist use the default instead
- Fix special regex characters causing a crash for auto timers
Expand Down
5 changes: 5 additions & 0 deletions pvr.vuplus/resources/instance-settings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -670,6 +670,11 @@
</constraints>
<control type="spinner" format="integer" />
</setting>
<setting id="enablewebifinternalmovielist" type="boolean" label="30021" help="30692">
<level>3</level>
<default>true</default>
<control type="toggle" />
</setting>
</group>

<group id="2" label="30157">
Expand Down
12 changes: 10 additions & 2 deletions pvr.vuplus/resources/language/resource.language.en_gb/strings.po
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,10 @@ msgctxt "#30020"
msgid "Advanced"
msgstr ""

#empty string with id 30021
#. label: Recordings - enablewebifinternalmovielist
msgctxt "#30021"
msgid "Enable WebIf Internal Movie List"
msgstr ""

#. label: Recordings - recordingsrecursive
msgctxt "#30022"
Expand Down Expand Up @@ -1310,7 +1313,12 @@ msgctxt "#30691"
msgid "Create a virtual structure grouping recordings with the same name into folders. Will be applied to all recordings unless keeping the folder structure on the backend. In that case it will only be applied to the recordings in the root of each recording location."
msgstr ""

#empty strings from id 30692 to 30699
#. help: Recordings - enablewebifinternalmovielist
msgctxt "#30692"
msgid "Use internal OWF MovieList (avoids memory leak on some images). Note: this will only have an effect if OpenWebIf is of the minimum supported version (1.4.6)."
msgstr ""

#empty strings from id 30693 to 30699

#. help info - Timers

Expand Down
12 changes: 6 additions & 6 deletions src/Enigma2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -498,7 +498,7 @@ PVR_ERROR Enigma2::GetChannels(bool radio, kodi::addon::PVRChannelsResultSet& re
return PVR_ERROR_NO_ERROR;
}

PVR_ERROR Enigma2::GetChannelStreamProperties(const kodi::addon::PVRChannel& channel, std::vector<kodi::addon::PVRStreamProperty>& properties)
PVR_ERROR Enigma2::GetChannelStreamProperties(const kodi::addon::PVRChannel& channel, PVR_SOURCE source, std::vector<kodi::addon::PVRStreamProperty>& properties)
{
if (!IsConnected())
return PVR_ERROR_SERVER_ERROR;
Expand Down Expand Up @@ -772,7 +772,7 @@ PVR_ERROR Enigma2::GetRecordingEdl(const kodi::addon::PVRRecording& recording, s
return PVR_ERROR_NO_ERROR;
}

bool Enigma2::OpenRecordedStream(const kodi::addon::PVRRecording& recinfo)
bool Enigma2::OpenRecordedStream(const kodi::addon::PVRRecording& recinfo, int64_t& streamId)
{
if (m_recordingReader)
SafeDelete(m_recordingReader);
Expand Down Expand Up @@ -1117,29 +1117,29 @@ void Enigma2::PauseStream(bool paused)
m_paused = paused;
}

void Enigma2::CloseRecordedStream()
void Enigma2::CloseRecordedStream(int64_t streamId)
{
if (m_recordingReader)
SafeDelete(m_recordingReader);
}

int Enigma2::ReadRecordedStream(unsigned char* buffer, unsigned int size)
int Enigma2::ReadRecordedStream(int64_t streamId, unsigned char* buffer, unsigned int size)
{
if (!m_recordingReader)
return 0;

return m_recordingReader->ReadData(buffer, size);
}

int64_t Enigma2::SeekRecordedStream(int64_t position, int whence)
int64_t Enigma2::SeekRecordedStream(int64_t streamId, int64_t position, int whence)
{
if (!m_recordingReader)
return 0;

return m_recordingReader->Seek(position, whence);
}

int64_t Enigma2::LengthRecordedStream()
int64_t Enigma2::LengthRecordedStream(int64_t streamId)
{
if (!m_recordingReader)
return -1;
Expand Down
12 changes: 6 additions & 6 deletions src/Enigma2.h
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ class ATTR_DLL_LOCAL Enigma2 : public enigma2::IConnectionListener
PVR_ERROR GetChannelGroupMembers(const kodi::addon::PVRChannelGroup& group, kodi::addon::PVRChannelGroupMembersResultSet& results) override;
PVR_ERROR GetChannelsAmount(int& amount) override;
PVR_ERROR GetChannels(bool radio, kodi::addon::PVRChannelsResultSet& results) override;
PVR_ERROR GetChannelStreamProperties(const kodi::addon::PVRChannel& channel, std::vector<kodi::addon::PVRStreamProperty>& properties) override;
PVR_ERROR GetChannelStreamProperties(const kodi::addon::PVRChannel& channel, PVR_SOURCE source, std::vector<kodi::addon::PVRStreamProperty>& properties) override;
PVR_ERROR GetEPGForChannel(int channelUid, time_t start, time_t end, kodi::addon::PVREPGTagsResultSet& results) override;
PVR_ERROR SetEPGMaxPastDays(int epgMaxPastDays) override;
PVR_ERROR SetEPGMaxFutureDays(int epgMaxFutureDays) override;
Expand Down Expand Up @@ -123,11 +123,11 @@ class ATTR_DLL_LOCAL Enigma2 : public enigma2::IConnectionListener
PVR_ERROR GetStreamTimes(kodi::addon::PVRStreamTimes& times) override;
void PauseStream(bool paused) override;

bool OpenRecordedStream(const kodi::addon::PVRRecording& recinfo) override;
void CloseRecordedStream() override;
int ReadRecordedStream(unsigned char* buffer, unsigned int size) override;
int64_t SeekRecordedStream(int64_t position, int whence) override;
int64_t LengthRecordedStream() override;
bool OpenRecordedStream(const kodi::addon::PVRRecording& recinfo, int64_t& streamId) override;
void CloseRecordedStream(int64_t streamId) override;
int ReadRecordedStream(int64_t streamId, unsigned char* buffer, unsigned int size) override;
int64_t SeekRecordedStream(int64_t streamId, int64_t position, int whence) override;
int64_t LengthRecordedStream(int64_t streamId) override;

protected:
void Process();
Expand Down
3 changes: 3 additions & 0 deletions src/enigma2/InstanceSettings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@ void InstanceSettings::ReadSettings()
m_instance.CheckInstanceSettingBoolean("enablerecordingedls", m_enableRecordingEDLs);
m_instance.CheckInstanceSettingInt("edlpaddingstart", m_edlStartTimePadding);
m_instance.CheckInstanceSettingInt("edlpaddingstop", m_edlStopTimePadding);
m_instance.CheckInstanceSettingBoolean("enablewebifinternalmovielist", m_enableWebIfInternalMovieList);

//Timers
m_instance.CheckInstanceSettingBoolean("enablegenrepeattimers", m_enableGenRepeatTimers);
Expand Down Expand Up @@ -319,6 +320,8 @@ ADDON_STATUS InstanceSettings::SetSetting(const std::string& settingName, const
return SetSetting<int, ADDON_STATUS>(settingName, settingValue, m_edlStartTimePadding, ADDON_STATUS_OK, ADDON_STATUS_OK);
else if (settingName == "edlpaddingstop")
return SetSetting<int, ADDON_STATUS>(settingName, settingValue, m_edlStopTimePadding, ADDON_STATUS_OK, ADDON_STATUS_OK);
else if (settingName == "enablewebifinternalmovielist")
return SetSetting<bool, ADDON_STATUS>(settingName, settingValue, m_enableWebIfInternalMovieList, ADDON_STATUS_NEED_RESTART, ADDON_STATUS_OK);
//Timers
else if (settingName == "enablegenrepeattimers")
return SetSetting<bool, ADDON_STATUS>(settingName, settingValue, m_enableGenRepeatTimers, ADDON_STATUS_OK, ADDON_STATUS_OK);
Expand Down
2 changes: 2 additions & 0 deletions src/enigma2/InstanceSettings.h
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,7 @@ namespace enigma2
bool GetRecordingEDLsEnabled() const { return m_enableRecordingEDLs; }
int GetEDLStartTimePadding() const { return m_edlStartTimePadding; }
int GetEDLStopTimePadding() const { return m_edlStopTimePadding; }
bool GetWebIfInternalMovieListEnabled() const { return m_enableWebIfInternalMovieList; }

//Timers
bool GetGenRepeatTimersEnabled() const { return m_enableGenRepeatTimers; }
Expand Down Expand Up @@ -389,6 +390,7 @@ namespace enigma2
bool m_enableRecordingEDLs = false;
int m_edlStartTimePadding = 0;
int m_edlStopTimePadding = 0;
bool m_enableWebIfInternalMovieList = true;

//Timers
bool m_enableGenRepeatTimers = true;
Expand Down
8 changes: 4 additions & 4 deletions src/enigma2/Recordings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -759,7 +759,7 @@ void Recordings::LoadRecordings(bool deleted)
namespace
{

std::string GetRecordingsParams(const std::string recordingLocation, bool deleted, bool getRecordingsRecursively, bool supportsMovieListRecursive, bool supportsMovieListOWFInternal)
std::string GetRecordingsParams(const std::string recordingLocation, bool deleted, bool getRecordingsRecursively, bool supportsMovieListRecursive, bool supportsMovieListOWFInternal, bool webIfInternalMovieListEnabled)
{
std::string recordingsParams;

Expand All @@ -772,14 +772,14 @@ std::string GetRecordingsParams(const std::string recordingLocation, bool delete

// &internal=true requests that openwebif uses it own OWFMovieList instead of the E2 MovieList
// becuase the E2 MovieList causes memory leaks
if (supportsMovieListOWFInternal)
if (supportsMovieListOWFInternal && webIfInternalMovieListEnabled)
recordingsParams += "&internal=1";
}
else
{
// &internal=true requests that openwebif uses it own OWFMovieList instead of the E2 MovieList
// becuase the E2 MovieList causes memory leaks
if (supportsMovieListOWFInternal)
if (supportsMovieListOWFInternal && webIfInternalMovieListEnabled)
{
if (recordingLocation == "default")
recordingsParams += "?internal=1";
Expand All @@ -798,7 +798,7 @@ bool Recordings::GetRecordingsFromLocation(const std::string recordingLocation,
std::string url;
std::string directory;

std::string recordingsParams = GetRecordingsParams(recordingLocation, deleted, m_settings->GetRecordingsRecursively(), m_settings->SupportsMovieListRecursive(), m_settings->SupportsMovieListOWFInternal());
std::string recordingsParams = GetRecordingsParams(recordingLocation, deleted, m_settings->GetRecordingsRecursively(), m_settings->SupportsMovieListRecursive(), m_settings->SupportsMovieListOWFInternal(), m_settings->GetWebIfInternalMovieListEnabled());

if (recordingLocation == "default")
{
Expand Down