iOS GData 多个 YouTube 上传

发布于 2024-12-16 21:13:32 字数 2685 浏览 1 评论 0原文

我正在制作一个需要将多个视频上传到 youtube 的应用程序。 GData 的问题是我不知道如何将信息传递给它的回调函数,以便我可以区分不同的上传。

(void)uploadTicket:(GDataServiceTicket *)ticket
   finishedWithEntry:(GDataEntryYouTubeVideo *)videoEntry
               error:(NSError *)error

在 ASIHttpRequest 中,有一个“userInfo”属性,允许用户将信息传递给 requestFinish 回调。 GData youtube 上传请求怎么样?

- (void)uploadToYoutube: (NSString *)login andPassword:(NSString *)password withVideo:(NSData *)videoData forSighting:(SightingDB *)sighting {


    [service setYouTubeDeveloperKey:DEVELOPER_KEY];

    NSURL *url = [GDataServiceGoogleYouTube youTubeUploadURLForUserID:kGDataServiceDefaultUser];


    NSString *titleStr =  @"title";

    // gather all the metadata needed for the mediaGroup

    GDataMediaTitle *title = [GDataMediaTitle textConstructWithString:titleStr];
    [titleStr release];

    NSString *categoryStr = @"Entertainment";
    GDataMediaCategory *category = [GDataMediaCategory mediaCategoryWithString:categoryStr];
    [category setScheme:kGDataSchemeYouTubeCategory];

    NSString *descStr = @"descripion"

    GDataMediaDescription *desc = [GDataMediaDescription textConstructWithString:descStr];
    [descStr release];

    NSArray *kwords = [[NSArray alloc] initWithObjects:@"xxx",@"weee",nil];
    GDataMediaKeywords *keywords = [GDataMediaKeywords keywordsWithStrings:kwords];



    BOOL isPrivate = NO;

    GDataYouTubeMediaGroup *mediaGroup = [GDataYouTubeMediaGroup mediaGroup];
    [mediaGroup setMediaTitle:title];
    [mediaGroup setMediaDescription:desc];
    [mediaGroup addMediaCategory:category];
    [mediaGroup setMediaKeywords:keywords];
    [mediaGroup setIsPrivate:isPrivate];

    NSString *mimeType = [GDataUtilities MIMETypeForFileAtPath:@""
                                               defaultMIMEType:@"video/mp4"];

    // create the upload entry with the mediaGroup and the file data
    GDataEntryYouTubeUpload *entry;

    entry = [GDataEntryYouTubeUpload uploadEntryWithMediaGroup:mediaGroup
                                                          data:videoData
                                                      MIMEType:mimeType
                                                          slug:@"movie.mov"];



    SEL progressSel = @selector(ticket:hasDeliveredByteCount:ofTotalByteCount:);
    [service setServiceUploadProgressSelector:progressSel];

    GDataServiceTicket *ticket;
    ticket = [service fetchEntryByInsertingEntry:entry
                                      forFeedURL:url
                                        delegate:self
                               didFinishSelector:@selector(uploadTicket:finishedWithEntry:error:)];

I am making an application that needs to upload several videos to youtube. THe problem with GData is that I don't know how to pass information to its callback function so I can distinguish between different uploads.

(void)uploadTicket:(GDataServiceTicket *)ticket
   finishedWithEntry:(GDataEntryYouTubeVideo *)videoEntry
               error:(NSError *)error

In ASIHttpRequest there is the "userInfo" property to allow the user to pass information to the requestFinish callback. What about in GData youtube upload requests?

- (void)uploadToYoutube: (NSString *)login andPassword:(NSString *)password withVideo:(NSData *)videoData forSighting:(SightingDB *)sighting {


    [service setYouTubeDeveloperKey:DEVELOPER_KEY];

    NSURL *url = [GDataServiceGoogleYouTube youTubeUploadURLForUserID:kGDataServiceDefaultUser];


    NSString *titleStr =  @"title";

    // gather all the metadata needed for the mediaGroup

    GDataMediaTitle *title = [GDataMediaTitle textConstructWithString:titleStr];
    [titleStr release];

    NSString *categoryStr = @"Entertainment";
    GDataMediaCategory *category = [GDataMediaCategory mediaCategoryWithString:categoryStr];
    [category setScheme:kGDataSchemeYouTubeCategory];

    NSString *descStr = @"descripion"

    GDataMediaDescription *desc = [GDataMediaDescription textConstructWithString:descStr];
    [descStr release];

    NSArray *kwords = [[NSArray alloc] initWithObjects:@"xxx",@"weee",nil];
    GDataMediaKeywords *keywords = [GDataMediaKeywords keywordsWithStrings:kwords];



    BOOL isPrivate = NO;

    GDataYouTubeMediaGroup *mediaGroup = [GDataYouTubeMediaGroup mediaGroup];
    [mediaGroup setMediaTitle:title];
    [mediaGroup setMediaDescription:desc];
    [mediaGroup addMediaCategory:category];
    [mediaGroup setMediaKeywords:keywords];
    [mediaGroup setIsPrivate:isPrivate];

    NSString *mimeType = [GDataUtilities MIMETypeForFileAtPath:@""
                                               defaultMIMEType:@"video/mp4"];

    // create the upload entry with the mediaGroup and the file data
    GDataEntryYouTubeUpload *entry;

    entry = [GDataEntryYouTubeUpload uploadEntryWithMediaGroup:mediaGroup
                                                          data:videoData
                                                      MIMEType:mimeType
                                                          slug:@"movie.mov"];



    SEL progressSel = @selector(ticket:hasDeliveredByteCount:ofTotalByteCount:);
    [service setServiceUploadProgressSelector:progressSel];

    GDataServiceTicket *ticket;
    ticket = [service fetchEntryByInsertingEntry:entry
                                      forFeedURL:url
                                        delegate:self
                               didFinishSelector:@selector(uploadTicket:finishedWithEntry:error:)];

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

冷情妓 2024-12-23 21:13:32

该票证支持 setProperty:forKey: 以及 setUserData:。

或者只使用块回调而不是委托和选择器。

The ticket supports setProperty:forKey: as well as setUserData:.

Or just use blocks callbacks rather than a delegate and selector.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文