Пример #1
0
QString PlaybackControls::getTitle(QString file)
{	
	QString field;
	ID3_Tag mTag(file.toStdString().c_str());
	ID3_Frame* myFrame = mTag.Find(ID3FID_TITLE);
	if (myFrame)
	{
		ID3_Field* myField = myFrame->GetField(ID3FN_TEXT);
		if (myField)
		{
			field = myField->GetRawText();
		}
	}
	return field;
}
Пример #2
0
String id3::v2::getString(const ID3_Frame* frame, ID3_FieldID fldName)
{
  if (!frame)
  {
    return "";
  }
  ID3_Field* fp = frame->GetField(fldName);
  if (!fp)
  {
    return "";
  }
  ID3_TextEnc enc = fp->GetEncoding();
  fp->SetEncoding(ID3TE_ASCII);

  String text(fp->GetRawText(), fp->Size());

  fp->SetEncoding(enc);
  return text;
}
Пример #3
0
MP3Data * MP3DataGenerator::readMetadata( const char * p_filePath)
{
	// Set up file connection.
	myID3_Tag = new ID3_Tag();
	myID3_Tag->Link( p_filePath);

	// Storage with default initialization.
	MP3Data * myMP3Data = new MP3Data();
	myMP3Data->setAll( "<undefinded>");

	// Retrieve metadata.
	ID3_Tag::Iterator * tagIter = myID3_Tag->CreateIterator();
	ID3_Frame * myFrame = NULL;
	while( NULL != ( myFrame = tagIter->GetNext()))
	{			
		if( NULL != myFrame)
		{			
			ID3_Field * myField = myFrame->GetField( ID3FN_TEXT);
			// Check if current frame is part of the set aka a field of interest.
			std::set<ID3_FrameID>::iterator current = interestingID3_FrameIDs->find( myFrame->GetID());
			if ( NULL != myField && current != interestingID3_FrameIDs->end())
			{
				ID3_FrameID_LUT * myLUT = new ID3_FrameID_LUT();
				std::string frameRealname = std::string( myLUT->getRealname( myFrame->GetID()));
				// @TODO Show encoding in gui (optional)
				if( myField->GetEncoding() == ID3TE_ASCII || ID3TE_ISO8859_1)
				{
					encoding += frameRealname + ": ISO8859_1 , ";
					// Genre needs to be converted.
					if( myFrame->GetID() == ID3FID_CONTENTTYPE) // ID3_FrameID = 32
					{
						const char * genre = myField->GetRawText();
						// ID3V1 genre has is an int surrounded by round brackets; ID3V2 genre is text.
						unsigned int genreIntegerAlias = removeBrackets( genre);
						if( genreIntegerAlias < ID3_NR_OF_V1_GENRES && genre[0] == '(')
							myMP3Data->setGenre( ID3_v1_genre_description[ genreIntegerAlias]);
						else 
							myMP3Data->setGenre( genre);
					}
					// All other tags.
					else if( myFrame->GetID() == ID3FID_TITLE)
						myMP3Data->setTitle( myField->GetRawText());
					else if( myFrame->GetID() == ID3FID_ALBUM)
						myMP3Data->setAlbum( myField->GetRawText());
					else if( myFrame->GetID() == ID3FID_YEAR)
						myMP3Data->setYear( myField->GetRawText());
					else if( myFrame->GetID() == ID3FID_TRACKNUM)
						myMP3Data->setTracknumber( myField->GetRawText());
					else if( myFrame->GetID() == ID3FID_LEADARTIST)
						myMP3Data->setArtist( myField->GetRawText());
				}
				else if( myField->GetEncoding() == ID3TE_UTF8)
				{
					encoding += frameRealname + ": utf8 , ";
					myMP3Data->setAll( "<unicode utf8 encoding>");
				}
				else if( myField->GetEncoding() == ID3TE_UNICODE || ID3TE_UTF16)
				{
					encoding += frameRealname + ": utf16 ,";
					// @TODO Conversion to std::string ... myField->GetRawUnicodeText();
					myMP3Data->setAll( "<unicode utf16 encoding>");
				}
				else if( myField->GetEncoding() == ID3TE_UTF16BE)
				{
					encoding += frameRealname + ": utf16be , ";
					myMP3Data->setAll( "<unicode utf16be encoding>");
				}
				else if( myField->GetEncoding() == ID3TE_NUMENCODINGS)
				{
					encoding += frameRealname + ": numencodings , ";
					myMP3Data->setAll( "<numencoding>");
				}
				else
				{
					encoding += frameRealname + ": unknown , ";
					myMP3Data->setAll( "<<unknown encoding>");
				}
			}
		}
	}
	// Retrieve file path and file name.
	myMP3Data->setFilepath( p_filePath);
	myMP3Data->setFilename( getFilename( p_filePath).c_str());
	return myMP3Data;
}