OpenDLC

    • Release
    • Open Source

    Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von nikeee13.

      OpenDLC
      Eine quelloffene Implementierung der Downloadcontainer-Standards.
      github.com/nikeee/OpenDLC

      Beschreibung:
      Eine Bibliothek zum entschlüsseln und erstellen der 3 bekannten Link-Container-Formate (RSDF, CCF und DLC). Bis auf DLC werden keine weiteren Schlüssel benötigt, da DLC auf ein Client-Server-System setzt, welches so arbeitet, dass eine Anwendung einen Schlüssel von den JD-Entwicklern bekommt. Den müsste man sich beim JD-Team holen. Das machen die, um sich die Möglichkeit zu sichern, bestimmte Anwendungen zu sperren (ist natürlich nutzlos).

      Hier ein paar Codebeispiele:

      C#-Quellcode

      1. // RSDF:
      2. var container = await RsdfContainer.FromFileAsync(pathToFile);
      3. Console.WriteLine("All links in this file:");
      4. foreach(RsdfEntry currentLink in container)
      5. {
      6. // Link entrys sind abstrahiert und implementieren ein implizites ToString, welches immer die URL gibt.
      7. Console.WriteLine(currentLink);
      8. }
      9. // CCF:
      10. var container = await CcfContainer.FromFileAsync(pathToFile);
      11. Console.WriteLine("All links in this file:");
      12. foreach(CcfPackage currentPackage in container)
      13. {
      14. foreach(CcfEntry currentLink in currentPackage)
      15. {
      16. Console.WriteLine(currentLink);
      17. }
      18. }


      Durch die Abstraktion der Container und Packages kann man auch recht einfach Links aus verschiedenen Containern zusammenfassen:

      C#-Quellcode

      1. var someRsdf = await RsdfContainer.FromFileAsync(pathToFile);
      2. var someCcf = await CcfContainer.FromFileAsync(pathToFile);
      3. var allLinks = someRsdf.Concat(someCcf.Packages.Concat());
      4. Console.WriteLine("All links in CCF/RSDF:");
      5. foreach(DownloadEntry currentLink in allLinks)
      6. {
      7. Console.WriteLine(currentLink);
      8. }


      DLC befindet sich noch in der Testphase und ist deshalb noch nicht in den Distribution-Builds enthalten. Außerdem ist das Erstellen von DLCs noch nicht implementiert.

      Klassendiagramm:


      Verwendete Programmiersprache(n) und IDE(s):
      C# mit VS 2013

      Systemanforderungen:
      .NET 4.0 oder höher. DLC erst ab 4.5
      Für DLC-Entschlüsselung wird eine Internetverbindung benötigt.

      Download(s):
      DLLs gibt es dort:
      github.com/nikeee/OpenDLC/tree/master/dist/lib

      oder via NuGet:
      Install-Package OpenDLC

      Source Code: github.com/nikeee/OpenDLC

      Lizenz/Weitergabe:
      LGPLv3

      Nach dieser abenteuerlichen Reise bin ich erstaunt, wie viel man bei einer Formatspezifikation falsch machen kann. Die Containerformate sind natürlich alle broken by design.
      DLC ist IMO mit Abstand das schlimmste Format, danach kommt CCF und dann RSDF.
      TODO:
      - DLCs erstellen
      - Click'n'Load-Client(+Server?)

      Edit:
      Achja, RSDF geht unter Mono nicht, aufgrund eines Bugs in der Mono-Crypto-Library.
      Von meinem iPhone gesendet

      Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von „nikeee13“ ()

      Entschlüsselst du DLC selber oder gehst du über einen Web-Dienst? CnL-Server hab ich auch schon geschrieben in synoSnc für den Mac :) Es gibt aber ein Windows-Tool das genauso mit Synology NAS arbeiten und CnL kann, ist auch OpenSource: github.com/TheDuffman85/SynologyDownloadStationAdapter
      Die Library entschlüsselt alles so nativ, wie es geht. DLC setzt allerdings voraus, dass man sich mit den Servern von JDownloader verbindet. Es werden keine Drittanbieter-Dienste wie z. B. dcrypt.it verwendet.

      Kannst du alles im Quelltext nachlesen.

      CnL werde ich noch implementieren, wenn ich irgendwann mal Zeit/Lust habe.
      Von meinem iPhone gesendet

      nikeee13 schrieb:

      Achja, RSDF geht unter Mono nicht, aufgrund eines Bugs in der Mono-Crypto-Library.
      Der Bug scheint nun gefixt zu sein, zumindest geht mein Travis-Test von damals jetzt und das Projekt kompiliert nun auch einwandfrei.
      Siehe: github.com/nikeee/OpenDLC/issues/5
      Damit sollte nun auch RSDF unter Mono wieder funktionieren. Im gleichen Zug habe ich die CI-Builds auf AppVeyor und Travis gefixt.
      Von meinem iPhone gesendet