diff options
| author | SammysHP <sven@sammyshp.de> | 2011-08-29 09:04:32 +0200 |
|---|---|---|
| committer | SammysHP <sven@sammyshp.de> | 2011-08-29 09:04:32 +0200 |
| commit | 99be6fdac0c173ffe7d615122ccdbf646173d840 (patch) | |
| tree | 0d32af979849c8e45fdca17cf2f9fb06d1c79f59 /src | |
| parent | 014cc33bde044b20bcd53aae1d1e8763ea5028bb (diff) | |
| download | cgeo-99be6fdac0c173ffe7d615122ccdbf646173d840.zip cgeo-99be6fdac0c173ffe7d615122ccdbf646173d840.tar.gz cgeo-99be6fdac0c173ffe7d615122ccdbf646173d840.tar.bz2 | |
Cleanup cache-log-parsing
Diffstat (limited to 'src')
| -rw-r--r-- | src/cgeo/geocaching/cgBase.java | 106 |
1 files changed, 50 insertions, 56 deletions
diff --git a/src/cgeo/geocaching/cgBase.java b/src/cgeo/geocaching/cgBase.java index 93be447..03223c1 100644 --- a/src/cgeo/geocaching/cgBase.java +++ b/src/cgeo/geocaching/cgBase.java @@ -95,7 +95,6 @@ public class cgBase { private final static Pattern patternDesc = Pattern.compile("<span id=\"ctl00_ContentBody_LongDescription\"[^>]*>" + "(.*)</span>[^<]*</div>[^<]*<p>[^<]*</p>[^<]*<p>[^<]*<strong>\\W*Additional Hints</strong>", Pattern.CASE_INSENSITIVE); 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\"[^>]+> (\\d+)", 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[^>]+><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); @@ -1604,72 +1603,67 @@ public class cgBase { // cache logs try { -// final Matcher matcherLogs = patternLogs.matcher(page); -// -// if (matcherLogs.find()) -// { - /* - 1- Author - 2- Finds-count - 3- Log type image name (e.g. "icon_smile") - 4- Type string (e.g. "Found it") - 5- Date string (e.g. "04/28/2010") - 6- Log text - 7- The rest (e.g. log-images, maybe faster) - */ - final Matcher matcherLog = patternLog.matcher(page);//(matcherLogs.group(1)); + /* + 1- Author + 2- Finds-count + 3- Log type image name (e.g. "icon_smile") + 4- Type string (e.g. "Found it") + 5- Date string (e.g. "04/28/2010") + 6- Log text + 7- The rest (e.g. log-images, maybe faster) + */ + final Matcher matcherLog = patternLog.matcher(page);//(matcherLogs.group(1)); + + while (matcherLog.find()) + { + final cgLog logDone = new cgLog(); - while (matcherLog.find()) + if (logTypes.containsKey(matcherLog.group(3).toLowerCase())) { - final cgLog logDone = new cgLog(); - - if (logTypes.containsKey(matcherLog.group(3).toLowerCase())) - { - logDone.type = logTypes.get(matcherLog.group(3).toLowerCase()); - } - else - { - logDone.type = logTypes.get("icon_note"); - } + logDone.type = logTypes.get(matcherLog.group(3).toLowerCase()); + } + else + { + logDone.type = logTypes.get("icon_note"); + } - try - { - logDone.date = parseGcCustomDate(matcherLog.group(5)).getTime(); - } - catch (ParseException e) - { - Log.w(cgSettings.tag, "Failed to parse log date."); - } + try + { + logDone.date = parseGcCustomDate(matcherLog.group(5)).getTime(); + } + catch (ParseException e) + { + Log.w(cgSettings.tag, "Failed to parse log date."); + } - logDone.author = Html.fromHtml(matcherLog.group(1)).toString(); + logDone.author = Html.fromHtml(matcherLog.group(1)).toString(); - if (null != matcherLog.group(2)) - { - logDone.found = Integer.parseInt(matcherLog.group(2).replaceAll(",", "")); - } + if (null != matcherLog.group(2)) + { + logDone.found = Integer.parseInt(matcherLog.group(2).replaceAll(",", "")); + } - logDone.log = matcherLog.group(6); + logDone.log = matcherLog.group(6); - final Matcher matcherImg = patternLogImgs.matcher(matcherLog.group(7)); - while (matcherImg.find()) + final Matcher matcherImg = patternLogImgs.matcher(matcherLog.group(7)); + while (matcherImg.find()) + { + final cgImage logImage = new cgImage(); + logImage.url = matcherImg.group(1); + logImage.title = matcherImg.group(2); + if (logDone.logImages == null) { - final cgImage logImage = new cgImage(); - logImage.url = matcherImg.group(1); - logImage.title = matcherImg.group(2); - if (logDone.logImages == null) - { - logDone.logImages = new ArrayList<cgImage>(); - } - logDone.logImages.add(logImage); + logDone.logImages = new ArrayList<cgImage>(); } + logDone.logImages.add(logImage); + } - if (null == cache.logs) - { - cache.logs = new ArrayList<cgLog>(); - } - cache.logs.add(logDone); + if (null == cache.logs) + { + cache.logs = new ArrayList<cgLog>(); } -// } + cache.logs.add(logDone); + } } catch (Exception e) { |
