• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Youtube API / Youtube Upload über eigene Homepage

haschel

Neues Mitglied
Nabend!

Ich habe ein paar fragen an die schlauen Köpfe hier, und zwar:

Ich möchte gerne die Youtube Direct Upload API einsetzen, um Videos über meine Homepage direkt auf Youtube hochladen zu lassen. Hat schon jemand Erfahrung mit der API und kann mit bei der Einrichtung behilflich sein? Wäre sehr nett!

Ich bedanke mich schon mal im Voraus.

Grüße.
 
Ich schon wieder! Habe jetzt angefangen rumzuprobieren. Habe aber ein paar Fehler und zwar in Eclipse. Wenn ich die API lokal starten möchte, erhalte ich folgende Fehlermeldung(en):

Code:
Feb 23, 2013 6:35:59 PM com.google.apphosting.utils.config.EarHelper logNotAnEarINFO: Directory 'C:\Users\ackmann\workspace\ytd\war' is not an EAR directory. File C:\Users\ackmann\workspace\ytd\war\appengine-application.xmlappengine-application.xml not detected.
Feb 23, 2013 6:35:59 PM com.google.apphosting.utils.config.EarHelper logNotAnEar
INFO: Directory 'C:\Users\ackmann\workspace\ytd\war' is not an EAR directory. File C:\Users\ackmann\workspace\ytd\war\appengine-application.xmlappengine-application.xml not detected.
Feb 23, 2013 6:35:59 PM com.google.apphosting.utils.config.EarHelper logNotAnEar
INFO: Directory 'C:\Users\ackmann\workspace\ytd\war' is not an EAR directory. File C:\Users\ackmann\workspace\ytd\war\appengine-application.xmlappengine-application.xml not detected.
Feb 23, 2013 6:35:59 PM com.google.apphosting.utils.config.EarHelper logNotAnEar
INFO: Directory 'C:\Users\ackmann\workspace\ytd\war' is not an EAR directory. File C:\Users\ackmann\workspace\ytd\war\appengine-application.xmlappengine-application.xml not detected.
Feb 23, 2013 6:35:59 PM com.google.apphosting.utils.config.AppEngineWebXmlReader readAppEngineWebXml
INFO: Successfully processed C:\Users\ackmann\workspace\ytd\war\WEB-INF/appengine-web.xml
2013-02-23 18:35:59.360:INFO::Logging to STDERR via org.mortbay.log.StdErrLog
Feb 23, 2013 6:35:59 PM com.google.apphosting.utils.config.AbstractConfigXmlReader readConfigXml
INFO: Successfully processed C:\Users\ackmann\workspace\ytd\war\WEB-INF/web.xml
Feb 23, 2013 6:35:59 PM com.google.appengine.tools.development.SystemPropertiesManager setSystemProperties
INFO: Overwriting system property key 'java.util.logging.config.file', value 'G:\Forum\youtube upload\eclipse-jee-juno-SR1-win32-x86_64\eclipse\plugins\com.google.appengine.eclipse.sdkbundle_1.7.5\appengine-java-sdk-1.7.5\config\sdk\logging.properties' with value 'WEB-INF/logging.properties' from 'C:\Users\ackmann\workspace\ytd\war\WEB-INF\appengine-web.xml'
2013-02-23 18:36:00.318:INFO::jetty-6.1.x
2013-02-23 18:36:03.419:WARN::Failed startup of context com.google.appengine.tools.development.DevAppEngineWebAppContext@2b2b7313{/,C:\Users\ackmann\workspace\ytd\war}
com.google.inject.internal.ComputationException: java.lang.VerifyError: Expecting a stackmap frame at branch target 35 in method com.google.ytd.dao.AdminConfigDaoImpl.save(Lcom/google/ytd/model/AdminConfig;)Lcom/google/ytd/model/AdminConfig; at offset 10
	at com.google.inject.internal.MapMaker$StrategyImpl.compute(MapMaker.java:553)
	at com.google.inject.internal.MapMaker$StrategyImpl.compute(MapMaker.java:419)
	at com.google.inject.internal.CustomConcurrentHashMap$ComputingImpl.get(CustomConcurrentHashMap.java:2041)
	at com.google.inject.internal.FailableCache.get(FailableCache.java:46)
	at com.google.inject.ConstructorInjectorStore.get(ConstructorInjectorStore.java:52)
	at com.google.inject.ConstructorBindingImpl.initialize(ConstructorBindingImpl.java:57)
	at com.google.inject.InjectorImpl.initializeBinding(InjectorImpl.java:377)
	at com.google.inject.InjectorImpl.createJustInTimeBinding(InjectorImpl.java:645)
	at com.google.inject.InjectorImpl.createJustInTimeBindingRecursive(InjectorImpl.java:581)
	at com.google.inject.InjectorImpl.getJustInTimeBinding(InjectorImpl.java:172)
	at com.google.inject.InjectorImpl.getBindingOrThrow(InjectorImpl.java:132)
	at com.google.inject.InjectorImpl.getInternalFactory(InjectorImpl.java:651)
	at com.google.inject.FactoryProxy.notify(FactoryProxy.java:48)
	at com.google.inject.BindingProcessor.runCreationListeners(BindingProcessor.java:230)
	at com.google.inject.InjectorBuilder.initializeStatically(InjectorBuilder.java:131)
	at com.google.inject.InjectorBuilder.build(InjectorBuilder.java:105)
	at com.google.inject.Guice.createInjector(Guice.java:92)
	at com.google.inject.Guice.createInjector(Guice.java:80)
	at com.google.ytd.guice.GuiceServletConfig.getInjector(GuiceServletConfig.java:68)
	at com.google.inject.servlet.GuiceServletContextListener.contextInitialized(GuiceServletContextListener.java:43)
	at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:548)
	at org.mortbay.jetty.servlet.Context.startContext(Context.java:136)
	at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
	at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
	at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
	at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
	at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
	at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
	at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
	at org.mortbay.jetty.Server.doStart(Server.java:224)
	at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
	at com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:228)
	at com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:255)
	at com.google.appengine.tools.development.AbstractServer.startup(AbstractServer.java:79)
	at com.google.appengine.tools.development.DevAppServerImpl$Servers.startup(DevAppServerImpl.java:451)
	at com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:198)
	at com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:333)
	at com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:48)
	at com.google.appengine.tools.development.DevAppServerMain.<init>(DevAppServerMain.java:269)
	at com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:245)
2013-02-23 18:36:03.443:INFO::Started [email protected]:8888
Feb 23, 2013 5:36:03 PM com.google.appengine.tools.development.AbstractServer startup
INFO: Server default is running at http://localhost:8888/
Feb 23, 2013 5:36:03 PM com.google.appengine.tools.development.AbstractServer startup
INFO: The admin console is running at http://localhost:8888/_ah/admin
Feb 23, 2013 6:36:03 PM com.google.appengine.tools.development.DevAppServerImpl start
INFO: Dev App Server is now running


Wenn ich dann auf: http://localhost:8888/ schmeißt er mir den 503 Service Unaviable Fehler vor die Füße.

Irgendwer ne Idee?
 
Hallo und Willkommen,

aus kürzlicher Erfahrung kann ich dir sagen, dass man es ohne fortgeschrittene Erfahrung wahrscheinlich nicht packen kann.

Die derzeitige Dokumentation ist ziemlich wirr und vermischt sich stark mit älteren Anleitungen, die nicht mehr Aktuell sind. Außerdem gehört ein gutes Verständnis zur Programmierung zur Selbstverständlichkeit, wenn man alle Teile des Puzzles verbinden will.

Die API hört sich nach "Einbauen", "Starten", "Fertig" an, ist aber mehr als man denkt.

Zu allererst muss man sich in das Sicherheitskonzept ( OAuth2 ) von Google einlesen und es am besten auch verstehen!


Danach kommt die eigentliche Aufgabe erst. Da kaum aktuelle Guides vorhanden sind, muss man sich selbst in die vorhandenen Klassen einlesen und sie sinnvoll benutzen.
Dafür benötigt man schon gutes Verständnis im Programmieren.

Ich kann nur viel Erfolg wünschen. Ich denke nicht das dir da jemand für Umsonst hilft.

Gruß
 
Danke erstmal für Deine Antwort.


Ich muss mir dieses typische Programmier-Verständnis noch aneignen. Das wird aber denke ich mit der Zeit kommen.

Nach "Einbauen", "Starten", "Fertig" hört sich das meiner Meinung nach gar nicht an.
Im Grundgedanken kann ich mir vorstellen, wie die API arbeitet, bloß leider fehlt es dann doch (aufgrund mangelnder Erfahrung) an manchen Enden.
Und die Dokumentationen von Google sind ja teilweise echt traurig, dass solch ein Unternehmen, welches solch ein Produkt vertreibt, nicht in der Lage ist eine vernünftige Dokumentation für jede Version anzubieten ist wirklich ein bisschen traurig.

Aber was soll's - kann man machen nix, muss man gucken zu.


Eine andere Sache:

Hast Du (oder wer anders) Erfahrung mit "Youtube Direct Lite"? Hab mich da ein bisschen eingelesen, musste aber wegen Zeitmangels vorhin aufhören.

Kann man über die "abgespackte" Version auch Videos hochladen?

Ich plane das nämlich folgendermaßen:

Der Benutzer, der ein Video auf meiner Homepage hochlädt, soll ein Formular vorgesetzt bekommen, bei welchem er die Datei auswählen soll (auf seinem PC) die dann auf meinen Youtube Channel hochgeladen wird. Außerdem soll das Video einen automatisch generierten Namen erhalten (Benutzername des Uploaders) Das alles soll mit einem vBulletin System verknüpft werden.


Und Daumen hoch für Deine Signatur - erlebe ich täglich auf der Arbeit!


Bzw. weiß wer vielleicht eine andere Lösung, wie ich dieses Vorhaben (zur Not muss ich halt auf den oben genannten Funktionsumfang verzichten) verwirklichen kann? Denn der Upload über unser Forum auf unseren Youtube Kanal ist essentiell!

Güße
 
Zuletzt bearbeitet:
Oh ein dankbares Mitglied, da steigt doch meine Motivation weiter zu antworten :)

Ja das mit der Signatur ist eine doofe Sache, aber man muss damit leben^^

Ich kannte es vorher noch nicht, aber nach kurzer Recherche scheint es möglich zu sein, damit Videos hoch zuladen. Aber ohne mir großartig Mühe zu geben, konnte ich bisher nicht ein schnipsel Beispielcode sehen.

Die Youtube API hat mich etwas weniger als eine Woche gekostet, je nach Stärke und Dokumentation wird Direct Lite wohl auch nicht länger als eine Woche dauern, bis man die erste funktionierende Version zur Verfügung hat.

Das was du realisieren willst ist möglich, hab ich erst letze Woche erfolgreich realisiert.

Eine alternative wäre es dich in JSON genauer anzulesen und über cURL dann die benötigten Daten verschicken bzw. deine Eigene API dazu schreiben und anbinden, weil du dann auf jeden Fall keine Dokumentation mehr brauchst, denn du hast alles selbst gemacht^^

Soweit ich weiß ist der "part" Teil ein pflicht Feld und natürlich der mediaBody, denn ohne das Medium(Video Datei) wäre der Upload ja sinnlos.

Gruß
 
Zurück
Oben