aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrsudev <rasch@munin-soft.de>2011-08-25 22:23:28 +0200
committerrsudev <rasch@munin-soft.de>2011-08-25 22:23:28 +0200
commit5db059cb2b0b3872490a1eefdac93fad4bb55a18 (patch)
tree90ce4ce8fe097d7a04e1e4346497513bc98404f9
parent78dd2abf0ec7d9220db9034e0f321120828fae0a (diff)
parent24b958dbf55fd01cd5c932761847dab67d346b0d (diff)
downloadcgeo-5db059cb2b0b3872490a1eefdac93fad4bb55a18.zip
cgeo-5db059cb2b0b3872490a1eefdac93fad4bb55a18.tar.gz
cgeo-5db059cb2b0b3872490a1eefdac93fad4bb55a18.tar.bz2
Merge branch 'master' of https://github.com/cgeo/c-geo-opensource
-rw-r--r--res/values-de/strings.xml4
-rw-r--r--src/cgeo/geocaching/LogTemplateProvider.java6
-rw-r--r--src/cgeo/geocaching/cgBase.java30
3 files changed, 13 insertions, 27 deletions
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 8b5e3d5..440c4a8 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -177,7 +177,7 @@
<string name="err_log_load_data">c:geo konnte die benötigten Daten nicht laden, um den Besuch zu loggen.</string>
<string name="err_log_load_data_again">c:geo konnte die benötigten Daten nicht laden, um den Besuch zu loggen. Bitte erneut versuchen.</string>
- <string name="err_log_load_data_still">c:geo läd gerade die benötigten Daten. Bitte kurz warten.</string>
+ <string name="err_log_load_data_still">c:geo lädt gerade die benötigten Daten. Bitte kurz warten.</string>
<string name="err_log_failed_server">c:geo konnte Log nicht senden, weil der Server nicht antwortete.</string>
<string name="err_log_post_failed">c:geo konnte Log nicht absenden.</string>
<string name="err_log_post_failed_because">c:geo konnte Log nicht absenden, wegen </string>
@@ -625,7 +625,7 @@
<string name="map_live_disable">Live ausschalten</string>
<string name="map_static_title">Statische Karte</string>
<string name="map_static_loading">Lade statische Karte…</string>
- <string name="map_token_err">c:geo konnte nur Teildaten herunterladen, die Koordinaten der Caches könnten verkehrt sein.</string> <!-- since: 2.26 RC3 -->
+ <string name="map_token_err">c:geo konnte nur Teildaten herunterladen, die Koordinaten der Caches könnten ungenau sein.</string> <!-- since: 2.26 RC3 -->
<!-- search -->
<string name="search_bar_hint">Suche nach Caches</string>
diff --git a/src/cgeo/geocaching/LogTemplateProvider.java b/src/cgeo/geocaching/LogTemplateProvider.java
index 05d1341..a6beda3 100644
--- a/src/cgeo/geocaching/LogTemplateProvider.java
+++ b/src/cgeo/geocaching/LogTemplateProvider.java
@@ -75,7 +75,7 @@ public class LogTemplateProvider {
String getValue(final cgBase base) {
String findCount = "";
final HashMap<String, String> params = new HashMap<String, String>();
- final String page = base.request(false, "www.geocaching.com", "/my/", "GET", params, false, false, false).getData();
+ final String page = base.request(false, "www.geocaching.com", "/email/", "GET", params, false, false, false).getData();
int current = parseFindCount(page);
if (current >= 0) {
@@ -117,7 +117,7 @@ public class LogTemplateProvider {
int findCount = -1;
try {
- final Pattern findPattern = Pattern.compile("Finds\\s*</strong>\\s*<span class=\"statcount\">(\\d+)</span>", Pattern.CASE_INSENSITIVE);
+ final Pattern findPattern = Pattern.compile("<strong><img.+?icon_smile.+?title=\"Caches Found\" /> ([,\\d]+)</strong>", Pattern.CASE_INSENSITIVE);
final Matcher findMatcher = findPattern.matcher(page);
if (findMatcher.find()) {
if (findMatcher.groupCount() > 0) {
@@ -127,7 +127,7 @@ public class LogTemplateProvider {
if (count.length() == 0) {
findCount = 0;
} else {
- findCount = Integer.parseInt(count);
+ findCount = Integer.parseInt(count.replaceAll(",", ""));
}
}
}
diff --git a/src/cgeo/geocaching/cgBase.java b/src/cgeo/geocaching/cgBase.java
index fc13d7f..e8e23ac 100644
--- a/src/cgeo/geocaching/cgBase.java
+++ b/src/cgeo/geocaching/cgBase.java
@@ -94,7 +94,7 @@ public class cgBase {
private final static Pattern patternCountLogs = Pattern.compile("<span id=\"ctl00_ContentBody_lblFindCounts\"><p>(.*)<\\/p><\\/span>", Pattern.CASE_INSENSITIVE);
private final static Pattern patternCountLog = Pattern.compile(" src=\"\\/images\\/icons\\/([^\\.]*).gif\" alt=\"[^\"]*\" title=\"[^\"]*\" />([0-9]*)[^0-9]+", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE);
//private final static Pattern patternLogs = Pattern.compile("<table class=\"LogsTable\">(.*?)</table>\\s*<p", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE);
- private final static Pattern patternLog = Pattern.compile("<tr><td class.+?<a href=\"/profile/\\?guid=.+?>(.+?)</a>.+?(?:logOwnerStats.+?guid.+?>(\\d+)</a>.+?)?LogType.+?<img.+?/images/icons/([^\\.]+)\\..+?title=\"(.+?)\".+?LogDate.+?>(.+?)<.+?LogText.+?>(.*?)</p>(.*?)</div></div></div></td></tr>", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE);
+ private final static Pattern patternLog = Pattern.compile("<tr><td class.+?<a href=\"/profile/\\?guid=.+?>(.+?)</a>.+?(?:logOwnerStats[^>]+><img[^>]+icon_smile.+?> ([,\\d]+).+?)?LogType.+?<img.+?/images/icons/([^\\.]+)\\..+?title=\"(.+?)\".+?LogDate.+?>(.+?)<.+?LogText.+?>(.*?)</p>(.*?)</div></div></div></td></tr>", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE);
private final static Pattern patternLogImgs = Pattern.compile("href=\"(http://img.geocaching.com/cache/log/.+?)\".+?<span>([^<]*)", Pattern.CASE_INSENSITIVE);
private final static Pattern patternAttributes = Pattern.compile("<h3 class=\"WidgetHeader\">[^<]*<img[^>]+>\\W*Attributes[^<]*</h3>[^<]*<div class=\"WidgetBody\">(([^<]*<img src=\"[^\"]+\" alt=\"[^\"]+\"[^>]*>)+)[^<]*<p", Pattern.CASE_INSENSITIVE);
private final static Pattern patternAttributesInside = Pattern.compile("[^<]*<img src=\"([^\"]+)\" alt=\"([^\"]+)\"[^>]*>", Pattern.CASE_INSENSITIVE);
@@ -116,15 +116,13 @@ public class cgBase {
public static HashMap<Integer, String> logTypesTrackable = new HashMap<Integer, String>();
public static HashMap<Integer, String> logTypesTrackableAction = new HashMap<Integer, String>();
public static HashMap<Integer, String> errorRetrieve = new HashMap<Integer, String>();
- public final static SimpleDateFormat dateInBackslash = new SimpleDateFormat("MM/dd/yyyy");
+ public final static SimpleDateFormat dateInSlash = new SimpleDateFormat("MM/dd/yyyy");
public final static SimpleDateFormat dateInDash = new SimpleDateFormat("yyyy-MM-dd");
public final static SimpleDateFormat dateEvIn = new SimpleDateFormat("dd MMMMM yyyy", Locale.ENGLISH); // 28 March 2009
public final static SimpleDateFormat dateTbIn1 = new SimpleDateFormat("EEEEE, dd MMMMM yyyy", Locale.ENGLISH); // Saturday, 28 March 2009
public final static SimpleDateFormat dateTbIn2 = new SimpleDateFormat("EEEEE, MMMMM dd, yyyy", Locale.ENGLISH); // Saturday, March 28, 2009
public final static SimpleDateFormat dateSqlIn = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 2010-07-25 14:44:01
public final static SimpleDateFormat dateGPXIn = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); // 2010-04-20T07:00:00Z
- public final static SimpleDateFormat dateLogs1 = new SimpleDateFormat("MMMMM dd, yyyy", Locale.ENGLISH); // March 28, 2009
- public final static SimpleDateFormat dateLogs2 = new SimpleDateFormat("MMMMM dd", Locale.ENGLISH); // March 28
private Resources res = null;
private HashMap<String, String> cookies = new HashMap<String, String>();
private static final String passMatch = "[/\\?&]*[Pp]ass(word)?=[^&^#^$]+";
@@ -1599,7 +1597,7 @@ public class cgBase {
2- Finds-count
3- Log type image name (e.g. "icon_smile")
4- Type string (e.g. "Found it")
- 5- Date string (e.g. "March 28, 2009")
+ 5- Date string (e.g. "04/28/2010")
6- Log text
7- The rest (e.g. log-images, maybe faster)
*/
@@ -1620,30 +1618,18 @@ public class cgBase {
try
{
- if (matcherLog.group(5).indexOf(',') > 0)
- {
- logDone.date = dateLogs1.parse(matcherLog.group(5)).getTime(); // long format
- }
- else
- {
- // short format, with current year
- final Calendar cal = Calendar.getInstance();
- final int year = cal.get(Calendar.YEAR);
- cal.setTime(dateLogs2.parse(matcherLog.group(5)));
- cal.set(Calendar.YEAR, year);
- logDone.date = cal.getTimeInMillis();
- }
+ logDone.date = dateInSlash.parse(matcherLog.group(5)).getTime();
}
catch (ParseException e)
{
- Log.w(cgSettings.tag, "Failed to parse logs date: " + e.toString());
+ Log.w(cgSettings.tag, "Failed to parse log date.");
}
logDone.author = Html.fromHtml(matcherLog.group(1)).toString();
if (null != matcherLog.group(2))
{
- logDone.found = Integer.parseInt(matcherLog.group(2));
+ logDone.found = Integer.parseInt(matcherLog.group(2).replaceAll(",", ""));
}
logDone.log = matcherLog.group(6);
@@ -1672,7 +1658,7 @@ public class cgBase {
catch (Exception e)
{
// failed to parse logs
- Log.w(cgSettings.tag, "cgeoBase.parseCache: Failed to parse cache logs");
+ Log.w(cgSettings.tag, "cgeoBase.parseCache: Failed to parse cache logs", e);
}
int wpBegin = 0;
@@ -1905,7 +1891,7 @@ public class cgBase {
try {
Date result;
if (input.indexOf('/') > 0) {
- result = dateInBackslash.parse(input);
+ result = dateInSlash.parse(input);
if (result != null) {
return result;
}