murrty / youtube-dl-gui

Download/Convert videos from websites without needing to learn command line
GNU General Public License v3.0
427 stars 45 forks source link

[Request? or Bug?] Playlist listing to choose video(s) to download #168

Closed iG8R closed 1 year ago

iG8R commented 1 year ago

Is there any way to list playlist entries for further selecting which video(s) to download? E.g. I tried the following playlist https://vk.com/video/playlist/-24440848_54694294 with the Extended download... option but got only:

youtube-dl-gui-playlist-error-2023-01-02_175215

Logs:

**Exception details** ``` A caught SerializationException occurred. Message: The data contract type 'youtube_dl_gui.YoutubeDlData' cannot be deserialized because the data member 'formats' was found more than once in the input. Type: System.Runtime.Serialization.SerializationException Source: System.Runtime.Serialization Target Site: Void ThrowDuplicateMemberException(System.Object, System.Xml.XmlDictionaryString[], Int32) Stacktrace: at System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson.ThrowDuplicateMemberException(Object obj, XmlDictionaryString[] memberNames, Int32 memberIndex) at ReadYoutubeDlDataFromJson(XmlReaderDelegator , XmlObjectSerializerReadContextComplexJson , XmlDictionaryString , XmlDictionaryString[] ) at System.Runtime.Serialization.Json.JsonClassDataContract.ReadJsonValueCore(XmlReaderDelegator jsonReader, XmlObjectSerializerReadContextComplexJson context) at System.Runtime.Serialization.Json.JsonDataContract.ReadJsonValue(XmlReaderDelegator jsonReader, XmlObjectSerializerReadContextComplexJson context) at System.Runtime.Serialization.Json.XmlObjectSerializerReadContextComplexJson.ReadDataContractValue(DataContract dataContract, XmlReaderDelegator reader) at System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator reader, String name, String ns, Type declaredType, DataContract& dataContract) at System.Runtime.Serialization.XmlObjectSerializerReadContextComplex.InternalDeserialize(XmlReaderDelegator xmlReader, Type declaredType, DataContract dataContract, String name, String ns) at System.Runtime.Serialization.Json.DataContractJsonSerializer.InternalReadObject(XmlReaderDelegator xmlReader, Boolean verifyObjectName) at System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator reader, Boolean verifyObjectName, DataContractResolver dataContractResolver) at System.Runtime.Serialization.Json.DataContractJsonSerializer.ReadObject(XmlDictionaryReader reader) at youtube_dl_gui.Extensions.JsonDeserialize[T](String value) at youtube_dl_gui.YoutubeDlData.Generate(String URL, String GenerateCommand, String& RetrievedData) at youtube_dl_gui.frmExtendedDownloader.b__30_0() ========== OS INFO ========== Current Version: 3.2.3 Current Culture: Russian (Ukraine) System Caption: Microsoft Windows 10 Enterprise System Version: 10.0.19043 Service Pack Major: 0 Service Pack Minor: 0 ========== END INFO ========== ```

Extra info can't be attached due its too big size.

murrty commented 1 year ago

Since this is a playlist, you have to use the quick downloader to download the media. The extended downloader only supports one video per instance, so playlists or anything that has multiple different media sources (not formats, but like different videos themselves as an example) will cause serialization issues.

The fix I have planned is an extended batch downloader which will hopefully ease issues like this in the future, while maintaining the extended feature set.