mirror of
				https://github.com/DigitalDevices/pvr.octonet.git
				synced 2025-03-01 10:53:09 +00:00 
			
		
		
		
	Compare commits
	
		
			18 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					d4077a142c | ||
| 
						 | 
					6ee28476fa | ||
| 
						 | 
					de0a0f9a81 | ||
| 
						 | 
					1b0c31654a | ||
| 
						 | 
					f260cb07e9 | ||
| 
						 | 
					8549a31c8d | ||
| 
						 | 
					0a7fb087ac | ||
| 
						 | 
					5c0f000a91 | ||
| 
						 | 
					2b020cec9c | ||
| 
						 | 
					96a19310ca | ||
| 
						 | 
					3a6f4eb7b5 | ||
| 
						 | 
					2067aba378 | ||
| 
						 | 
					b52f50ef30 | ||
| 
						 | 
					d1f9af2225 | ||
| 
						 | 
					880d313bef | ||
| 
						 | 
					94eb166783 | ||
| 
						 | 
					ba7e50e79c | ||
| 
						 | 
					5fc6fc2ebc | 
@@ -36,7 +36,7 @@ before_install:
 | 
			
		||||
#
 | 
			
		||||
before_script:
 | 
			
		||||
  - cd $TRAVIS_BUILD_DIR/..
 | 
			
		||||
  - git clone --depth=1 https://github.com/xbmc/xbmc.git
 | 
			
		||||
  - git clone --depth=1 https://github.com/xbmc/xbmc.git -b Krypton
 | 
			
		||||
  - mkdir -p xbmc/project/cmake/addons/addons/pvr.octonet
 | 
			
		||||
  - echo "pvr.octonet https://github.com/DigitalDevices/pvr.octonet master" > xbmc/project/cmake/addons/addons/pvr.octonet/pvr.octonet.txt
 | 
			
		||||
  - cd $TRAVIS_BUILD_DIR && mkdir build && cd build
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										47
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										47
									
								
								README.md
									
									
									
									
									
								
							@@ -1,27 +1,40 @@
 | 
			
		||||
# Octonet PVR
 | 
			
		||||
DigitalDevices [Octonet] (http://www.digital-devices.eu/shop/de/netzwerk-tv/) PVR client addon for [Kodi] (http://kodi.tv)
 | 
			
		||||
Digital Devices [Octonet](http://www.digital-devices.eu/shop/de/netzwerk-tv/) PVR client addon for [Kodi](http://kodi.tv)
 | 
			
		||||
 | 
			
		||||
| Platform | Status |
 | 
			
		||||
|----------|--------|
 | 
			
		||||
| Linux + OS X (Travis) | [](https://travis-ci.org/julianscheel/pvr.octonet) |
 | 
			
		||||
| Windows (AppVeyor) | [](https://ci.appveyor.com/project/julianscheel/pvr-octonet) |
 | 
			
		||||
 | 
			
		||||
# Building
 | 
			
		||||
 | 
			
		||||
## Windows
 | 
			
		||||
1. Create a file `project/cmake/addons/addons/kodi.pvr.octonet/kodi.pvr.octonet.txt` containing a
 | 
			
		||||
   single line `kodi.pvr.octonet file://C:\some\path`. The path doesn't matter and doesn't need to
 | 
			
		||||
   actually exist.
 | 
			
		||||
These instructions work on all supported platforms for the most part. Obviously, paths need to be
 | 
			
		||||
adjusted according to your OS (`/` vs `\`). We use Linux paths here as an example.
 | 
			
		||||
 | 
			
		||||
2. Use a shell that has environment variables setup by Visual Studio for the native x86 toolchain.
 | 
			
		||||
   Run the following in a new build directory and adjust paths accordingly:
 | 
			
		||||
Clone the `pvr.octonet` repository:
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
cmake -G "NMake Makefiles" ^
 | 
			
		||||
    -DCMAKE_BUILD_TYPE=Release ^
 | 
			
		||||
    -DADDONS_TO_BUILD="kodi.pvr.octonet" ^
 | 
			
		||||
    -DADDON_SRC_PREFIX="path_to_where_kodi.pvr.octonet_is" ^
 | 
			
		||||
    -DCMAKE_INSTALL_PREFIX="some_subdirectory" ^
 | 
			
		||||
    -DPACKAGE_ZIP=ON ^
 | 
			
		||||
    "path_to_kodi\project\cmake\addons"
 | 
			
		||||
$ git clone https://github.com/DigitalDevices/pvr.octonet.git
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Make sure `ADDON_SRC_PREFIX` points to the parent directory of `kodi.pvr.octonet`.
 | 
			
		||||
Clone the Kodi repository:
 | 
			
		||||
 | 
			
		||||
4. Build the addon by running `nmake`. Run `nmake package-addons` to package a zip file of the
 | 
			
		||||
   addon.
 | 
			
		||||
```
 | 
			
		||||
$ git clone https://github.com/xbmc/xbmc.git
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
If you already have a local Kodi checkout, you can use that one. Just make sure it is recent enough
 | 
			
		||||
(Kodi 17 Beta 5 or later should work).
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
$ cd pvr.octonet
 | 
			
		||||
$ mkdir build
 | 
			
		||||
$ cd build
 | 
			
		||||
$ cmake -DCMAKE_BUILD_TYPE=Release -DADDONS_TO_BUILD="pvr.octonet" -DADDON_SRC_PREFIX="path to parent of pvr.octonet" -DCMAKE_INSTALL_PREFIX="install" -DPACKAGE_ZIP=ON "path to kodi/project/cmake/addons"
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
On Windows, you should add `-G "NMake Makefiles"` to the CMake invocation. Make sure that
 | 
			
		||||
`ADDON_SRC_PREFIX` does _not_ point directly to `pvr.octonet` but instead to its parent directory.
 | 
			
		||||
 | 
			
		||||
Finally, build the plugin with `make` (or `nmake` on Windows). The plugin should be in an `install`
 | 
			
		||||
subdirectory.
 | 
			
		||||
 
 | 
			
		||||
@@ -21,15 +21,20 @@ environment:
 | 
			
		||||
    - GENERATOR: "Visual Studio 14"
 | 
			
		||||
      CONFIG: Release
 | 
			
		||||
 | 
			
		||||
artifacts:
 | 
			
		||||
  - path: build/install/
 | 
			
		||||
    name: pvr.octonet
 | 
			
		||||
    type: zip
 | 
			
		||||
 | 
			
		||||
build_script:
 | 
			
		||||
  - cd ..
 | 
			
		||||
  - set ROOT=%cd%
 | 
			
		||||
  - git clone --depth=1 https://github.com/xbmc/xbmc.git
 | 
			
		||||
  - git clone --depth=1 https://github.com/xbmc/xbmc.git -b Krypton
 | 
			
		||||
  - mkdir xbmc\project\cmake\addons\addons\pvr.octonet
 | 
			
		||||
  - echo pvr.octonet https://github.com/DigitalDevices/pvr.octonet master > xbmc\project\cmake\addons\addons\pvr.octonet\pvr.octonet.txt
 | 
			
		||||
  - cd %ADDON%
 | 
			
		||||
  - mkdir build
 | 
			
		||||
  - cd build
 | 
			
		||||
  # Must use absolute path for cmake to build depends correctly
 | 
			
		||||
  - cmake -G "%GENERATOR%" -DADDONS_TO_BUILD=%ADDON% -DCMAKE_BUILD_TYPE=%CONFIG% -DADDON_SRC_PREFIX=%ROOT% -DCMAKE_INSTALL_PREFIX=%ROOT%\xbmc\addons -DPACKAGE_ZIP=1 %ROOT%\xbmc\project\cmake\addons
 | 
			
		||||
  - cmake -G "%GENERATOR%" -DADDONS_TO_BUILD=%ADDON% -DCMAKE_BUILD_TYPE=%CONFIG% -DADDON_SRC_PREFIX=%ROOT% -DCMAKE_INSTALL_PREFIX=install -DPACKAGE_ZIP=1 %ROOT%\xbmc\project\cmake\addons
 | 
			
		||||
  - cmake --build . --config %CONFIG%
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										7
									
								
								debian/control
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								debian/control
									
									
									
									
										vendored
									
									
								
							@@ -11,13 +11,12 @@ Package: kodi-pvr-octonet
 | 
			
		||||
Section: libs
 | 
			
		||||
Architecture: any
 | 
			
		||||
Depends: ${shlibs:Depends}, ${misc:Depends}
 | 
			
		||||
Description: DigitalDevices Octopus NET PVR for Kodi
 | 
			
		||||
Description: Digital Devices Octopus NET PVR for Kodi
 | 
			
		||||
 Digital Devices Octopus NET PVR for Kodi
 | 
			
		||||
 | 
			
		||||
Package: kodi-pvr-octonet-dbg
 | 
			
		||||
Section: libs
 | 
			
		||||
Architecture: any
 | 
			
		||||
Depends: ${shlibs:Depends}, ${misc:Depends}
 | 
			
		||||
Description: debug symbols for DigitalDevices Octopus NET PVR for Kodi
 | 
			
		||||
 debug symbols for DigitalDevices Octopus NET PVR for Kodi
 | 
			
		||||
 | 
			
		||||
Description: debug symbols for Digital Devices Octopus NET PVR for Kodi
 | 
			
		||||
 debug symbols for Digital Devices Octopus NET PVR for Kodi
 | 
			
		||||
 
 | 
			
		||||
@@ -1,12 +1,12 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<addon
 | 
			
		||||
	id="pvr.octonet"
 | 
			
		||||
	version="0.3.2"
 | 
			
		||||
	name="PVR DigitalDevices Octopus NET Client"
 | 
			
		||||
	version="0.3.7"
 | 
			
		||||
	name="Digital Devices Octopus NET Client"
 | 
			
		||||
	provider-name="digitaldevices">
 | 
			
		||||
	<requires>
 | 
			
		||||
		<c-pluff version="0.1" />
 | 
			
		||||
		<import addon="xbmc.pvr" version="5.2.0" />
 | 
			
		||||
		<import addon="xbmc.pvr" version="5.2.1" />
 | 
			
		||||
	</requires>
 | 
			
		||||
	<extension
 | 
			
		||||
		point="xbmc.pvrclient"
 | 
			
		||||
@@ -16,8 +16,8 @@
 | 
			
		||||
		library_windx="pvr.octonet.dll"
 | 
			
		||||
		library_android="libpvr.octonet.so" />
 | 
			
		||||
	<extension point="xbmc.addon.metadata">
 | 
			
		||||
		<summary lang="de_DE">Kodi PVR Addon für DigitalDevices Octopus NET Streams</summary>
 | 
			
		||||
		<summary lang="en_US">Kodi PVR Addon for DigitalDevices Octopus NET Streams</summary>
 | 
			
		||||
		<summary lang="de_DE">Kodi PVR Addon für Digital Devices Octopus NET Streams</summary>
 | 
			
		||||
		<summary lang="en_US">Kodi PVR Addon for Digital Devices Octopus NET Streams</summary>
 | 
			
		||||
		<platform>all</platform>
 | 
			
		||||
	</extension>
 | 
			
		||||
</addon>
 | 
			
		||||
 
 | 
			
		||||
@@ -53,14 +53,8 @@ OctonetData::~OctonetData(void)
 | 
			
		||||
 | 
			
		||||
int64_t OctonetData::parseID(std::string id)
 | 
			
		||||
{
 | 
			
		||||
	int64_t nativeId;
 | 
			
		||||
	size_t strip;
 | 
			
		||||
	/* Strip colons from id */
 | 
			
		||||
	while ((strip = id.find(":")) != std::string::npos)
 | 
			
		||||
		id.erase(strip, 1);
 | 
			
		||||
 | 
			
		||||
	std::stringstream ids(id);
 | 
			
		||||
	ids >> nativeId;
 | 
			
		||||
	std::hash<std::string> hash_fn;
 | 
			
		||||
	int64_t nativeId = hash_fn(id);
 | 
			
		||||
 | 
			
		||||
	return nativeId;
 | 
			
		||||
}
 | 
			
		||||
@@ -125,7 +119,6 @@ OctonetChannel* OctonetData::findChannel(int64_t nativeId)
 | 
			
		||||
time_t OctonetData::parseDateTime(std::string date)
 | 
			
		||||
{
 | 
			
		||||
	struct tm timeinfo;
 | 
			
		||||
	time_t time;
 | 
			
		||||
 | 
			
		||||
	memset(&timeinfo, 0, sizeof(timeinfo));
 | 
			
		||||
 | 
			
		||||
@@ -237,20 +230,23 @@ PVR_ERROR OctonetData::getChannels(ADDON_HANDLE handle, bool bRadio)
 | 
			
		||||
 | 
			
		||||
PVR_ERROR OctonetData::getEPG(ADDON_HANDLE handle, const PVR_CHANNEL &channel, time_t start, time_t end)
 | 
			
		||||
{
 | 
			
		||||
	bool needs_reload = false;
 | 
			
		||||
	for (unsigned int i = 0; i < channels.size(); i++)
 | 
			
		||||
	{
 | 
			
		||||
		OctonetChannel &chan = channels.at(i);
 | 
			
		||||
		if (channel.iUniqueId != chan.id)
 | 
			
		||||
			continue;
 | 
			
		||||
 | 
			
		||||
		if(chan.epg.empty()) {
 | 
			
		||||
			loadEPG();
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// FIXME: Check if reload is needed!?
 | 
			
		||||
 | 
			
		||||
		std::vector<OctonetEpgEntry>::iterator it;
 | 
			
		||||
		time_t last_end = 0;
 | 
			
		||||
		for (it = chan.epg.begin(); it < chan.epg.end(); ++it) {
 | 
			
		||||
			if (end > last_end)
 | 
			
		||||
				last_end = end;
 | 
			
		||||
		for (it = chan.epg.begin(); it != chan.epg.end(); ++it) {
 | 
			
		||||
			if (it->end > last_end)
 | 
			
		||||
				last_end = it->end;
 | 
			
		||||
 | 
			
		||||
			if (it->end < start || it->start > end) {
 | 
			
		||||
				continue;
 | 
			
		||||
@@ -271,6 +267,24 @@ PVR_ERROR OctonetData::getEPG(ADDON_HANDLE handle, const PVR_CHANNEL &channel, t
 | 
			
		||||
 | 
			
		||||
		if (last_end < end)
 | 
			
		||||
			loadEPG();
 | 
			
		||||
 | 
			
		||||
		for (it = chan.epg.begin(); it != chan.epg.end(); ++it) {
 | 
			
		||||
			if (it->end < start || it->start > end) {
 | 
			
		||||
				continue;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			EPG_TAG entry;
 | 
			
		||||
			memset(&entry, 0, sizeof(EPG_TAG));
 | 
			
		||||
 | 
			
		||||
			entry.iChannelNumber = i;
 | 
			
		||||
			entry.iUniqueBroadcastId = it->id;
 | 
			
		||||
			entry.strTitle = it->title.c_str();
 | 
			
		||||
			entry.strPlotOutline = it->subtitle.c_str();
 | 
			
		||||
			entry.startTime = it->start;
 | 
			
		||||
			entry.endTime = it->end;
 | 
			
		||||
 | 
			
		||||
			pvr->TransferEpgEntry(handle, &entry);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return PVR_ERROR_NO_ERROR;
 | 
			
		||||
 
 | 
			
		||||
@@ -157,7 +157,7 @@ PVR_ERROR GetAddonCapabilities(PVR_ADDON_CAPABILITIES *pCapabilities)
 | 
			
		||||
 | 
			
		||||
const char* GetBackendName(void)
 | 
			
		||||
{
 | 
			
		||||
	return "DigitalDevices Octopus NET Client";
 | 
			
		||||
	return "Digital Devices Octopus NET Client";
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const char* GetBackendVersion(void)
 | 
			
		||||
@@ -271,6 +271,7 @@ bool SwitchChannel(const PVR_CHANNEL& channel) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
PVR_ERROR SignalStatus(PVR_SIGNAL_STATUS& signalStatus) {
 | 
			
		||||
	memset(&signalStatus, 0, sizeof(PVR_SIGNAL_STATUS));
 | 
			
		||||
	rtsp_fill_signal_status(signalStatus);
 | 
			
		||||
	return PVR_ERROR_NO_ERROR;
 | 
			
		||||
}
 | 
			
		||||
@@ -301,7 +302,7 @@ bool CanSeekStream() { return false; }
 | 
			
		||||
 | 
			
		||||
/* Callbacks */
 | 
			
		||||
void PauseStream(bool bPaused) {}
 | 
			
		||||
bool SeekTime(int time, bool backwards, double *startpts) { return false; }
 | 
			
		||||
bool SeekTime(double time, bool backwards, double *startpts) { return false; }
 | 
			
		||||
void SetSpeed(int speed) {}
 | 
			
		||||
PVR_ERROR SetEPGTimeFrame(int) { return PVR_ERROR_NOT_IMPLEMENTED; }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user