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