Drexel's VidUp - Ein templatebasierter Youtube Uploader

  • Mit ein Grund wird vermutlich sein, dass er nicht laufend was am Programm machen/ändern muss, wenn YouTube wieder Änderungen durchführt. Die Grundfunktionen bleiben in der Regel ja da. Wenn du eine Eierlegende Wollmilchsau brauchst, musst du z. B. auf batch warten und schauen, was das so kann. Aber mittlerweile kann man ja vieles auch mit VidUp erledigen, weshalb ich batch aktuell gar nicht so vermisse :)

  • Ja einerseits das, andererseits bietet die Api nicht alle Zugriffe und das zu entwickeln ist auch echt Arbeit und da ich das alleine nebenher mache, ist es besser den Umfang machbar zu halten... Und ich find das Studio nicht schlecht, was nervt ist die nicht vorhanden Projektverwaltung...

  • einen kleinen fehler dens bei mir gab was auch immer das war:D

  • Der Youtube Server hat die Verbindung geschlossen. :)


    In der nächsten Version versuche ich einerseits für jeden Upload eine neue Verbindung aufzumachen, das könnte(!) solchen Fehlern entgegenwirken. Natürlich kann der YT Server die Verbindung auch aus anderen Gründen schließen oder sonstwas auf dem Transport schief gehen.


    Andererseits unterstützt die nächste Version auch Resumable Uploads und schließt sich bei Übertragungsfehlern nicht komplett. D.h. weitere Uploads sollten weiter gehen und fehlgeschlagene oder pausierte Uploads können fortgesetzt werden. Wird aber noch ein bißchen bis zur neuen Version.

  • Hab mir heute mal deine aktuelle Release-Version 1.1.1.0 installiert und bekomme seitdem immer diese Fehlermeldung angezeigt:

    Fehler wird direkt nach dem Klick auf Upload ausgegeben.
    Das Programm schließt sich sofort nachdem man die Fehlermeldung wegklickt.

  • Wenn die Zeilenangabe stimmt, passiert das hier:


    Code
    request.Headers.Add("X-Upload-Content-Length", info.Length.ToString());


    Da füge ich die Dateigröße zum http Header zu.


    Gerne passt die Zeilennumer aber nicht ganz und es passiert auch mal in der Zeile davor oder danach:


    Code
    request.Headers.Add("Slug", Path.GetFileName(upload.FilePath));
    request.Headers.Add("X-Upload-Content-Length", info.Length.ToString());
    request.Headers.Add("X-Upload-Content-Type", "video/*");


    Evtl. ist im Dateinamen ein Zeichen drin, was im Header nicht erlaubt ist... Das halte ich für am wahrscheinlichsten, wie heißen die Dateien, die Du hochladen willst?



    Wenn ich das genau nachvollziehen soll, müsstest Du mir mal Deinen Dokumente\VidUp Ordner zukommen lassen. Oder den nochmal leeren (am besten vorher kopieren. ;)) und schauen obs funktioniert, wenn Du von 0 anfängst. Aber das glaub ich nicht, es wird irgendwie an der Datei liegen...

  • Evtl. ist im Dateinamen ein Zeichen drin, was im Header nicht erlaubt ist... Das halte ich für am wahrscheinlichsten, wie heißen die Dateien, die Du hochladen willst?

    Die aktuellen Dateien heißen alle "7 Days to Die │ Sinnlos im Wasteland #" und ich vermute, dass er sich an dem vertikalen Strich stört.

    Allerdings wundert mich das, denn der Dateiname wird von Windows akzeptiert (ist nicht ALT-GR + <) und ich könnte schwören, dass ich in der vorherigen Version damit keine Probleme hatte. :/

  • Ich weiß jetzt nicht, welche Deiner vorherige Version war, aber ich hab ja in einer der letzten Versionen von dem von Google zur Verfügung gestellten YouTube Client auf einen selbst implementierten Client umgestellt. Und in der ersten Version hatte ich den Originaldateinamen auch nicht übertragen.


    Der Google YouTube Client wird nicht zulässige Zeichen vor dem Einfügen in den Http Header rausgefiltert oder umcoduert haben. Wäre interessant zu wissen, was bei alten Uploads im YouTube Studio beim Originaldateinamen steht...


    Muss mich mal schlau machen, was was im Http Header nicht erlaubt, das war mir nicht bewusst, dass es da unerlaubte Zeichen gibt. =)

    Und entsprechend drauf reagieren, evtl. kann ich Dir heute Abend einen Bugfix liefern.

  • Ich weiß jetzt nicht, welche Deiner vorherige Version war

    Hatte vorher die 1.1.0.0 am laufen. Hab ich vergessen zu erwähnen, sorry! :rolleyes:


    Der Google YouTube Client wird nicht zulässige Zeichen vor dem Einfügen in den Http Header rausgefiltert oder umcoduert haben. Wäre interessant zu wissen, was bei alten Uploads im YouTube Studio beim Originaldateinamen steht...

    Offensichtlich wird der vertikale Strich im Dateinamen bei YouTube entfernt:



    Wundert mich halt, weil der von mir verwendete Strich als Bestandteil des Dateinamens seitens Windows in Ordnung geht, verwendet man aber ALT-GR + < ist dies nicht erlaubt.


    Habe den Strich nun raus genommen und die Dateien laden brav hoch. ;)

    Allerdings ist mir da noch was anderes aufgefallen: Sofort ab Start wird die Verbleibende Zeit mit gut 2 Minuten angegeben und bewegt sich immer um diesen Bereich.
    Auch nach fast 1 Stunde Uploadzeit bleibt es bei dieser Prognose.

  • Öhm, jetzt wirds interessant.

    Dein letzter Screenshot ist aus meinem Tool, nicht aus dem von Drexel. ;)


    Der Fehler mit der Zeit ist bekannt, den werde ich demnächst beheben. Den Fehler mit dem Dateinamen dürfte ich aber 1:1 auch haben...


    Wundert mich halt, weil der von mir verwendete Strich als Bestandteil des Dateinamens seitens Windows in Ordnung geht, verwendet man aber ALT-GR + < ist dies nicht erlaubt.

    Das Problem ist, dass die Dateinamen von Windows und die Art und Weise, wie dieser Dateiname an Youtube gesendet wird, technisch gesehen sehr unterschiedlich sind. Deswegen scheinen da nicht alle Zeichen zu gehen.


    Drexel

    Ich denke mal, dass sich das mit einem new string(filename.Where(c => Convert.ToInt32(c) < 128).ToArray()) lösen lassen sollte. Zur Erklärung: damit werden alle Zeichen aus dem String entfernt, die nicht im ASCII-Standard enthalten sind und der Rest in einen neuen String gepackt.

    ASCII geht angeblich immer. Leider findet man im Internet auch wieder hunderttausend Aussagen dazu, welche Zeichen in einem Header erlaubt sind.. :(

  • Öhm, jetzt wirds interessant.

    Dein letzter Screenshot ist aus meinem Tool, nicht aus dem von Drexel. ;)

    Ich hatte mich auch gerade ein wenig gewundert, wo der Screen herkommt und schon das Youtube Studio im Verdacht. xD

    Ich denke mal, dass sich das mit einem new string(filename.Where(c => Convert.ToInt32(c) < 128).ToArray()) lösen lassen sollte. Zur Erklärung: damit werden alle Zeichen aus dem String entfernt, die nicht im ASCII-Standard enthalten sind und der Rest in einen neuen String gepackt.

    ASCII geht angeblich immer. Leider findet man im Internet auch wieder hunderttausend Aussagen dazu, welche Zeichen in einem Header erlaubt sind.. :(

    Seit ich das Jetbrain komplett Pack habe, kann ich mir ziemlich einfach die Sourcen vom Framework anschauen und mal gecheckt, was bei System.Net.WebHeaderCollection.CheckBadChars(String name, Boolean isHeaderValue) passiert...

    Die Hauptbedingung für valide Chars ist

    Code
    char ch = (char)((uint)byte.MaxValue & (uint)name[index]);
    if (ch >= ' ' || ch == '\t')

    Daneben gibt es noch ein paar valide Sachen,wie Zeilenumbrüche und Tabs, das sollte aber für Dateinamen irrelevant sein.

    Deinen Ansatz find ich gut, ich würde nur in Anlehnung an den Frameworkcode

    Code
    new string(fileName.Where(c =>
    {
    char ch = (char) ((uint) byte.MaxValue & (uint)c);
    if (ch >= ' ' || ch == '\t')
    {
    return true;
    }
    return false;
    }).ToArray());

    draus machen. Er lässt also alle Extended ASCII Zeichen von 32 bis 255 zu.


    Foxhunter Das normale Pipe Zeichen ist zumindest auf meinem Rechner in Dateinamen nicht erlaubt, deswegen vermute ich Zwiebelpeter hat das irgendein anderes Zeichen reingefummelt. =) Da Du Dir ja schon so geholfen hast, fixe ich das einfach mit der nächsten Version, das sollte ja nicht so oft auftreten. :) Im Titel kannst Du ja das normale Pipe Zeichen verwenden.

  • Tag der Probleme heute. :D


    Hm gute Frage. Kein Warndreieck mit Tooltip neben Failed-Status?

    Dann könnte evtl. irgendwas mit der Authentifizierung fehlgeschlagen sein, aber das ist stochern im Dunkeln. Lösch evtl. mal unter Dokumente->Vidup die Datei 'uploadrefreshtoken' dann muss Du Dich neu authentifizieren und bekommst ein neues Token. Evtl. liegts ja daran.

  • strohi  Drexel Entschuldigt bitte, ich habe hier tatsächlich die Programme den falschen Schöpfern zugeordnet! Mea Culpa! *peinlich*

    Der Fehler mit der Zeit ist bekannt, den werde ich demnächst beheben. Den Fehler mit dem Dateinamen dürfte ich aber 1:1 auch haben...

    Na immerhin war es dann doch irgendwie nützlich. 😂😇

    Also die Pipe als Zeichen funktioniert wunderbar - da entfernt YouTube nichts. Alt Gr + <, ich erkenne jetzt auch optisch keinen Unterschied zu deinem Zwiebelpeter - oder stehe ich auf dem Schlauch?

    Ja, bis auf den Dateinamen unter Windows, da ist u.a. Pipe nicht erlaubt.
    Ich verwende für alle dateirelevanten Aufgaben den Total Commander. Dort habe ich mir Templates für die jeweiligen Projekte angelegt und dort, ich weil leider nicht mehr woher, einen vertikel Strich reingebastelt, den auch Windows frisst. ;)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!