From 77b4ec54bd71cec38292c868d280e06352263370 Mon Sep 17 00:00:00 2001 From: David Sansome Date: Sat, 24 Jul 2010 14:09:27 +0000 Subject: [PATCH] Look at the file extension as well as magic when loading a local playlist. Fixes issue #507 --- src/core/songloader.cpp | 18 ++++++++++++------ src/playlistparsers/playlistparser.h | 3 +-- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/core/songloader.cpp b/src/core/songloader.cpp index c571ee380..5a6fbc147 100644 --- a/src/core/songloader.cpp +++ b/src/core/songloader.cpp @@ -106,20 +106,26 @@ SongLoader::Result SongLoader::LoadLocal() { QByteArray data(file.read(PlaylistParser::kMagicSize)); ParserBase* parser = playlist_parser_->MaybeGetParserForMagic(data); + if (!parser) { + // Check the file extension as well, maybe the magic failed, or it was a + // basic M3U file which is just a plain list of filenames. + parser = playlist_parser_->ParserForExtension(QFileInfo(filename).suffix()); + } + if (parser) { qDebug() << "Parsing using" << parser->name(); // It's a playlist! file.reset(); songs_ = parser->Load(&file, QFileInfo(filename).path()); - } else { - // Not a playlist, so just assume it's a song - Song song; - song.InitFromFile(filename, -1); - if (song.is_valid()) - songs_ << song; + return Success; } + // Not a playlist, so just assume it's a song + Song song; + song.InitFromFile(filename, -1); + if (song.is_valid()) + songs_ << song; return Success; } diff --git a/src/playlistparsers/playlistparser.h b/src/playlistparsers/playlistparser.h index bc724618d..a04a663ab 100644 --- a/src/playlistparsers/playlistparser.h +++ b/src/playlistparsers/playlistparser.h @@ -36,13 +36,12 @@ public: ParserBase* MaybeGetParserForMagic(const QByteArray& data, const QString& mime_type = QString()) const; + ParserBase* ParserForExtension(const QString& suffix) const; SongList Load(const QString& filename, ParserBase* parser = 0) const; void Save(const SongList& songs, const QString& filename) const; private: - ParserBase* ParserForExtension(const QString& suffix) const; - QList parsers_; };