mirror of
https://github.com/moparisthebest/ComicReader
synced 2024-08-13 15:53:54 -04:00
114 lines
3.1 KiB
Java
114 lines
3.1 KiB
Java
|
package com.blogspot.applications4android.comicreader.comics;
|
||
|
|
||
|
import java.io.BufferedReader;
|
||
|
import java.io.IOException;
|
||
|
import java.util.Calendar;
|
||
|
|
||
|
import com.blogspot.applications4android.comicreader.comictypes.DailyComic;
|
||
|
import com.blogspot.applications4android.comicreader.core.Strip;
|
||
|
|
||
|
/**
|
||
|
* Penny Arcade comics
|
||
|
*/
|
||
|
public class PennyArcade extends DailyComic {
|
||
|
|
||
|
@Override
|
||
|
protected Calendar getFirstCalendar() {
|
||
|
Calendar first = Calendar.getInstance();
|
||
|
//TODO: this has been done as there are a lot of exceptions in the beginning
|
||
|
first.set(2001, 11, 31); // 2001/12/31
|
||
|
return first;
|
||
|
}
|
||
|
|
||
|
public String getComicWebPageUrl() {
|
||
|
return "http://www.penny-arcade.com/comic/";
|
||
|
}
|
||
|
|
||
|
protected Calendar getLatestCalendar() {
|
||
|
return Calendar.getInstance(m_zone);
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
protected Calendar getTimeFromUrl(String url) {
|
||
|
String str = url;
|
||
|
str = str.replaceAll(".*comic/", "");
|
||
|
String[] time = str.split("/");
|
||
|
int year = Integer.parseInt(time[0]);
|
||
|
int month = Integer.parseInt(time[1]) - 1;
|
||
|
int day = Integer.parseInt(time[2]);
|
||
|
Calendar date = Calendar.getInstance();
|
||
|
date.set(year, month, day);
|
||
|
return date;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
protected String getNextStripUrl() {
|
||
|
Calendar cal = getCurrentCal();
|
||
|
cal.add(Calendar.DAY_OF_MONTH, 3);
|
||
|
addException(cal, 1);
|
||
|
return getUrlFromTime(cal);
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
protected String getPreviousStripUrl() {
|
||
|
Calendar cal = getCurrentCal();
|
||
|
cal.add(Calendar.DAY_OF_MONTH, -2);
|
||
|
addException(cal, -1);
|
||
|
return getUrlFromTime(cal);
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public String getUrlFromTime(Calendar cal) {
|
||
|
return String.format("http://www.penny-arcade.com/comic/%04d/%02d/%02d/",
|
||
|
cal.get(Calendar.YEAR), cal.get(Calendar.MONTH)+1, cal.get(Calendar.DAY_OF_MONTH));
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
protected boolean htmlNeeded() {
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
protected String parse(String url, BufferedReader reader, Strip strip)
|
||
|
throws IOException {
|
||
|
String str;
|
||
|
String final_str = null;
|
||
|
String final_title = null;
|
||
|
String final_date = null;
|
||
|
String curr_date = null;
|
||
|
while((str = reader.readLine()) != null) {
|
||
|
// one such server
|
||
|
int index1 = str.indexOf("http://art.penny-arcade.com/photos");
|
||
|
int index3 = str.indexOf("http://penny-arcade.smugmug.com/photos");
|
||
|
if (index1 != -1 || index3 != -1) {
|
||
|
final_str = str;
|
||
|
final_date = str;
|
||
|
}
|
||
|
else {
|
||
|
// second such server
|
||
|
index1 = str.indexOf("http://www.penny-arcade.com/images");
|
||
|
if (index1 != -1) {
|
||
|
final_str = str;
|
||
|
final_date = str;
|
||
|
}
|
||
|
}
|
||
|
int index2 = str.indexOf("btnNews btn");
|
||
|
if (index2 != -1) {
|
||
|
curr_date = str;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
final_str = final_str.replaceAll(".*src=\"","");
|
||
|
final_str = final_str.replaceAll("\".*","");
|
||
|
final_date = final_date.replaceAll(".*alt=\"","");
|
||
|
final_date = final_date.replaceAll("\".*","");
|
||
|
curr_date = curr_date.replaceAll(".*.com", "");
|
||
|
curr_date = curr_date.replaceAll("\".*", "");
|
||
|
curr_date = "http://penny-arcade.com/comic"+curr_date;
|
||
|
final_title = "Penny Arcade" + ": " + final_date;
|
||
|
strip.setTitle(final_title);
|
||
|
strip.setText("-NA-");
|
||
|
return final_str;
|
||
|
}
|
||
|
}
|