Filed under: Development

Using GData API with protected YouTube streams

I am using the GData libraries provided by Google for accessing various Google data sources; in particular in this instance I am attempting to access a number of private YouTube videos from a cooperate account.

I am coming across a problem, whereby I login to YouTube with an authenticated account, and can retrieve the stream, however when I attempt to play one of the video items, I am presented with the error message "This video is private" (Yes, I know it is private, I made it private!).

I am just wondering if anyone has came up against this before, or has any pointers for me when using GData.

A stripped down version of the code is shown below. I have changed the stream URL to the generic 'most watched' stream in order to protect copyright content.

UILabel Vertical / Bottom Align

I find it hard to believe that Apple when developing the iOS SDK, did not take into account that users may wish to align label text, either to the top or the bottom of a label. Instead they simply give the option of aligning it to the center, as shown below:

20090628-jkf727u2wsbsrgfhep3ja

This code allows you to align text either to the top or the bottom of a UILabel

I hope this helps someone else struggling with this issue, maybe it will be fixed in iOS 5.

Shameless Plug

(download)

I just wanted to take a second to let everyone know about Countdown, an application developed by myself which is available in the Apple App Store.

The purpose of countdown is simple, you enter a date and it shows you a countdown to that date and notifies you when the date is imminent. It supports multiple dates, local notifications and advanced user interface customisation.

What's more it is totally free and available now! Grab your copy today!!!

http://itunes.apple.com/gb/app/countdown/id343020892?mt=8

Sorting a NSMutableArray Randomly - Shuffle

Earlier today, I had a situation where I needed the contents of a NSMutableArrray in a random order.

There are many way in which this could be achieved, however I decided to build a Category onto NSMutableArray itself to aid in the reuse of the code, and to provide some features out of the box because the project I was actually developing was a static library for use in other project.
I am posting the code here in case anyone else finds it useful, and so I know where it is, should I ever need it again in the future.
interface:
//  NSMutableArray_Shuffling.h
//  Created by Mick Walker on 11/04/2011.
//
 
#if TARGET_OS_IPHONE
#import "UIKit/UIKit.h"
#else
#include <Cocoa/Cocoa.h>
#endif
 
 
@interface NSMutableArray (Shuffling)
- (void) shuffle;
@end

implementation:
//  NSMutableArray_Shuffling.m
//  Created by Mick Walker on 11/04/2011.
//
 
#import "NSMutableArray_Shuffling.h"
 
 
@implementation NSMutableArray (Shuffling)
 
-(void) shuffle {
    NSUInteger count = [self count];
    for(NSUInteger i = 0; i < count; i++){
        int nElements = count -1;
        int n = (arc4random() %nElements) + 1;
        [self exchangeObjectAtIndex:i withObjectAtIndex:n];
    }
}
@end

Using the code is simple, simply import the header file:
#import "NSMutableArray_Shuffling.h"

And then on an initialised NSMutableArray object call:
[someArray shuffle];
I hope that this post helps someone.