From ad667186c0c45cfca9d3f153faec7ce35545b238 Mon Sep 17 00:00:00 2001 From: geronimo Date: Mon, 30 Jul 2012 17:51:05 +0200 Subject: created more readers --- libs/mediaScan/include/MediainfoReader.h | 34 +++++++++++++ libs/mediaScan/mediaScan.cbp | 2 + libs/mediaScan/mediaScan.layout | 28 +++++++---- libs/mediaScan/nbproject/Makefile-Debug.mk | 18 ++++--- libs/mediaScan/nbproject/Makefile-Release.mk | 18 ++++--- libs/mediaScan/nbproject/Makefile-impl.mk | 2 +- libs/mediaScan/nbproject/Makefile-variables.mk | 16 +++--- libs/mediaScan/nbproject/Package-Debug.bash | 12 ++--- libs/mediaScan/nbproject/Package-Release.bash | 12 ++--- libs/mediaScan/nbproject/configurations.xml | 2 + libs/mediaScan/nbproject/project.xml | 2 +- libs/mediaScan/src/MediainfoReader.cc | 69 ++++++++++++++++++++++++++ 12 files changed, 172 insertions(+), 43 deletions(-) create mode 100644 libs/mediaScan/include/MediainfoReader.h create mode 100644 libs/mediaScan/src/MediainfoReader.cc (limited to 'libs/mediaScan') diff --git a/libs/mediaScan/include/MediainfoReader.h b/libs/mediaScan/include/MediainfoReader.h new file mode 100644 index 0000000..f45b5e7 --- /dev/null +++ b/libs/mediaScan/include/MediainfoReader.h @@ -0,0 +1,34 @@ +/* + * File: MediainfoReader.h + * Author: django + * + * Created on 30. Juli 2012, 15:03 + */ + +#ifndef MEDIAINFOREADER_H +#define MEDIAINFOREADER_H + +#include +#include +#include + +class cLineReader; +class cMediainfoReader { +public: + typedef std::tuple InfoEntry; + + cMediainfoReader(cLineReader *LineReader); + virtual ~cMediainfoReader(); + + void AddValuableKey(const char *Key); + void Close(void); + bool IsValuable(std::string &key); + InfoEntry *ReadEntry(void); + +private: + cLineReader *reader; + std::vector valuableKeys; + }; + +#endif /* MEDIAINFOREADER_H */ + diff --git a/libs/mediaScan/mediaScan.cbp b/libs/mediaScan/mediaScan.cbp index 6d4d7ec..3ee2b08 100644 --- a/libs/mediaScan/mediaScan.cbp +++ b/libs/mediaScan/mediaScan.cbp @@ -51,6 +51,7 @@ + @@ -61,6 +62,7 @@ + diff --git a/libs/mediaScan/mediaScan.layout b/libs/mediaScan/mediaScan.layout index 4398ab3..e7fed61 100644 --- a/libs/mediaScan/mediaScan.layout +++ b/libs/mediaScan/mediaScan.layout @@ -1,9 +1,19 @@ - + - + + + + + + + + + + + @@ -11,14 +21,19 @@ + + + + + - + - + @@ -26,9 +41,4 @@ - - - - - diff --git a/libs/mediaScan/nbproject/Makefile-Debug.mk b/libs/mediaScan/nbproject/Makefile-Debug.mk index 1e0062b..57923a8 100644 --- a/libs/mediaScan/nbproject/Makefile-Debug.mk +++ b/libs/mediaScan/nbproject/Makefile-Debug.mk @@ -41,6 +41,7 @@ OBJECTFILES= \ ${OBJECTDIR}/src/VdrRecording.o \ ${OBJECTDIR}/src/MediaFactory.o \ ${OBJECTDIR}/src/LegacyVdrRecording.o \ + ${OBJECTDIR}/src/MediainfoReader.o \ ${OBJECTDIR}/src/FSMediaScanner.o \ ${OBJECTDIR}/src/AbstractMultiFileMovie.o \ ${OBJECTDIR}/src/AbstractMedia.o \ @@ -65,13 +66,13 @@ LDLIBSOPTIONS= # Build Targets .build-conf: ${BUILD_SUBPROJECTS} - "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a + "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libmediascan.a -${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a: ${OBJECTFILES} +${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libmediascan.a: ${OBJECTFILES} ${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM} - ${RM} ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a - ${AR} -rv ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a ${OBJECTFILES} - $(RANLIB) ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a + ${RM} ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libmediascan.a + ${AR} -rv ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libmediascan.a ${OBJECTFILES} + $(RANLIB) ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libmediascan.a ${OBJECTDIR}/src/Picture.o: src/Picture.cc ${MKDIR} -p ${OBJECTDIR}/src @@ -103,6 +104,11 @@ ${OBJECTDIR}/src/LegacyVdrRecording.o: src/LegacyVdrRecording.cc ${RM} $@.d $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/LegacyVdrRecording.o src/LegacyVdrRecording.cc +${OBJECTDIR}/src/MediainfoReader.o: src/MediainfoReader.cc + ${MKDIR} -p ${OBJECTDIR}/src + ${RM} $@.d + $(COMPILE.cc) -g -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE=1 -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_REENTRANT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Iinclude -I../networking/include -I../IO/include -I../util/include -I../vdr/include -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/MediainfoReader.o src/MediainfoReader.cc + ${OBJECTDIR}/src/FSMediaScanner.o: src/FSMediaScanner.cc ${MKDIR} -p ${OBJECTDIR}/src ${RM} $@.d @@ -133,7 +139,7 @@ ${OBJECTDIR}/src/Movie.o: src/Movie.cc # Clean Targets .clean-conf: ${CLEAN_SUBPROJECTS} ${RM} -r ${CND_BUILDDIR}/${CND_CONF} - ${RM} ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a + ${RM} ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libmediascan.a # Subprojects .clean-subprojects: diff --git a/libs/mediaScan/nbproject/Makefile-Release.mk b/libs/mediaScan/nbproject/Makefile-Release.mk index bc8c6a9..2b0a333 100644 --- a/libs/mediaScan/nbproject/Makefile-Release.mk +++ b/libs/mediaScan/nbproject/Makefile-Release.mk @@ -41,6 +41,7 @@ OBJECTFILES= \ ${OBJECTDIR}/src/VdrRecording.o \ ${OBJECTDIR}/src/MediaFactory.o \ ${OBJECTDIR}/src/LegacyVdrRecording.o \ + ${OBJECTDIR}/src/MediainfoReader.o \ ${OBJECTDIR}/src/FSMediaScanner.o \ ${OBJECTDIR}/src/AbstractMultiFileMovie.o \ ${OBJECTDIR}/src/AbstractMedia.o \ @@ -65,13 +66,13 @@ LDLIBSOPTIONS= # Build Targets .build-conf: ${BUILD_SUBPROJECTS} - "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a + "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libmediascan.a -${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a: ${OBJECTFILES} +${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libmediascan.a: ${OBJECTFILES} ${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM} - ${RM} ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a - ${AR} -rv ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a ${OBJECTFILES} - $(RANLIB) ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a + ${RM} ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libmediascan.a + ${AR} -rv ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libmediascan.a ${OBJECTFILES} + $(RANLIB) ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libmediascan.a ${OBJECTDIR}/src/Picture.o: src/Picture.cc ${MKDIR} -p ${OBJECTDIR}/src @@ -103,6 +104,11 @@ ${OBJECTDIR}/src/LegacyVdrRecording.o: src/LegacyVdrRecording.cc ${RM} $@.d $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/LegacyVdrRecording.o src/LegacyVdrRecording.cc +${OBJECTDIR}/src/MediainfoReader.o: src/MediainfoReader.cc + ${MKDIR} -p ${OBJECTDIR}/src + ${RM} $@.d + $(COMPILE.cc) -O2 -MMD -MP -MF $@.d -o ${OBJECTDIR}/src/MediainfoReader.o src/MediainfoReader.cc + ${OBJECTDIR}/src/FSMediaScanner.o: src/FSMediaScanner.cc ${MKDIR} -p ${OBJECTDIR}/src ${RM} $@.d @@ -129,7 +135,7 @@ ${OBJECTDIR}/src/Movie.o: src/Movie.cc # Clean Targets .clean-conf: ${CLEAN_SUBPROJECTS} ${RM} -r ${CND_BUILDDIR}/${CND_CONF} - ${RM} ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a + ${RM} ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libmediascan.a # Subprojects .clean-subprojects: diff --git a/libs/mediaScan/nbproject/Makefile-impl.mk b/libs/mediaScan/nbproject/Makefile-impl.mk index 1d398f7..84fe472 100644 --- a/libs/mediaScan/nbproject/Makefile-impl.mk +++ b/libs/mediaScan/nbproject/Makefile-impl.mk @@ -24,7 +24,7 @@ CLEAN_SUBPROJECTS=${CLEAN_SUBPROJECTS_${SUBPROJECTS}} # Project Name -PROJECTNAME=fsScan +PROJECTNAME=mediaScan # Active Configuration DEFAULTCONF=Debug diff --git a/libs/mediaScan/nbproject/Makefile-variables.mk b/libs/mediaScan/nbproject/Makefile-variables.mk index e22487e..0b0bf57 100644 --- a/libs/mediaScan/nbproject/Makefile-variables.mk +++ b/libs/mediaScan/nbproject/Makefile-variables.mk @@ -9,19 +9,19 @@ CND_DISTDIR=dist # Debug configuration CND_PLATFORM_Debug=GNU-Linux-x86 CND_ARTIFACT_DIR_Debug=dist/Debug/GNU-Linux-x86 -CND_ARTIFACT_NAME_Debug=libfsscan.a -CND_ARTIFACT_PATH_Debug=dist/Debug/GNU-Linux-x86/libfsscan.a +CND_ARTIFACT_NAME_Debug=libmediascan.a +CND_ARTIFACT_PATH_Debug=dist/Debug/GNU-Linux-x86/libmediascan.a CND_PACKAGE_DIR_Debug=dist/Debug/GNU-Linux-x86/package -CND_PACKAGE_NAME_Debug=fsScan.tar -CND_PACKAGE_PATH_Debug=dist/Debug/GNU-Linux-x86/package/fsScan.tar +CND_PACKAGE_NAME_Debug=mediaScan.tar +CND_PACKAGE_PATH_Debug=dist/Debug/GNU-Linux-x86/package/mediaScan.tar # Release configuration CND_PLATFORM_Release=GNU-Linux-x86 CND_ARTIFACT_DIR_Release=dist/Release/GNU-Linux-x86 -CND_ARTIFACT_NAME_Release=libfsscan.a -CND_ARTIFACT_PATH_Release=dist/Release/GNU-Linux-x86/libfsscan.a +CND_ARTIFACT_NAME_Release=libmediascan.a +CND_ARTIFACT_PATH_Release=dist/Release/GNU-Linux-x86/libmediascan.a CND_PACKAGE_DIR_Release=dist/Release/GNU-Linux-x86/package -CND_PACKAGE_NAME_Release=fsScan.tar -CND_PACKAGE_PATH_Release=dist/Release/GNU-Linux-x86/package/fsScan.tar +CND_PACKAGE_NAME_Release=mediaScan.tar +CND_PACKAGE_PATH_Release=dist/Release/GNU-Linux-x86/package/mediaScan.tar # # include compiler specific variables # diff --git a/libs/mediaScan/nbproject/Package-Debug.bash b/libs/mediaScan/nbproject/Package-Debug.bash index 2a9c453..a76f06a 100644 --- a/libs/mediaScan/nbproject/Package-Debug.bash +++ b/libs/mediaScan/nbproject/Package-Debug.bash @@ -12,9 +12,9 @@ CND_DISTDIR=dist CND_BUILDDIR=build NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging TMPDIRNAME=tmp-packaging -OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a -OUTPUT_BASENAME=libfsscan.a -PACKAGE_TOP_DIR=fsScan/ +OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libmediascan.a +OUTPUT_BASENAME=libmediascan.a +PACKAGE_TOP_DIR=mediaScan/ # Functions function checkReturnCode @@ -59,15 +59,15 @@ mkdir -p ${NBTMPDIR} # Copy files and create directories and links cd "${TOP}" -makeDirectory "${NBTMPDIR}/fsScan/lib" +makeDirectory "${NBTMPDIR}/mediaScan/lib" copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}lib/${OUTPUT_BASENAME}" 0644 # Generate tar file cd "${TOP}" -rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/fsScan.tar +rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/mediaScan.tar cd ${NBTMPDIR} -tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/fsScan.tar * +tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/mediaScan.tar * checkReturnCode # Cleanup diff --git a/libs/mediaScan/nbproject/Package-Release.bash b/libs/mediaScan/nbproject/Package-Release.bash index d996196..bcbe0fc 100644 --- a/libs/mediaScan/nbproject/Package-Release.bash +++ b/libs/mediaScan/nbproject/Package-Release.bash @@ -12,9 +12,9 @@ CND_DISTDIR=dist CND_BUILDDIR=build NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging TMPDIRNAME=tmp-packaging -OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libfsscan.a -OUTPUT_BASENAME=libfsscan.a -PACKAGE_TOP_DIR=fsScan/ +OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libmediascan.a +OUTPUT_BASENAME=libmediascan.a +PACKAGE_TOP_DIR=mediaScan/ # Functions function checkReturnCode @@ -59,15 +59,15 @@ mkdir -p ${NBTMPDIR} # Copy files and create directories and links cd "${TOP}" -makeDirectory "${NBTMPDIR}/fsScan/lib" +makeDirectory "${NBTMPDIR}/mediaScan/lib" copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}lib/${OUTPUT_BASENAME}" 0644 # Generate tar file cd "${TOP}" -rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/fsScan.tar +rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/mediaScan.tar cd ${NBTMPDIR} -tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/fsScan.tar * +tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/mediaScan.tar * checkReturnCode # Cleanup diff --git a/libs/mediaScan/nbproject/configurations.xml b/libs/mediaScan/nbproject/configurations.xml index 9984a4c..733c5d2 100644 --- a/libs/mediaScan/nbproject/configurations.xml +++ b/libs/mediaScan/nbproject/configurations.xml @@ -11,6 +11,7 @@ include/FSMediaScanner.h include/LegacyVdrRecording.h include/MediaFactory.h + include/MediainfoReader.h include/Movie.h include/Picture.h include/VdrRecording.h @@ -29,6 +30,7 @@ src/FSMediaScanner.cc src/LegacyVdrRecording.cc src/MediaFactory.cc + src/MediainfoReader.cc src/Movie.cc src/Picture.cc src/VdrRecording.cc diff --git a/libs/mediaScan/nbproject/project.xml b/libs/mediaScan/nbproject/project.xml index f749866..f0742a0 100644 --- a/libs/mediaScan/nbproject/project.xml +++ b/libs/mediaScan/nbproject/project.xml @@ -3,7 +3,7 @@ org.netbeans.modules.cnd.makeproject - fsScan + mediaScan cc h diff --git a/libs/mediaScan/src/MediainfoReader.cc b/libs/mediaScan/src/MediainfoReader.cc new file mode 100644 index 0000000..cd1f3f6 --- /dev/null +++ b/libs/mediaScan/src/MediainfoReader.cc @@ -0,0 +1,69 @@ +/* + * File: MediainfoReader.cc + * Author: django + * + * Created on 30. Juli 2012, 15:03 + */ +#include +#include +#include +#include +#include + +cMediainfoReader::cMediainfoReader(cLineReader *LineReader) + : reader(LineReader) +{ +} + +cMediainfoReader::~cMediainfoReader() +{ + Close(); +} + +void cMediainfoReader::AddValuableKey(const char* Key) +{ + valuableKeys.push_back(Key); +} + +void cMediainfoReader::Close(void) +{ + if (reader) { + delete reader; + reader = NULL; + } +} + +bool cMediainfoReader::IsValuable(std::string &key) +{ + for (size_t i=0; i < valuableKeys.size(); ++i) { + if (!strcmp(key.c_str(), valuableKeys[i].c_str())) + return true; + } + return false; +} + +cMediainfoReader::InfoEntry *cMediainfoReader::ReadEntry() +{ + if (!reader) return NULL; + const char *line = reader->ReadLine(); + static pcrecpp::RE comment("^\\s*#.*$"); + static pcrecpp::RE emptyLine("^\\s*$"); + static pcrecpp::RE entry("^\\s*(.+?)\\s*:\\s*(.+?)\\s*$"); + std::string name, value; + InfoEntry *rv = NULL; + + while (line && (comment.FullMatch(line) || emptyLine.FullMatch(line))) + line = reader->ReadLine(); + while (line && !entry.FullMatch(line, &name, &value)) + line = reader->ReadLine(); + while (line && entry.FullMatch(line, &name, &value)) { + if (!IsValuable(name)) { + line = reader->ReadLine(); + continue; + } + rv = new InfoEntry(name, value); + break; + } + return rv; +} + -- cgit v1.2.3