From 3dbb9c2ab120ca77b4de7f5f86788ca7d358a40c Mon Sep 17 00:00:00 2001 From: methodus Date: Sun, 16 Sep 2012 09:05:07 +0200 Subject: =?UTF-8?q?Parser=20f=C3=BCr=20Suche,=20Filter=20und=20Sortierung?= =?UTF-8?q?=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 1 + httptnt/deviceDescription.ecpp | 2 +- include/media/mediaManager.h | 3 ++- include/plugin.h | 15 +++++++++++++ include/server.h | 2 +- media/mediaManager.cpp | 51 +++++++++++++++++++++++++++++------------- media/pluginManager.cpp | 15 +++++++++++++ server/connectionManager.cpp | 1 + server/server.cpp | 2 +- server/service.cpp | 3 ++- 10 files changed, 75 insertions(+), 20 deletions(-) diff --git a/Makefile b/Makefile index 12a5ba1..458be13 100644 --- a/Makefile +++ b/Makefile @@ -65,6 +65,7 @@ OBJS = $(PLUGIN).o \ server/contentDirectory.o \ common/config.o \ common/tools.o \ + common/parser.o \ media/profile.o \ media/mediaManager.o \ media/pluginManager.o \ diff --git a/httptnt/deviceDescription.ecpp b/httptnt/deviceDescription.ecpp index dfbe853..b879145 100644 --- a/httptnt/deviceDescription.ecpp +++ b/httptnt/deviceDescription.ecpp @@ -48,7 +48,7 @@ using namespace upnp; <$ serverDescription.modelNumber $> <$ serverDescription.modelURL $> <$ serverDescription.serialNumber $> - <$ deviceUUID $> + uuid:<$ deviceUUID $> <$ urlBase $><$ presentationUrl $> DMS-1.50 diff --git a/include/media/mediaManager.h b/include/media/mediaManager.h index 7b3bf83..cccca71 100644 --- a/include/media/mediaManager.h +++ b/include/media/mediaManager.h @@ -72,10 +72,11 @@ private: void Action(); bool CheckIntegrity(); - void OnContainerUpdate(string containerID, long updateID); + void OnContainerUpdate(string uri, long updateID); uint32_t mSystemUpdateID; IdList mEventedContainerUpdateIDs; + StringList mScanDirectories; string mDatabaseFile; tntdb::Connection mConnection; diff --git a/include/plugin.h b/include/plugin.h index 29803f5..74f5ae4 100644 --- a/include/plugin.h +++ b/include/plugin.h @@ -49,6 +49,21 @@ namespace upnp { class cMetadata { public: + static const char* KEY_OBJECTID; + static const char* KEY_PARENTID; + static const char* KEY_TITLE; + static const char* KEY_CREATOR; + static const char* KEY_CLASS; + static const char* KEY_RESTRICTED; + static const char* KEY_DESCRIPTION; + static const char* KEY_LONG_DESCRIPTION; + static const char* KEY_DATE; + static const char* KEY_LANGUAGE; + static const char* KEY_CHANNEL_NR; + static const char* KEY_CHANNEL_NAME; + static const char* KEY_SCHEDULED_START; + static const char* KEY_SCHEDULED_END; + /** * Property class * diff --git a/include/server.h b/include/server.h index 03a7524..cc04b40 100644 --- a/include/server.h +++ b/include/server.h @@ -12,12 +12,12 @@ #include #include "../include/webserver.h" #include "../include/config.h" +#include "../include/service.h" using namespace std; namespace upnp { -class cUPnPService; class cMediaManager; class cMediaServer { diff --git a/media/mediaManager.cpp b/media/mediaManager.cpp index ed07da7..2b5fd87 100644 --- a/media/mediaManager.cpp +++ b/media/mediaManager.cpp @@ -8,6 +8,7 @@ #include "../include/plugin.h" #include "../include/media/mediaManager.h" #include "../include/server.h" +#include "../include/parser.h" #include #include #include @@ -37,10 +38,15 @@ IdList cMediaManager::GetContainerUpdateIDs(bool unevented){ return list; } -void cMediaManager::OnContainerUpdate(string containerID, long updateID){ +void cMediaManager::OnContainerUpdate(string uri, long updateID){ ++mSystemUpdateID; - mEventedContainerUpdateIDs[containerID] = updateID; + mEventedContainerUpdateIDs[tools::GenerateUUIDFromURL(uri)] = updateID; + + mScanDirectories.push_back(uri); + + // Start scanning for changed files. + Start(); } StringList cMediaManager::GetSearchCapabilities() const { @@ -94,6 +100,20 @@ int cMediaManager::Browse(BrowseRequest& request){ request.totalMatches = 0; request.updateID = 0; + switch (request.browseMetadata){ + case CD_BROWSE_METADATA: + + + + case CD_BROWSE_DIRECT_CHILDREN: + + + + default: + esyslog("UPnP\tInvalid arguments. Browse flag invalid"); + return UPNP_SOAP_E_INVALID_ARGS; + } + return UPNP_E_SUCCESS; } @@ -130,19 +150,20 @@ bool cMediaManager::Initialise(){ tntdb::Statement objectTable = mConnection.prepare( "CREATE TABLE metadata" "(" - " objectID TEXT PRIMARY KEY," - " parentID TEXT NOT NULL," - " title TEXT NOT NULL," - " class TEXT NOT NULL," - " restricted INTEGER NOT NULL," - " description TEXT," - " ldescription TEXT," - " date TEXT," - " language TEXT," - " channelNr INTEGER," - " channelName TEXT," - " scheduledStart TEXT," - " scheduledEnd TEXT" + " objectID TEXT PRIMARY KEY," + " parentID TEXT NOT NULL," + " title TEXT NOT NULL," + " class TEXT NOT NULL," + " restricted INTEGER NOT NULL," + " creator TEXT," + " description TEXT," + " longDescription TEXT," + " date TEXT," + " language TEXT," + " channelNr INTEGER," + " channelName TEXT," + " scheduledStart TEXT," + " scheduledEnd TEXT" ")"); objectTable.execute(); diff --git a/media/pluginManager.cpp b/media/pluginManager.cpp index e677d6a..5d3c9ea 100644 --- a/media/pluginManager.cpp +++ b/media/pluginManager.cpp @@ -13,6 +13,21 @@ using namespace std; namespace upnp { +const char* cMetadata::KEY_OBJECTID = "object@id"; +const char* cMetadata::KEY_PARENTID = "object@parentID"; +const char* cMetadata::KEY_TITLE = "dc:title"; +const char* cMetadata::KEY_CREATOR = "dc:creator"; +const char* cMetadata::KEY_CLASS = "upnp:class"; +const char* cMetadata::KEY_RESTRICTED = "object@container"; +const char* cMetadata::KEY_DESCRIPTION = "dc:description"; +const char* cMetadata::KEY_LONG_DESCRIPTION = "upnp:longDescription"; +const char* cMetadata::KEY_DATE = "dc:date"; +const char* cMetadata::KEY_LANGUAGE = "dc:language"; +const char* cMetadata::KEY_CHANNEL_NR = "upnp:channelNr"; +const char* cMetadata::KEY_CHANNEL_NAME = "upnp:channelName"; +const char* cMetadata::KEY_SCHEDULED_START = "upnp:scheduledStartTime"; +const char* cMetadata::KEY_SCHEDULED_END = "upnp:scheduledEndTime"; + bool cMetadata::SetObjectIDByUri(string uri){ return SetObjectID(tools::GenerateUUIDFromURL(uri)); } diff --git a/server/connectionManager.cpp b/server/connectionManager.cpp index cea68bc..64f68dc 100644 --- a/server/connectionManager.cpp +++ b/server/connectionManager.cpp @@ -5,6 +5,7 @@ * Author: savop */ +#include "../include/server.h" #include "../include/connectionManager.h" #include "../include/tools.h" #include "../include/media/mediaManager.h" diff --git a/server/server.cpp b/server/server.cpp index 69c0a2c..9858029 100644 --- a/server/server.cpp +++ b/server/server.cpp @@ -26,7 +26,7 @@ cMediaServer::serviceMap cMediaServer::mServices; cMediaServer::cMediaServer() : mServerDescription("VDR UPnP/DLNA MS", "Denis Loh", "http://upnp.vdr-developer.org", - DESCRIPTION, "VDR UPnP/DLNA MS", VERSION, + DESCRIPTION, "VDR UPnP-DLNA MS", VERSION, "http://projects.vdr-developer.org/projects/plg-upnp/files", VERSION) , mDeviceHandle(0) , mAnnounceMaxAge(1800) diff --git a/server/service.cpp b/server/service.cpp index 7185170..14a0bb6 100644 --- a/server/service.cpp +++ b/server/service.cpp @@ -5,8 +5,9 @@ * Author: savop */ -#include "../include/server.h" + #include "../include/service.h" +#include "../include/server.h" #include "../include/tools.h" #include -- cgit v1.2.3