diff options
| author | rsudev <rasch@munin-soft.de> | 2011-08-25 22:23:28 +0200 |
|---|---|---|
| committer | rsudev <rasch@munin-soft.de> | 2011-08-25 22:23:28 +0200 |
| commit | 5db059cb2b0b3872490a1eefdac93fad4bb55a18 (patch) | |
| tree | 90ce4ce8fe097d7a04e1e4346497513bc98404f9 | |
| parent | 78dd2abf0ec7d9220db9034e0f321120828fae0a (diff) | |
| parent | 24b958dbf55fd01cd5c932761847dab67d346b0d (diff) | |
| download | cgeo-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.xml | 4 | ||||
| -rw-r--r-- | src/cgeo/geocaching/LogTemplateProvider.java | 6 | ||||
| -rw-r--r-- | src/cgeo/geocaching/cgBase.java | 30 |
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; } |
