Skip to content

Instantly share code, notes, and snippets.

@calvinaquino
Created August 8, 2012 12:40
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save calvinaquino/3294821 to your computer and use it in GitHub Desktop.
Save calvinaquino/3294821 to your computer and use it in GitHub Desktop.
baka reader iphone app attempt
#import <UIKit/UIKit.h>
@interface NovelViewController : UITableViewController {
NSData *response;
NSMutableArray *searchResult;
}
@property (nonatomic, retain) NSData *response;
@property (nonatomic, retain) NSMutableArray *searchResult;
-(void)getNovels:(id)rootXML;
-(void)getNovelsWithXPath:(id)rootXML;
@end
#import "NovelViewController.h"
#import "RXMLElement.h"
@implementation NovelViewController
@synthesize response;
@synthesize searchResult;
- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
// Custom initialization
}
return self;
}
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - Data management
-(void)getNovels:(id)rootXML {
[rootXML iterate:@"html.body.div.div.div.ul" usingBlock: ^(RXMLElement *element) {
NSString *lnHref = [element attribute:@"href"];
NSString *lnName = [element child:@"a"].text;
NSLog(@"%@",lnHref);
NSLog(@"%@",lnName);
}];
}
-(void)getNovelsWithXPath:(id)rootXML {
[rootXML iterateWithRootXPath:@"//*[@id=\"p-Light_Novels\"]/div/ul" usingBlock: ^(RXMLElement *element) {
RXMLElement *aElement = [element child:@"li"];
NSString *lnHref = [aElement attribute:@"href"];
NSString *lnName = aElement.text;
NSLog(@"%@",lnHref);
NSLog(@"%@",lnName);
}];
}
//*[@id="p-Light_Novels"]/div/ul
#pragma mark - View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
/*
NSURL *url = [NSURL URLWithString:@"http://www.baka-tsuki.org/project/index.php?title=Main_Page"];
RXMLElement *root2 = [RXMLElement elementFromURL:url];
if (root2) {
[self getNovels:root2];
}
*/
NSError *error = nil;
NSString *html = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://www.baka-tsuki.org/project/index.php?title=Main_Page"] encoding:NSASCIIStringEncoding error:&error];
if(html) {
//NSLog(@"HTML %@", html);
RXMLElement *htmlRoot = [RXMLElement elementFromXMLString:html encoding:NSASCIIStringEncoding];
[self getNovelsWithXPath:htmlRoot];
} else {
NSLog(@"Error %@", error);
}
/*
NSMutableString *serverAddress = [[NSMutableString alloc]initWithString:@"www.baka-tsuki.org/project/index.php?title=Main_Page"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:serverAddress]
cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData
timeoutInterval:20];
NSError *requestError;
NSURLResponse *urlResponse = nil;
self.response = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&requestError];
if (self.response == nil) {
if (requestError != nil) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Erro de Conexão"
message:@"Não foi possivel conectar-se ao host."
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles: nil];
[alert show];
}
}
else {
self.searchResult = [[NSMutableArray alloc] init];
RXMLElement *rootXML = [RXMLElement elementFromXMLData:self.response];
if (rootXML) {
NSLog(@"root: %@",rootXML.text);
}
NSLog(@"%@",self.searchResult);
}
*/
// Uncomment the following line to preserve selection between presentations.
// self.clearsSelectionOnViewWillAppear = NO;
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonItem;
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
}
- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
#warning Potentially incomplete method implementation.
// Return the number of sections.
return 0;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
#warning Incomplete method implementation.
// Return the number of rows in the section.
return 0;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
// Configure the cell...
return cell;
}
/*
// Override to support conditional editing of the table view.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
// Return NO if you do not want the specified item to be editable.
return YES;
}
*/
/*
// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Delete the row from the data source
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
else if (editingStyle == UITableViewCellEditingStyleInsert) {
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
}
}
*/
/*
// Override to support rearranging the table view.
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath
{
}
*/
/*
// Override to support conditional rearranging of the table view.
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
{
// Return NO if you do not want the item to be re-orderable.
return YES;
}
*/
#pragma mark - Table view delegate
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// Navigation logic may go here. Create and push another view controller.
/*
<#DetailViewController#> *detailViewController = [[<#DetailViewController#> alloc] initWithNibName:@"<#Nib name#>" bundle:nil];
// ...
// Pass the selected object to the new view controller.
[self.navigationController pushViewController:detailViewController animated:YES];
*/
}
@end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment