yt:accessControlsを変更したい(特にコメントのモデレート)YouTubeにアップロードしたビデオがあります。私はYouTube APIリファレンスhereとhereを見てきましたが、正しく更新されていないようです。YouTube-API Javaでyt:accessControlを正しく適用する方法
//Strings declared beforehand: appName, developerId, username, password, and vidId.
YouTubeService service = new YouTubeService(appName, developerId);
service.setUserCredentials(username, password);
String videoEntryUrl = "http://gdata.youtube.com/feeds/api/users/default/uploads/" + vidId;
VideoEntry createdEntry = service.getEntry(new URL(videoEntryUrl), VideoEntry.class);
String originalXMLBlob = createdEntry.getXmlBlob().getBlob();
String atomXml = "<?xml version='1.0'?><entry xmlns='http://www.w3.org/2005/Atom' xmlns:gd='http://schemas.google.com/g/2005' gd:fields='yt:accessControl' xmlns:yt='http://gdata.youtube.com/schemas/2007'><yt:accessControl action='comment' permission='moderated'/></entry>";
GDataRequest request = service.createPatchRequest(new URL(createdEntry.getEditLink().getHref()));
request.getRequestStream().write(atomXml.getBytes("UTF-8"));
request.execute();
createdEntry = service.parseResponseData(request, VideoEntry.class);
String newXMLBlob = createdEntry.getXmlBlob().getBlob().substring(49);
//The substring(49) is because after you do a service.parseResponseData... it attaches a timestamp to the xmlBlob. To properly compare whether these are the same in the printlns I substring it.
System.out.println(newXMLBlob.equals(originalXMLBlob));
System.out.println(originalXMLBlob);
System.out.println(newXMLBlob);
createdEntry.update();
createdEntry.update();
newXMLBlob = createdEntry.getXmlBlob().getBlob().substring(49);
System.out.println(newXMLBlob.equals(originalXMLBlob));
System.out.println(originalXMLBlob);
System.out.println(newXMLBlob);
System.out.println("Done");
出力は次のとおりです:
false
<yt:accessControl permission='allowed' action='comment'/><yt:accessControl permission='allowed' action='commentVote'/><yt:accessControl permission='moderated' action='videoRespond'/><yt:accessControl permission='allowed' action='rate'/><yt:accessControl permission='allowed' action='embed'/><yt:accessControl permission='allowed' action='list'/><yt:accessControl permission='allowed' action='autoPlay'/><yt:accessControl permission='allowed' action='syndicate'/>
<yt:accessControl permission='moderated' action='comment'/><yt:accessControl permission='allowed' action='commentVote'/><yt:accessControl permission='moderated' action='videoRespond'/><yt:accessControl permission='allowed' action='rate'/><yt:accessControl permission='allowed' action='embed'/><yt:accessControl permission='allowed' action='list'/><yt:accessControl permission='allowed' action='autoPlay'/><yt:accessControl permission='allowed' action='syndicate'/>
false
<yt:accessControl permission='allowed' action='comment'/><yt:accessControl permission='allowed' action='commentVote'/><yt:accessControl permission='moderated' action='videoRespond'/><yt:accessControl permission='allowed' action='rate'/><yt:accessControl permission='allowed' action='embed'/><yt:accessControl permission='allowed' action='list'/><yt:accessControl permission='allowed' action='autoPlay'/><yt:accessControl permission='allowed' action='syndicate'/>
<yt:accessControl permission='moderated' action='comment'/><yt:accessControl permission='allowed' action='commentVote'/><yt:accessControl permission='moderated' action='videoRespond'/><yt:accessControl permission='allowed' action='rate'/><yt:accessControl permission='allowed' action='embed'/><yt:accessControl permission='allowed' action='list'/><yt:accessControl permission='allowed' action='autoPlay'/><yt:accessControl permission='allowed' action='syndicate'/>
Done
重要なことは何も最初から最後まで変化していないということです。ここに私のコードです。あなたはcreatedEntry.update();
をやってみることもできますが、どちらもうまくいきません。どんな助けでも大歓迎です!ありがとう!
ああ、最後の1つです。私は、atomXmlが複数のもの(ビデオレスポンス、評価など)へのアクセスコントロールを設定できるようにしたいと思います。私はあなたにちょうどより多くのyt:accessControl
タグを追加することを推測しているが、それについてのヒントがあれば答えるには、私はそれを感謝します。再度、感謝します。
編集:xmlのURLの空白を削除しました。これは出力の変更を引き起こしました(また更新されました)。これは理にかなっていますが、望ましい解決策ではありません。
問題は解決しましたが、私は34の評判ポイントしか持っていませんが、後で回答を投稿します。 – kentcdodds