diff options
author | geronimo <geronimo013@gmx.de> | 2012-07-30 17:51:05 +0200 |
---|---|---|
committer | geronimo <geronimo013@gmx.de> | 2012-07-30 17:51:05 +0200 |
commit | ad667186c0c45cfca9d3f153faec7ce35545b238 (patch) | |
tree | db5ab8a2bb22c418bc8a233db3c4955ed16957c5 /libs/mediaScan | |
parent | 41922cdaf9c8db57c6b51f090eefe95b0008a0fb (diff) | |
download | cmp-ad667186c0c45cfca9d3f153faec7ce35545b238.tar.gz cmp-ad667186c0c45cfca9d3f153faec7ce35545b238.tar.bz2 |
created more readers
Diffstat (limited to 'libs/mediaScan')
-rw-r--r-- | libs/mediaScan/include/MediainfoReader.h | 34 | ||||
-rw-r--r-- | libs/mediaScan/mediaScan.cbp | 2 | ||||
-rw-r--r-- | libs/mediaScan/mediaScan.layout | 28 | ||||
-rw-r--r-- | libs/mediaScan/nbproject/Makefile-Debug.mk | 18 | ||||
-rw-r--r-- | libs/mediaScan/nbproject/Makefile-Release.mk | 18 | ||||
-rw-r--r-- | libs/mediaScan/nbproject/Makefile-impl.mk | 2 | ||||
-rw-r--r-- | libs/mediaScan/nbproject/Makefile-variables.mk | 16 | ||||
-rw-r--r-- | libs/mediaScan/nbproject/Package-Debug.bash | 12 | ||||
-rw-r--r-- | libs/mediaScan/nbproject/Package-Release.bash | 12 | ||||
-rw-r--r-- | libs/mediaScan/nbproject/configurations.xml | 2 | ||||
-rw-r--r-- | libs/mediaScan/nbproject/project.xml | 2 | ||||
-rw-r--r-- | libs/mediaScan/src/MediainfoReader.cc | 69 |
12 files changed, 172 insertions, 43 deletions
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 <tuple> +#include <string> +#include <vector> + +class cLineReader; +class cMediainfoReader { +public: + typedef std::tuple <std::string, std::string> 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<std::string> 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 @@ <Unit filename="include/FSMediaScanner.h" /> <Unit filename="include/LegacyVdrRecording.h" /> <Unit filename="include/MediaFactory.h" /> + <Unit filename="include/MediainfoReader.h" /> <Unit filename="include/Movie.h" /> <Unit filename="include/Picture.h" /> <Unit filename="include/VdrRecording.h" /> @@ -61,6 +62,7 @@ <Unit filename="src/FSMediaScanner.cc" /> <Unit filename="src/LegacyVdrRecording.cc" /> <Unit filename="src/MediaFactory.cc" /> + <Unit filename="src/MediainfoReader.cc" /> <Unit filename="src/Movie.cc" /> <Unit filename="src/Picture.cc" /> <Unit filename="src/VdrRecording.cc" /> 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 @@ <?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <CodeBlocks_layout_file> <ActiveTarget name="Debug" /> - <File name="src/VdrRecording.cc" open="0" top="0" tabpos="10" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> + <File name="include/MediainfoReader.h" open="1" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <Cursor> - <Cursor1 position="1404" topLine="0" /> + <Cursor1 position="459" topLine="0" /> + </Cursor> + </File> + <File name="include/AbstractMedia.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> + <Cursor> + <Cursor1 position="1008" topLine="0" /> + </Cursor> + </File> + <File name="src/MediainfoReader.cc" open="1" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> + <Cursor> + <Cursor1 position="1061" topLine="0" /> </Cursor> </File> <File name="src/LegacyVdrRecording.cc" open="0" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> @@ -11,14 +21,19 @@ <Cursor1 position="1450" topLine="0" /> </Cursor> </File> + <File name="include/MediaFactory.h" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> + <Cursor> + <Cursor1 position="1670" topLine="0" /> + </Cursor> + </File> <File name="src/AbstractMedia.cc" open="0" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <Cursor> <Cursor1 position="1453" topLine="0" /> </Cursor> </File> - <File name="include/MediaFactory.h" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> + <File name="src/VdrRecording.cc" open="0" top="0" tabpos="10" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> <Cursor> - <Cursor1 position="1670" topLine="0" /> + <Cursor1 position="1404" topLine="0" /> </Cursor> </File> <File name="src/MediaFactory.cc" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> @@ -26,9 +41,4 @@ <Cursor1 position="1317" topLine="18" /> </Cursor> </File> - <File name="include/AbstractMedia.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0"> - <Cursor> - <Cursor1 position="1008" topLine="0" /> - </Cursor> - </File> </CodeBlocks_layout_file> 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 @@ <itemPath>include/FSMediaScanner.h</itemPath> <itemPath>include/LegacyVdrRecording.h</itemPath> <itemPath>include/MediaFactory.h</itemPath> + <itemPath>include/MediainfoReader.h</itemPath> <itemPath>include/Movie.h</itemPath> <itemPath>include/Picture.h</itemPath> <itemPath>include/VdrRecording.h</itemPath> @@ -29,6 +30,7 @@ <itemPath>src/FSMediaScanner.cc</itemPath> <itemPath>src/LegacyVdrRecording.cc</itemPath> <itemPath>src/MediaFactory.cc</itemPath> + <itemPath>src/MediainfoReader.cc</itemPath> <itemPath>src/Movie.cc</itemPath> <itemPath>src/Picture.cc</itemPath> <itemPath>src/VdrRecording.cc</itemPath> 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 @@ <type>org.netbeans.modules.cnd.makeproject</type> <configuration> <data xmlns="http://www.netbeans.org/ns/make-project/1"> - <name>fsScan</name> + <name>mediaScan</name> <c-extensions/> <cpp-extensions>cc</cpp-extensions> <header-extensions>h</header-extensions> 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 <MediainfoReader.h> +#include <LineReader.h> +#include <stddef.h> +#include <pcrecpp.h> +#include <vector> + +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; +} + |