From 10668a019bb3f954b60543a7d72166b943be425a Mon Sep 17 00:00:00 2001 From: Anthony Restaino Date: Thu, 5 Feb 2015 15:33:23 -0500 Subject: [PATCH] Added a Reading Mode that can be accessed from the menu Reading Mode utilizes the Snacktory library created by karussel which is licensed under the Apache 2.0 license. https://github.com/karussell/snacktory --- AndroidManifest.xml | 11 + libs/jsoup-1.8.1.jar | Bin 0 -> 300844 bytes res/layout/license_activity.xml | 34 + res/layout/reading_view.xml | 39 ++ res/menu-xlarge/main.xml | 148 +++-- res/menu/main.xml | 1 + res/values/strings.xml | 4 + .../browser/lightning/BrowserActivity.java | 26 +- src/acr/browser/lightning/Constants.java | 2 + .../browser/lightning/LicenseActivity.java | 4 + .../Reading/ArticleTextExtractor.java | 619 ++++++++++++++++++ .../browser/lightning/Reading/Converter.java | 243 +++++++ .../lightning/Reading/HtmlFetcher.java | 445 +++++++++++++ .../lightning/Reading/ImageResult.java | 31 + .../browser/lightning/Reading/JResult.java | 216 ++++++ .../browser/lightning/Reading/MapEntry.java | 80 +++ .../lightning/Reading/OutputFormatter.java | 174 +++++ src/acr/browser/lightning/Reading/SCache.java | 29 + .../browser/lightning/Reading/SHelper.java | 480 ++++++++++++++ .../browser/lightning/ReadingActivity.java | 153 +++++ 20 files changed, 2659 insertions(+), 80 deletions(-) create mode 100644 libs/jsoup-1.8.1.jar create mode 100644 res/layout/reading_view.xml create mode 100644 src/acr/browser/lightning/Reading/ArticleTextExtractor.java create mode 100644 src/acr/browser/lightning/Reading/Converter.java create mode 100644 src/acr/browser/lightning/Reading/HtmlFetcher.java create mode 100644 src/acr/browser/lightning/Reading/ImageResult.java create mode 100644 src/acr/browser/lightning/Reading/JResult.java create mode 100644 src/acr/browser/lightning/Reading/MapEntry.java create mode 100644 src/acr/browser/lightning/Reading/OutputFormatter.java create mode 100644 src/acr/browser/lightning/Reading/SCache.java create mode 100644 src/acr/browser/lightning/Reading/SHelper.java create mode 100644 src/acr/browser/lightning/ReadingActivity.java diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 7b68d0c..5c2bcc0 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -200,6 +200,17 @@ + + + + + + + diff --git a/libs/jsoup-1.8.1.jar b/libs/jsoup-1.8.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..ae717d450e8c89511b3ff7a81ba57cf8b5711892 GIT binary patch literal 300844 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%0DnMd8BZ)s?cU!W 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%0A;4ot4V~a%apO}J@J9{D0C6%0 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

}k)5;9 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 z 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

%y=5vv@B-q}4E# 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 Z;GeH(P=L`PoIQenVm+bhb$}*_^?#Q)3HAU0 literal 0 HcmV?d00001 diff --git a/res/layout/license_activity.xml b/res/layout/license_activity.xml index 53a53f5..a9c024e 100644 --- a/res/layout/license_activity.xml +++ b/res/layout/license_activity.xml @@ -140,5 +140,39 @@ android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:background="#cdcdcd" /> + + + + + + + + + \ No newline at end of file diff --git a/res/layout/reading_view.xml b/res/layout/reading_view.xml new file mode 100644 index 0000000..c086420 --- /dev/null +++ b/res/layout/reading_view.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/res/menu-xlarge/main.xml b/res/menu-xlarge/main.xml index edf26c2..b9b33df 100644 --- a/res/menu-xlarge/main.xml +++ b/res/menu-xlarge/main.xml @@ -1,73 +1,77 @@ - - -

- - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/res/menu/main.xml b/res/menu/main.xml index a1a73a0..9631c95 100644 --- a/res/menu/main.xml +++ b/res/menu/main.xml @@ -23,6 +23,7 @@ + \ No newline at end of file diff --git a/res/values/strings.xml b/res/values/strings.xml index cc56b3a..05287d3 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -198,4 +198,8 @@ Block 3rd Party Cookies This feature is only available on Android 5.0+ Enable Color Mode + Reader Mode + Loading… + Couldn\'t load anything from the page. + Snacktory diff --git a/src/acr/browser/lightning/BrowserActivity.java b/src/acr/browser/lightning/BrowserActivity.java index c8a4e2b..966d80e 100644 --- a/src/acr/browser/lightning/BrowserActivity.java +++ b/src/acr/browser/lightning/BrowserActivity.java @@ -179,7 +179,7 @@ public class BrowserActivity extends ActionBarActivity implements BrowserControl mDrawerListRight.setDividerHeight(0); setNavigationDrawerWidth(); mDrawerLayout.setDrawerListener(new DrawerLocker()); - + mWebpageBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_webpage); mActionBar = getSupportActionBar(); final TypedArray styledAttributes = mContext.getTheme().obtainStyledAttributes( @@ -350,7 +350,7 @@ public class BrowserActivity extends ActionBarActivity implements BrowserControl }; anim.setDuration(300); anim.setInterpolator(new DecelerateInterpolator()); - anim.setAnimationListener(new AnimationListener(){ + anim.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation animation) { @@ -368,7 +368,7 @@ public class BrowserActivity extends ActionBarActivity implements BrowserControl @Override public void onAnimationRepeat(Animation animation) { } - + }); new Handler().postDelayed(new Runnable() { @@ -488,12 +488,12 @@ public class BrowserActivity extends ActionBarActivity implements BrowserControl checkForTor(); } - + private class DrawerLocker implements DrawerListener { @Override public void onDrawerClosed(View v) { - if(v == mDrawerRight){ + if (v == mDrawerRight) { mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, mDrawerLeft); } else { mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, mDrawerRight); @@ -502,7 +502,7 @@ public class BrowserActivity extends ActionBarActivity implements BrowserControl @Override public void onDrawerOpened(View v) { - if(v == mDrawerRight){ + if (v == mDrawerRight) { mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, mDrawerLeft); } else { mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, mDrawerRight); @@ -516,7 +516,7 @@ public class BrowserActivity extends ActionBarActivity implements BrowserControl @Override public void onDrawerStateChanged(int arg) { } - + } public boolean handleMenuItemClick(MenuItem item) { @@ -596,6 +596,11 @@ public class BrowserActivity extends ActionBarActivity implements BrowserControl case R.id.action_find: findInPage(); return true; + case R.id.action_reading_mode: + Intent read = new Intent(this, ReadingActivity.class); + read.putExtra(Constants.LOAD_READING_URL, mCurrentView.getUrl()); + startActivity(read); + return true; default: return super.onOptionsItemSelected(item); } @@ -912,6 +917,11 @@ public class BrowserActivity extends ActionBarActivity implements BrowserControl case R.id.action_find: findInPage(); return true; + case R.id.action_reading_mode: + Intent read = new Intent(this, ReadingActivity.class); + read.putExtra(Constants.LOAD_READING_URL, mCurrentView.getUrl()); + startActivity(read); + return true; default: return super.onOptionsItemSelected(item); } @@ -1622,7 +1632,7 @@ public class BrowserActivity extends ActionBarActivity implements BrowserControl } }); - + ViewCompat.jumpDrawablesToCurrentState(holder.exit); LightningView web = data.get(position); diff --git a/src/acr/browser/lightning/Constants.java b/src/acr/browser/lightning/Constants.java index da89b36..cfb6477 100644 --- a/src/acr/browser/lightning/Constants.java +++ b/src/acr/browser/lightning/Constants.java @@ -29,6 +29,8 @@ public final class Constants { public static final String JAVASCRIPT_INVERT_PAGE = "javascript:(function(){var e='img {-webkit-filter: invert(100%);'+'-moz-filter: invert(100%);'+'-o-filter: invert(100%);'+'-ms-filter: invert(100%); }',t=document.getElementsByTagName('head')[0],n=document.createElement('style');if(!window.counter){window.counter=1}else{window.counter++;if(window.counter%2==0){var e='html {-webkit-filter: invert(0%); -moz-filter: invert(0%); -o-filter: invert(0%); -ms-filter: invert(0%); }'}}n.type='text/css';if(n.styleSheet){n.styleSheet.cssText=e}else{n.appendChild(document.createTextNode(e))}t.appendChild(n)})();"; public static final String JAVASCRIPT_TEXT_REFLOW = "javascript:document.getElementsByTagName('body')[0].style.width=window.innerWidth+'px';"; + public static final String LOAD_READING_URL = "ReadingUrl"; + public static final String SEPARATOR = "\\|\\$\\|SEPARATOR\\|\\$\\|"; public static final String HTTP = "http://"; public static final String HTTPS = "https://"; diff --git a/src/acr/browser/lightning/LicenseActivity.java b/src/acr/browser/lightning/LicenseActivity.java index 15e9642..7b1885c 100644 --- a/src/acr/browser/lightning/LicenseActivity.java +++ b/src/acr/browser/lightning/LicenseActivity.java @@ -30,6 +30,7 @@ public class LicenseActivity extends ActionBarActivity implements View.OnClickLi findViewById(R.id.licenseAOSP).setOnClickListener(this); findViewById(R.id.licenseHosts).setOnClickListener(this); findViewById(R.id.licenseOrbot).setOnClickListener(this); + findViewById(R.id.licenseSnactory).setOnClickListener(this); } @Override @@ -47,6 +48,9 @@ public class LicenseActivity extends ActionBarActivity implements View.OnClickLi case R.id.licenseOrbot: actionView("http://www.gnu.org/licenses/lgpl.html"); break; + case R.id.licenseSnactory: + actionView("http://www.apache.org/licenses/LICENSE-2.0"); + break; } } diff --git a/src/acr/browser/lightning/Reading/ArticleTextExtractor.java b/src/acr/browser/lightning/Reading/ArticleTextExtractor.java new file mode 100644 index 0000000..3a9188a --- /dev/null +++ b/src/acr/browser/lightning/Reading/ArticleTextExtractor.java @@ -0,0 +1,619 @@ +package acr.browser.lightning.Reading; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashSet; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Set; +import java.util.regex.Pattern; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; + +import android.util.Log; + +/** + * This class is thread safe. + * + * @author Alex P (ifesdjeen from jreadability) + * @author Peter Karich + */ +public class ArticleTextExtractor { + + // Interessting nodes + private static final Pattern NODES = Pattern.compile("p|div|td|h1|h2|article|section"); + // Unlikely candidates + private String unlikelyStr; + private Pattern UNLIKELY; + // Most likely positive candidates + private String positiveStr; + private Pattern POSITIVE; + // Most likely negative candidates + private String negativeStr; + private Pattern NEGATIVE; + private static final Pattern NEGATIVE_STYLE = Pattern + .compile("hidden|display: ?none|font-size: ?small"); + private static final Set IGNORED_TITLE_PARTS = new LinkedHashSet() { + { + add("hacker news"); + add("facebook"); + } + }; + private static final OutputFormatter DEFAULT_FORMATTER = new OutputFormatter(); + private OutputFormatter formatter = DEFAULT_FORMATTER; + + public ArticleTextExtractor() { + setUnlikely("com(bx|ment|munity)|dis(qus|cuss)|e(xtra|[-]?mail)|foot|" + + "header|menu|re(mark|ply)|rss|sh(are|outbox)|sponsor" + + "a(d|ll|gegate|rchive|ttachment)|(pag(er|ination))|popup|print|" + + "login|si(debar|gn|ngle)"); + setPositive("(^(body|content|h?entry|main|page|post|text|blog|story|haupt))" + + "|arti(cle|kel)|instapaper_body"); + setNegative("nav($|igation)|user|com(ment|bx)|(^com-)|contact|" + + "foot|masthead|(me(dia|ta))|outbrain|promo|related|scroll|(sho(utbox|pping))|" + + "sidebar|sponsor|tags|tool|widget|player|disclaimer|toc|infobox|vcard"); + } + + public ArticleTextExtractor setUnlikely(String unlikelyStr) { + this.unlikelyStr = unlikelyStr; + UNLIKELY = Pattern.compile(unlikelyStr); + return this; + } + + public ArticleTextExtractor addUnlikely(String unlikelyMatches) { + return setUnlikely(unlikelyStr + "|" + unlikelyMatches); + } + + public ArticleTextExtractor setPositive(String positiveStr) { + this.positiveStr = positiveStr; + POSITIVE = Pattern.compile(positiveStr); + return this; + } + + public ArticleTextExtractor addPositive(String pos) { + return setPositive(positiveStr + "|" + pos); + } + + public ArticleTextExtractor setNegative(String negativeStr) { + this.negativeStr = negativeStr; + NEGATIVE = Pattern.compile(negativeStr); + return this; + } + + public ArticleTextExtractor addNegative(String neg) { + setNegative(negativeStr + "|" + neg); + return this; + } + + public void setOutputFormatter(OutputFormatter formatter) { + this.formatter = formatter; + } + + /** + * @param html + * extracts article text from given html string. wasn't tested + * with improper HTML, although jSoup should be able to handle + * minor stuff. + * @returns extracted article, all HTML tags stripped + */ + public JResult extractContent(Document doc) throws Exception { + return extractContent(new JResult(), doc, formatter); + } + + public JResult extractContent(Document doc, OutputFormatter formatter) throws Exception { + return extractContent(new JResult(), doc, formatter); + } + + public JResult extractContent(String html) throws Exception { + return extractContent(new JResult(), html); + } + + public JResult extractContent(JResult res, String html) throws Exception { + return extractContent(res, html, formatter); + } + + public JResult extractContent(JResult res, String html, OutputFormatter formatter) + throws Exception { + if (html.isEmpty()) + throw new IllegalArgumentException("html string is empty!?"); + + // http://jsoup.org/cookbook/extracting-data/selector-syntax + return extractContent(res, Jsoup.parse(html), formatter); + } + + public JResult extractContent(JResult res, Document doc, OutputFormatter formatter) + throws Exception { + if (doc == null) + throw new NullPointerException("missing document"); + + res.setTitle(extractTitle(doc)); + res.setDescription(extractDescription(doc)); + res.setCanonicalUrl(extractCanonicalUrl(doc)); + + // now remove the clutter + prepareDocument(doc); + + // init elements + Collection nodes = getNodes(doc); + int maxWeight = 0; + Element bestMatchElement = null; + for (Element entry : nodes) { + int currentWeight = getWeight(entry); + if (currentWeight > maxWeight) { + maxWeight = currentWeight; + bestMatchElement = entry; + if (maxWeight > 200) + break; + } + } + + if (bestMatchElement != null) { + List images = new ArrayList(); + Element imgEl = determineImageSource(bestMatchElement, images); + if (imgEl != null) { + res.setImageUrl(SHelper.replaceSpaces(imgEl.attr("src"))); + // TODO remove parent container of image if it is contained in + // bestMatchElement + // to avoid image subtitles flooding in + + res.setImages(images); + } + + // clean before grabbing text + String text = formatter.getFormattedText(bestMatchElement); + text = removeTitleFromText(text, res.getTitle()); + // this fails for short facebook post and probably tweets: + // text.length() > res.getDescription().length() + if (text.length() > res.getTitle().length()) { + res.setText(text); + // print("best element:", bestMatchElement); + } + res.setTextList(formatter.getTextList(bestMatchElement)); + } + + if (res.getImageUrl().isEmpty()) { + res.setImageUrl(extractImageUrl(doc)); + } + + res.setRssUrl(extractRssUrl(doc)); + res.setVideoUrl(extractVideoUrl(doc)); + res.setFaviconUrl(extractFaviconUrl(doc)); + res.setKeywords(extractKeywords(doc)); + return res; + } + + protected String extractTitle(Document doc) { + String title = cleanTitle(doc.title()); + if (title.isEmpty()) { + title = SHelper.innerTrim(doc.select("head title").text()); + if (title.isEmpty()) { + title = SHelper.innerTrim(doc.select("head meta[name=title]").attr("content")); + if (title.isEmpty()) { + title = SHelper.innerTrim(doc.select("head meta[property=og:title]").attr( + "content")); + if (title.isEmpty()) { + title = SHelper.innerTrim(doc.select("head meta[name=twitter:title]").attr( + "content")); + } + } + } + } + return title; + } + + protected String extractCanonicalUrl(Document doc) { + String url = SHelper.replaceSpaces(doc.select("head link[rel=canonical]").attr("href")); + if (url.isEmpty()) { + url = SHelper.replaceSpaces(doc.select("head meta[property=og:url]").attr("content")); + if (url.isEmpty()) { + url = SHelper.replaceSpaces(doc.select("head meta[name=twitter:url]").attr( + "content")); + } + } + return url; + } + + protected String extractDescription(Document doc) { + String description = SHelper.innerTrim(doc.select("head meta[name=description]").attr( + "content")); + if (description.isEmpty()) { + description = SHelper.innerTrim(doc.select("head meta[property=og:description]").attr( + "content")); + if (description.isEmpty()) { + description = SHelper.innerTrim(doc.select("head meta[name=twitter:description]") + .attr("content")); + } + } + return description; + } + + protected Collection extractKeywords(Document doc) { + String content = SHelper.innerTrim(doc.select("head meta[name=keywords]").attr("content")); + + if (content != null) { + if (content.startsWith("[") && content.endsWith("]")) + content = content.substring(1, content.length() - 1); + + String[] split = content.split("\\s*,\\s*"); + if (split.length > 1 || (split.length > 0 && !"".equals(split[0]))) + return Arrays.asList(split); + } + return Collections.emptyList(); + } + + /** + * Tries to extract an image url from metadata if determineImageSource + * failed + * + * @return image url or empty str + */ + protected String extractImageUrl(Document doc) { + // use open graph tag to get image + String imageUrl = SHelper.replaceSpaces(doc.select("head meta[property=og:image]").attr( + "content")); + if (imageUrl.isEmpty()) { + imageUrl = SHelper.replaceSpaces(doc.select("head meta[name=twitter:image]").attr( + "content")); + if (imageUrl.isEmpty()) { + // prefer link over thumbnail-meta if empty + imageUrl = SHelper.replaceSpaces(doc.select("link[rel=image_src]").attr("href")); + if (imageUrl.isEmpty()) { + imageUrl = SHelper.replaceSpaces(doc.select("head meta[name=thumbnail]").attr( + "content")); + } + } + } + return imageUrl; + } + + protected String extractRssUrl(Document doc) { + return SHelper.replaceSpaces(doc.select("link[rel=alternate]") + .select("link[type=application/rss+xml]").attr("href")); + } + + protected String extractVideoUrl(Document doc) { + return SHelper.replaceSpaces(doc.select("head meta[property=og:video]").attr("content")); + } + + protected String extractFaviconUrl(Document doc) { + String faviconUrl = SHelper.replaceSpaces(doc.select("head link[rel=icon]").attr("href")); + if (faviconUrl.isEmpty()) { + faviconUrl = SHelper.replaceSpaces(doc.select( + "head link[rel^=shortcut],link[rel$=icon]").attr("href")); + } + return faviconUrl; + } + + /** + * Weights current element. By matching it with positive candidates and + * weighting child nodes. Since it's impossible to predict which exactly + * names, ids or class names will be used in HTML, major role is played by + * child nodes + * + * @param e + * Element to weight, along with child nodes + */ + protected int getWeight(Element e) { + int weight = calcWeight(e); + weight += (int) Math.round(e.ownText().length() / 100.0 * 10); + weight += weightChildNodes(e); + return weight; + } + + /** + * Weights a child nodes of given Element. During tests some difficulties + * were met. For instanance, not every single document has nested paragraph + * tags inside of the major article tag. Sometimes people are adding one + * more nesting level. So, we're adding 4 points for every 100 symbols + * contained in tag nested inside of the current weighted element, but only + * 3 points for every element that's nested 2 levels deep. This way we give + * more chances to extract the element that has less nested levels, + * increasing probability of the correct extraction. + * + * @param rootEl + * Element, who's child nodes will be weighted + */ + protected int weightChildNodes(Element rootEl) { + int weight = 0; + Element caption = null; + List pEls = new ArrayList(5); + for (Element child : rootEl.children()) { + String ownText = child.ownText(); + int ownTextLength = ownText.length(); + if (ownTextLength < 20) + continue; + + if (ownTextLength > 200) + weight += Math.max(50, ownTextLength / 10); + + if (child.tagName().equals("h1") || child.tagName().equals("h2")) { + weight += 30; + } else if (child.tagName().equals("div") || child.tagName().equals("p")) { + weight += calcWeightForChild(child, ownText); + if (child.tagName().equals("p") && ownTextLength > 50) + pEls.add(child); + + if (child.className().toLowerCase(Locale.getDefault()).equals("caption")) + caption = child; + } + } + + // use caption and image + if (caption != null) + weight += 30; + + if (pEls.size() >= 2) { + for (Element subEl : rootEl.children()) { + if ("h1;h2;h3;h4;h5;h6".contains(subEl.tagName())) { + weight += 20; + // headerEls.add(subEl); + } else if ("table;li;td;th".contains(subEl.tagName())) { + addScore(subEl, -30); + } + + if ("p".contains(subEl.tagName())) + addScore(subEl, 30); + } + } + return weight; + } + + public void addScore(Element el, int score) { + int old = getScore(el); + setScore(el, score + old); + } + + public int getScore(Element el) { + int old = 0; + try { + old = Integer.parseInt(el.attr("gravityScore")); + } catch (Exception ex) { + } + return old; + } + + public void setScore(Element el, int score) { + el.attr("gravityScore", Integer.toString(score)); + } + + private int calcWeightForChild(Element child, String ownText) { + int c = SHelper.count(ownText, """); + c += SHelper.count(ownText, "<"); + c += SHelper.count(ownText, ">"); + c += SHelper.count(ownText, "px"); + int val; + if (c > 5) + val = -30; + else + val = (int) Math.round(ownText.length() / 25.0); + + addScore(child, val); + return val; + } + + private int calcWeight(Element e) { + int weight = 0; + if (POSITIVE.matcher(e.className()).find()) + weight += 35; + + if (POSITIVE.matcher(e.id()).find()) + weight += 40; + + if (UNLIKELY.matcher(e.className()).find()) + weight -= 20; + + if (UNLIKELY.matcher(e.id()).find()) + weight -= 20; + + if (NEGATIVE.matcher(e.className()).find()) + weight -= 50; + + if (NEGATIVE.matcher(e.id()).find()) + weight -= 50; + + String style = e.attr("style"); + if (style != null && !style.isEmpty() && NEGATIVE_STYLE.matcher(style).find()) + weight -= 50; + return weight; + } + + public Element determineImageSource(Element el, List images) { + int maxWeight = 0; + Element maxNode = null; + Elements els = el.select("img"); + if (els.isEmpty()) + els = el.parent().select("img"); + + double score = 1; + for (Element e : els) { + String sourceUrl = e.attr("src"); + if (sourceUrl.isEmpty() || isAdImage(sourceUrl)) + continue; + + int weight = 0; + int height = 0; + try { + height = Integer.parseInt(e.attr("height")); + if (height >= 50) + weight += 20; + else + weight -= 20; + } catch (Exception ex) { + } + + int width = 0; + try { + width = Integer.parseInt(e.attr("width")); + if (width >= 50) + weight += 20; + else + weight -= 20; + } catch (Exception ex) { + } + String alt = e.attr("alt"); + if (alt.length() > 35) + weight += 20; + + String title = e.attr("title"); + if (title.length() > 35) + weight += 20; + + String rel = null; + boolean noFollow = false; + if (e.parent() != null) { + rel = e.parent().attr("rel"); + if (rel != null && rel.contains("nofollow")) { + noFollow = rel.contains("nofollow"); + weight -= 40; + } + } + + weight = (int) (weight * score); + if (weight > maxWeight) { + maxWeight = weight; + maxNode = e; + score = score / 2; + } + + ImageResult image = new ImageResult(sourceUrl, weight, title, height, width, alt, + noFollow); + images.add(image); + } + + Collections.sort(images, new ImageComparator()); + return maxNode; + } + + /** + * Prepares document. Currently only stipping unlikely candidates, since + * from time to time they're getting more score than good ones especially in + * cases when major text is short. + * + * @param doc + * document to prepare. Passed as reference, and changed inside + * of function + */ + protected void prepareDocument(Document doc) { + // stripUnlikelyCandidates(doc); + removeScriptsAndStyles(doc); + } + + /** + * Removes unlikely candidates from HTML. Currently takes id and class name + * and matches them against list of patterns + * + * @param doc + * document to strip unlikely candidates from + */ + protected void stripUnlikelyCandidates(Document doc) { + for (Element child : doc.select("body").select("*")) { + String className = child.className().toLowerCase(Locale.getDefault()); + String id = child.id().toLowerCase(Locale.getDefault()); + + if (NEGATIVE.matcher(className).find() || NEGATIVE.matcher(id).find()) { + // print("REMOVE:", child); + child.remove(); + } + } + } + + private Document removeScriptsAndStyles(Document doc) { + Elements scripts = doc.getElementsByTag("script"); + for (Element item : scripts) { + item.remove(); + } + + Elements noscripts = doc.getElementsByTag("noscript"); + for (Element item : noscripts) { + item.remove(); + } + + Elements styles = doc.getElementsByTag("style"); + for (Element style : styles) { + style.remove(); + } + + return doc; + } + + private boolean isAdImage(String imageUrl) { + return SHelper.count(imageUrl, "ad") >= 2; + } + + /** + * Match only exact matching as longestSubstring can be too fuzzy + */ + public String removeTitleFromText(String text, String title) { + // don't do this as its terrible to read + // int index1 = text.toLowerCase().indexOf(title.toLowerCase()); + // if (index1 >= 0) + // text = text.substring(index1 + title.length()); + // return text.trim(); + return text; + } + + /** + * @return a set of all important nodes + */ + public Collection getNodes(Document doc) { + Set nodes = new HashSet(64); + int score = 100; + for (Element el : doc.select("body").select("*")) { + if (NODES.matcher(el.tagName()).matches()) { + nodes.add(el); + setScore(el, score); + score = score / 2; + } + } + return nodes; + + } + + public String cleanTitle(String title) { + StringBuilder res = new StringBuilder(); + // int index = title.lastIndexOf("|"); + // if (index > 0 && title.length() / 2 < index) + // title = title.substring(0, index + 1); + + int counter = 0; + String[] strs = title.split("\\|"); + for (String part : strs) { + if (IGNORED_TITLE_PARTS.contains(part.toLowerCase(Locale.getDefault()).trim())) + continue; + + if (counter == strs.length - 1 && res.length() > part.length()) + continue; + + if (counter > 0) + res.append("|"); + + res.append(part); + counter++; + } + + return SHelper.innerTrim(res.toString()); + } + + /** + * Comparator for Image by weight + * + * @author Chris Alexander, chris@chris-alexander.co.uk + * + */ + public class ImageComparator implements Comparator { + + @Override + public int compare(ImageResult o1, ImageResult o2) { + // Returns the highest weight first + return o2.weight.compareTo(o1.weight); + } + } +} \ No newline at end of file diff --git a/src/acr/browser/lightning/Reading/Converter.java b/src/acr/browser/lightning/Reading/Converter.java new file mode 100644 index 0000000..4ed3178 --- /dev/null +++ b/src/acr/browser/lightning/Reading/Converter.java @@ -0,0 +1,243 @@ +/* + * Copyright 2011 Peter Karich + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package acr.browser.lightning.Reading; + +import java.io.*; +import java.net.SocketTimeoutException; +import java.nio.charset.Charset; +import java.util.Locale; + +import acr.browser.lightning.Constants; +import android.util.Log; + +/** + * This class is not thread safe. Use one new instance every time due to + * encoding variable. + * + * @author Peter Karich + */ +public class Converter { + + public final static String UTF8 = "UTF-8"; + public final static String ISO = "ISO-8859-1"; + public final static int K2 = 2048; + private int maxBytes = 1000000 / 2; + private String encoding; + private String url; + + public Converter(String urlOnlyHint) { + url = urlOnlyHint; + } + + public Converter() { + } + + public Converter setMaxBytes(int maxBytes) { + this.maxBytes = maxBytes; + return this; + } + + public static String extractEncoding(String contentType) { + String[] values; + if (contentType != null) + values = contentType.split(";"); + else + values = new String[0]; + + String charset = ""; + + for (String value : values) { + value = value.trim().toLowerCase(Locale.getDefault()); + + if (value.startsWith("charset=")) + charset = value.substring("charset=".length()); + } + + // http1.1 says ISO-8859-1 is the default charset + if (charset.length() == 0) + charset = ISO; + + return charset; + } + + public String getEncoding() { + if (encoding == null) + return ""; + return encoding.toLowerCase(Locale.getDefault()); + } + + public String streamToString(InputStream is) { + return streamToString(is, maxBytes, encoding); + } + + public String streamToString(InputStream is, String enc) { + return streamToString(is, maxBytes, enc); + } + + /** + * reads bytes off the string and returns a string + * + * @param is + * @param maxBytes + * The max bytes that we want to read from the input stream + * @return String + */ + public String streamToString(InputStream is, int maxBytes, String enc) { + encoding = enc; + // Http 1.1. standard is iso-8859-1 not utf8 :( + // but we force utf-8 as youtube assumes it ;) + if (encoding == null || encoding.isEmpty()) + encoding = UTF8; + + BufferedInputStream in = null; + try { + in = new BufferedInputStream(is, K2); + ByteArrayOutputStream output = new ByteArrayOutputStream(); + + // detect encoding with the help of meta tag + try { + in.mark(K2 * 2); + String tmpEnc = detectCharset("charset=", output, in, encoding); + if (tmpEnc != null) + encoding = tmpEnc; + else { + Log.d(Constants.TAG, "no charset found in first stage"); + // detect with the help of xml beginning ala + // encoding="charset" + tmpEnc = detectCharset("encoding=", output, in, encoding); + if (tmpEnc != null) + encoding = tmpEnc; + else + Log.d(Constants.TAG, "no charset found in second stage"); + } + + if (!Charset.isSupported(encoding)) + throw new UnsupportedEncodingException(encoding); + } catch (UnsupportedEncodingException e) { + Log.d(Constants.TAG, + "Using default encoding:" + UTF8 + " problem:" + e.getMessage() + + " encoding:" + encoding + " " + url); + encoding = UTF8; + } + + // SocketException: Connection reset + // IOException: missing CR => problem on server (probably some xml + // character thing?) + // IOException: Premature EOF => socket unexpectly closed from + // server + int bytesRead = output.size(); + byte[] arr = new byte[K2]; + while (true) { + if (bytesRead >= maxBytes) { + Log.d(Constants.TAG, "Maxbyte of " + maxBytes + + " exceeded! Maybe html is now broken but try it nevertheless. Url: " + + url); + break; + } + + int n = in.read(arr); + if (n < 0) + break; + bytesRead += n; + output.write(arr, 0, n); + } + + return output.toString(encoding); + } catch (SocketTimeoutException e) { + Log.e(Constants.TAG, e.toString() + " url:" + url); + } catch (IOException e) { + Log.e(Constants.TAG, e.toString() + " url:" + url); + } finally { + if (in != null) { + try { + in.close(); + } catch (Exception e) { + } + } + } + return ""; + } + + /** + * This method detects the charset even if the first call only returns some + * bytes. It will read until 4K bytes are reached and then try to determine + * the encoding + * + * @throws IOException + */ + protected String detectCharset(String key, ByteArrayOutputStream bos, BufferedInputStream in, + String enc) throws IOException { + + // Grab better encoding from stream + byte[] arr = new byte[K2]; + int nSum = 0; + while (nSum < K2) { + int n = in.read(arr); + if (n < 0) + break; + + nSum += n; + bos.write(arr, 0, n); + } + + String str = bos.toString(enc); + int encIndex = str.indexOf(key); + int clength = key.length(); + if (encIndex > 0) { + char startChar = str.charAt(encIndex + clength); + int lastEncIndex; + if (startChar == '\'') + // if we have charset='something' + lastEncIndex = str.indexOf("'", ++encIndex + clength); + else if (startChar == '\"') + // if we have charset="something" + lastEncIndex = str.indexOf("\"", ++encIndex + clength); + else { + // if we have "text/html; charset=utf-8" + int first = str.indexOf("\"", encIndex + clength); + if (first < 0) + first = Integer.MAX_VALUE; + + // or "text/html; charset=utf-8 " + int sec = str.indexOf(" ", encIndex + clength); + if (sec < 0) + sec = Integer.MAX_VALUE; + lastEncIndex = Math.min(first, sec); + + // or "text/html; charset=utf-8 ' + int third = str.indexOf("'", encIndex + clength); + if (third > 0) + lastEncIndex = Math.min(lastEncIndex, third); + } + + // re-read byte array with different encoding + // assume that the encoding string cannot be greater than 40 chars + if (lastEncIndex > encIndex + clength && lastEncIndex < encIndex + clength + 40) { + String tmpEnc = SHelper.encodingCleanup(str.substring(encIndex + clength, + lastEncIndex)); + try { + in.reset(); + bos.reset(); + return tmpEnc; + } catch (IOException ex) { + Log.e(Constants.TAG, "Couldn't reset stream to re-read with new encoding " + + tmpEnc + " " + ex.toString()); + } + } + } + return null; + } +} diff --git a/src/acr/browser/lightning/Reading/HtmlFetcher.java b/src/acr/browser/lightning/Reading/HtmlFetcher.java new file mode 100644 index 0000000..c597193 --- /dev/null +++ b/src/acr/browser/lightning/Reading/HtmlFetcher.java @@ -0,0 +1,445 @@ +/* + * Copyright 2011 Peter Karich + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package acr.browser.lightning.Reading; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.Proxy; +import java.net.URL; +import java.util.LinkedHashSet; +import java.util.Locale; +import java.util.Set; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.zip.GZIPInputStream; +import java.util.zip.Inflater; +import java.util.zip.InflaterInputStream; + +import acr.browser.lightning.Constants; +import android.util.Log; + +/** + * Class to fetch articles. This class is thread safe. + * + * @author Peter Karich + */ +public class HtmlFetcher { + + static { + SHelper.enableCookieMgmt(); + SHelper.enableUserAgentOverwrite(); + SHelper.enableAnySSL(); + } + + public static void main(String[] args) throws Exception { + BufferedReader reader = new BufferedReader(new FileReader("urls.txt")); + String line = null; + Set existing = new LinkedHashSet(); + while ((line = reader.readLine()) != null) { + int index1 = line.indexOf("\""); + int index2 = line.indexOf("\"", index1 + 1); + String url = line.substring(index1 + 1, index2); + String domainStr = SHelper.extractDomain(url, true); + String counterStr = ""; + // TODO more similarities + if (existing.contains(domainStr)) + counterStr = "2"; + else + existing.add(domainStr); + + String html = new HtmlFetcher().fetchAsString(url, 20000); + String outFile = domainStr + counterStr + ".html"; + BufferedWriter writer = new BufferedWriter(new FileWriter(outFile)); + writer.write(html); + writer.close(); + } + reader.close(); + } + + private String referrer = "https://github.com/karussell/snacktory"; + private String userAgent = "Mozilla/5.0 (compatible; Snacktory; +" + referrer + ")"; + private String cacheControl = "max-age=0"; + private String language = "en-us"; + private String accept = "application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"; + private String charset = "UTF-8"; + private SCache cache; + private AtomicInteger cacheCounter = new AtomicInteger(0); + private int maxTextLength = -1; + private ArticleTextExtractor extractor = new ArticleTextExtractor(); + private Set furtherResolveNecessary = new LinkedHashSet() { + { + add("bit.ly"); + add("cli.gs"); + add("deck.ly"); + add("fb.me"); + add("feedproxy.google.com"); + add("flic.kr"); + add("fur.ly"); + add("goo.gl"); + add("is.gd"); + add("ink.co"); + add("j.mp"); + add("lnkd.in"); + add("on.fb.me"); + add("ow.ly"); + add("plurl.us"); + add("sns.mx"); + add("snurl.com"); + add("su.pr"); + add("t.co"); + add("tcrn.ch"); + add("tl.gd"); + add("tiny.cc"); + add("tinyurl.com"); + add("tmi.me"); + add("tr.im"); + add("twurl.nl"); + } + }; + + public HtmlFetcher() { + } + + public void setExtractor(ArticleTextExtractor extractor) { + this.extractor = extractor; + } + + public ArticleTextExtractor getExtractor() { + return extractor; + } + + public HtmlFetcher setCache(SCache cache) { + this.cache = cache; + return this; + } + + public SCache getCache() { + return cache; + } + + public int getCacheCounter() { + return cacheCounter.get(); + } + + public HtmlFetcher clearCacheCounter() { + cacheCounter.set(0); + return this; + } + + public HtmlFetcher setMaxTextLength(int maxTextLength) { + this.maxTextLength = maxTextLength; + return this; + } + + public int getMaxTextLength() { + return maxTextLength; + } + + public void setAccept(String accept) { + this.accept = accept; + } + + public void setCharset(String charset) { + this.charset = charset; + } + + public void setCacheControl(String cacheControl) { + this.cacheControl = cacheControl; + } + + public String getLanguage() { + return language; + } + + public void setLanguage(String language) { + this.language = language; + } + + public String getReferrer() { + return referrer; + } + + public HtmlFetcher setReferrer(String referrer) { + this.referrer = referrer; + return this; + } + + public String getUserAgent() { + return userAgent; + } + + public void setUserAgent(String userAgent) { + this.userAgent = userAgent; + } + + public String getAccept() { + return accept; + } + + public String getCacheControl() { + return cacheControl; + } + + public String getCharset() { + return charset; + } + + public JResult fetchAndExtract(String url, int timeout, boolean resolve) throws Exception { + String originalUrl = url; + url = SHelper.removeHashbang(url); + String gUrl = SHelper.getUrlFromUglyGoogleRedirect(url); + if (gUrl != null) + url = gUrl; + else { + gUrl = SHelper.getUrlFromUglyFacebookRedirect(url); + if (gUrl != null) + url = gUrl; + } + + if (resolve) { + // check if we can avoid resolving the URL (which hits the website!) + JResult res = getFromCache(url, originalUrl); + if (res != null) + return res; + + String resUrl = getResolvedUrl(url, timeout); + if (resUrl.isEmpty()) { + Log.d(Constants.TAG, "resolved url is empty. Url is: " + url); + + JResult result = new JResult(); + if (cache != null) + cache.put(url, result); + return result.setUrl(url); + } + + // if resolved url is longer then use it! + if (resUrl != null && resUrl.trim().length() > url.length()) { + // this is necessary e.g. for some homebaken url resolvers which + // return + // the resolved url relative to url! + url = SHelper.useDomainOfFirstArg4Second(url, resUrl); + } + } + + // check if we have the (resolved) URL in cache + JResult res = getFromCache(url, originalUrl); + if (res != null) + return res; + + JResult result = new JResult(); + // or should we use? + result.setUrl(url); + result.setOriginalUrl(originalUrl); + result.setDate(SHelper.estimateDate(url)); + + // Immediately put the url into the cache as extracting content takes + // time. + if (cache != null) { + cache.put(originalUrl, result); + cache.put(url, result); + } + + String lowerUrl = url.toLowerCase(Locale.getDefault()); + if (SHelper.isDoc(lowerUrl) || SHelper.isApp(lowerUrl) || SHelper.isPackage(lowerUrl)) { + // skip + } else if (SHelper.isVideo(lowerUrl) || SHelper.isAudio(lowerUrl)) { + result.setVideoUrl(url); + } else if (SHelper.isImage(lowerUrl)) { + result.setImageUrl(url); + } else { + extractor.extractContent(result, fetchAsString(url, timeout)); + if (result.getFaviconUrl().isEmpty()) + result.setFaviconUrl(SHelper.getDefaultFavicon(url)); + + // some links are relative to root and do not include the domain of + // the url :( + result.setFaviconUrl(fixUrl(url, result.getFaviconUrl())); + result.setImageUrl(fixUrl(url, result.getImageUrl())); + result.setVideoUrl(fixUrl(url, result.getVideoUrl())); + result.setRssUrl(fixUrl(url, result.getRssUrl())); + } + result.setText(lessText(result.getText())); + synchronized (result) { + result.notifyAll(); + } + return result; + } + + public String lessText(String text) { + if (text == null) + return ""; + + if (maxTextLength >= 0 && text.length() > maxTextLength) + return text.substring(0, maxTextLength); + + return text; + } + + private static String fixUrl(String url, String urlOrPath) { + return SHelper.useDomainOfFirstArg4Second(url, urlOrPath); + } + + public String fetchAsString(String urlAsString, int timeout) throws MalformedURLException, + IOException { + return fetchAsString(urlAsString, timeout, true); + } + + public String fetchAsString(String urlAsString, int timeout, boolean includeSomeGooseOptions) + throws MalformedURLException, IOException { + HttpURLConnection hConn = createUrlConnection(urlAsString, timeout, includeSomeGooseOptions); + hConn.setInstanceFollowRedirects(true); + String encoding = hConn.getContentEncoding(); + InputStream is; + if (encoding != null && encoding.equalsIgnoreCase("gzip")) { + is = new GZIPInputStream(hConn.getInputStream()); + } else if (encoding != null && encoding.equalsIgnoreCase("deflate")) { + is = new InflaterInputStream(hConn.getInputStream(), new Inflater(true)); + } else { + is = hConn.getInputStream(); + } + + String enc = Converter.extractEncoding(hConn.getContentType()); + String res = createConverter(urlAsString).streamToString(is, enc); + Log.d(Constants.TAG, res.length() + " FetchAsString:" + urlAsString); + return res; + } + + public Converter createConverter(String url) { + return new Converter(url); + } + + /** + * On some devices we have to hack: + * http://developers.sun.com/mobility/reference + * /techart/design_guidelines/http_redirection.html + * + * @param timeout + * Sets a specified timeout value, in milliseconds + * @return the resolved url if any. Or null if it couldn't resolve the url + * (within the specified time) or the same url if response code is + * OK + */ + public String getResolvedUrl(String urlAsString, int timeout) { + String newUrl = null; + int responseCode = -1; + try { + HttpURLConnection hConn = createUrlConnection(urlAsString, timeout, true); + // force no follow + hConn.setInstanceFollowRedirects(false); + // the program doesn't care what the content actually is !! + // http://java.sun.com/developer/JDCTechTips/2003/tt0422.html + hConn.setRequestMethod("HEAD"); + hConn.connect(); + responseCode = hConn.getResponseCode(); + hConn.getInputStream().close(); + if (responseCode == HttpURLConnection.HTTP_OK) + return urlAsString; + + newUrl = hConn.getHeaderField("Location"); + if (responseCode / 100 == 3 && newUrl != null) { + newUrl = newUrl.replaceAll(" ", "+"); + // some services use (none-standard) utf8 in their location + // header + if (urlAsString.startsWith("http://bit.ly") + || urlAsString.startsWith("http://is.gd")) + newUrl = encodeUriFromHeader(newUrl); + + // fix problems if shortened twice. as it is often the case + // after twitters' t.co bullshit + if (furtherResolveNecessary.contains(SHelper.extractDomain(newUrl, true))) + newUrl = getResolvedUrl(newUrl, timeout); + + return newUrl; + } else + return urlAsString; + + } catch (Exception ex) { + Log.e(Constants.TAG, "getResolvedUrl:" + urlAsString + " Error:" + ex.getMessage()); + return ""; + } finally { + Log.e(Constants.TAG, responseCode + " url:" + urlAsString + " resolved:" + newUrl); + } + } + + /** + * Takes a URI that was decoded as ISO-8859-1 and applies percent-encoding + * to non-ASCII characters. Workaround for broken origin servers that send + * UTF-8 in the Location: header. + */ + static String encodeUriFromHeader(String badLocation) { + StringBuilder sb = new StringBuilder(); + + for (char ch : badLocation.toCharArray()) { + if (ch < (char) 128) { + sb.append(ch); + } else { + // this is ONLY valid if the uri was decoded using ISO-8859-1 + sb.append(String.format("%%%02X", (int) ch)); + } + } + + return sb.toString(); + } + + protected HttpURLConnection createUrlConnection(String urlAsStr, int timeout, + boolean includeSomeGooseOptions) throws MalformedURLException, IOException { + URL url = new URL(urlAsStr); + // using proxy may increase latency + HttpURLConnection hConn = (HttpURLConnection) url.openConnection(Proxy.NO_PROXY); + hConn.setRequestProperty("User-Agent", userAgent); + hConn.setRequestProperty("Accept", accept); + + if (includeSomeGooseOptions) { + hConn.setRequestProperty("Accept-Language", language); + hConn.setRequestProperty("content-charset", charset); + hConn.addRequestProperty("Referer", referrer); + // avoid the cache for testing purposes only? + hConn.setRequestProperty("Cache-Control", cacheControl); + } + + // suggest respond to be gzipped or deflated (which is just another + // compression) + // http://stackoverflow.com/q/3932117 + hConn.setRequestProperty("Accept-Encoding", "gzip, deflate"); + hConn.setConnectTimeout(timeout); + hConn.setReadTimeout(timeout); + return hConn; + } + + private JResult getFromCache(String url, String originalUrl) throws Exception { + if (cache != null) { + JResult res = cache.get(url); + if (res != null) { + // e.g. the cache returned a shortened url as original url now + // we want to store the + // current original url! Also it can be that the cache response + // to url but the JResult + // does not contain it so overwrite it: + res.setUrl(url); + res.setOriginalUrl(originalUrl); + cacheCounter.addAndGet(1); + return res; + } + } + return null; + } +} diff --git a/src/acr/browser/lightning/Reading/ImageResult.java b/src/acr/browser/lightning/Reading/ImageResult.java new file mode 100644 index 0000000..2a8321e --- /dev/null +++ b/src/acr/browser/lightning/Reading/ImageResult.java @@ -0,0 +1,31 @@ +package acr.browser.lightning.Reading; + +import org.jsoup.nodes.Element; + +/** + * Class which encapsulates the data from an image found under an element + * + * @author Chris Alexander, chris@chris-alexander.co.uk + */ +public class ImageResult { + + public String src; + public Integer weight; + public String title; + public int height; + public int width; + public String alt; + public boolean noFollow; + public Element element; + + public ImageResult(String src, Integer weight, String title, int height, int width, String alt, + boolean noFollow) { + this.src = src; + this.weight = weight; + this.title = title; + this.height = height; + this.width = width; + this.alt = alt; + this.noFollow = noFollow; + } +} diff --git a/src/acr/browser/lightning/Reading/JResult.java b/src/acr/browser/lightning/Reading/JResult.java new file mode 100644 index 0000000..50ae5ea --- /dev/null +++ b/src/acr/browser/lightning/Reading/JResult.java @@ -0,0 +1,216 @@ +/* + * Copyright 2011 Peter Karich + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package acr.browser.lightning.Reading; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + +/** + * Parsed result from web page containing important title, text and image. + * + * @author Peter Karich + */ +public class JResult implements Serializable { + + private String title; + private String url; + private String originalUrl; + private String canonicalUrl; + private String imageUrl; + private String videoUrl; + private String rssUrl; + private String text; + private String faviconUrl; + private String description; + private String dateString; + private List textList; + private Collection keywords; + private List images = null; + + public JResult() { + } + + public String getUrl() { + if (url == null) + return ""; + return url; + } + + public JResult setUrl(String url) { + this.url = url; + return this; + } + + public JResult setOriginalUrl(String originalUrl) { + this.originalUrl = originalUrl; + return this; + } + + public String getOriginalUrl() { + return originalUrl; + } + + public JResult setCanonicalUrl(String canonicalUrl) { + this.canonicalUrl = canonicalUrl; + return this; + } + + public String getCanonicalUrl() { + return canonicalUrl; + } + + public String getFaviconUrl() { + if (faviconUrl == null) + return ""; + return faviconUrl; + } + + public JResult setFaviconUrl(String faviconUrl) { + this.faviconUrl = faviconUrl; + return this; + } + + public JResult setRssUrl(String rssUrl) { + this.rssUrl = rssUrl; + return this; + } + + public String getRssUrl() { + if (rssUrl == null) + return ""; + return rssUrl; + } + + public String getDescription() { + if (description == null) + return ""; + return description; + } + + public JResult setDescription(String description) { + this.description = description; + return this; + } + + public String getImageUrl() { + if (imageUrl == null) + return ""; + return imageUrl; + } + + public JResult setImageUrl(String imageUrl) { + this.imageUrl = imageUrl; + return this; + } + + public String getText() { + if (text == null) + return ""; + + return text; + } + + public JResult setText(String text) { + this.text = text; + return this; + } + + public List getTextList() { + if (this.textList == null) + return new ArrayList(); + return this.textList; + } + + public JResult setTextList(List textList) { + this.textList = textList; + return this; + } + + public String getTitle() { + if (title == null) + return ""; + return title; + } + + public JResult setTitle(String title) { + this.title = title; + return this; + } + + public String getVideoUrl() { + if (videoUrl == null) + return ""; + return videoUrl; + } + + public JResult setVideoUrl(String videoUrl) { + this.videoUrl = videoUrl; + return this; + } + + public JResult setDate(String date) { + this.dateString = date; + return this; + } + + public Collection getKeywords() { + return keywords; + } + + public void setKeywords(Collection keywords) { + this.keywords = keywords; + } + + /** + * @return get date from url or guessed from text + */ + public String getDate() { + return dateString; + } + + /** + * @return images list + */ + public List getImages() { + if (images == null) + return Collections.emptyList(); + return images; + } + + /** + * @return images count + */ + public int getImagesCount() { + if (images == null) + return 0; + return images.size(); + } + + /** + * set images list + */ + public void setImages(List images) { + this.images = images; + } + + @Override + public String toString() { + return "title:" + getTitle() + " imageUrl:" + getImageUrl() + " text:" + text; + } +} diff --git a/src/acr/browser/lightning/Reading/MapEntry.java b/src/acr/browser/lightning/Reading/MapEntry.java new file mode 100644 index 0000000..31e7c36 --- /dev/null +++ b/src/acr/browser/lightning/Reading/MapEntry.java @@ -0,0 +1,80 @@ +/** + * Copyright (C) 2010 Peter Karich <> + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package acr.browser.lightning.Reading; + +import java.io.Serializable; +import java.util.Map; + +/** + * Simple impl of Map.Entry. So that we can have ordered maps. + * + * @author Peter Karich, peat_hal ‘at’ users ‘dot’ sourceforge ‘dot’ + * net + */ +public class MapEntry implements Map.Entry, Serializable { + + private static final long serialVersionUID = 1L; + private K key; + private V value; + + public MapEntry(K key, V value) { + this.key = key; + this.value = value; + } + + @Override + public K getKey() { + return key; + } + + @Override + public V getValue() { + return value; + } + + @Override + public V setValue(V value) { + this.value = value; + return value; + } + + @Override + public String toString() { + return getKey() + ", " + getValue(); + } + + @Override + public boolean equals(Object obj) { + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + final MapEntry other = (MapEntry) obj; + if (this.key != other.key && (this.key == null || !this.key.equals(other.key))) + return false; + if (this.value != other.value && (this.value == null || !this.value.equals(other.value))) + return false; + return true; + } + + @Override + public int hashCode() { + int hash = 7; + hash = 19 * hash + (this.key != null ? this.key.hashCode() : 0); + hash = 19 * hash + (this.value != null ? this.value.hashCode() : 0); + return hash; + } +} diff --git a/src/acr/browser/lightning/Reading/OutputFormatter.java b/src/acr/browser/lightning/Reading/OutputFormatter.java new file mode 100644 index 0000000..c456b1a --- /dev/null +++ b/src/acr/browser/lightning/Reading/OutputFormatter.java @@ -0,0 +1,174 @@ +package acr.browser.lightning.Reading; + +import org.jsoup.Jsoup; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Locale; +import java.util.regex.Pattern; +import org.jsoup.nodes.Node; +import org.jsoup.nodes.TextNode; + +/** + * @author goose | jim + * @author karussell + * + * this class will be responsible for taking our top node and stripping + * out junk we don't want and getting it ready for how we want it + * presented to the user + */ +public class OutputFormatter { + + public static final int MIN_PARAGRAPH_TEXT = 50; + private static final List NODES_TO_REPLACE = Arrays.asList("strong", "b", "i"); + private Pattern unlikelyPattern = Pattern.compile("display\\:none|visibility\\:hidden"); + protected final int minParagraphText; + protected final List nodesToReplace; + protected String nodesToKeepCssSelector = "p"; + + public OutputFormatter() { + this(MIN_PARAGRAPH_TEXT, NODES_TO_REPLACE); + } + + public OutputFormatter(int minParagraphText) { + this(minParagraphText, NODES_TO_REPLACE); + } + + public OutputFormatter(int minParagraphText, List nodesToReplace) { + this.minParagraphText = minParagraphText; + this.nodesToReplace = nodesToReplace; + } + + /** + * set elements to keep in output text + */ + public void setNodesToKeepCssSelector(String nodesToKeepCssSelector) { + this.nodesToKeepCssSelector = nodesToKeepCssSelector; + } + + /** + * takes an element and turns the P tags into \n\n + */ + public String getFormattedText(Element topNode) { + removeNodesWithNegativeScores(topNode); + StringBuilder sb = new StringBuilder(); + append(topNode, sb, nodesToKeepCssSelector); + String str = SHelper.innerTrim(sb.toString()); + if (str.length() > 100) + return str; + + // no subelements + if (str.isEmpty() || !topNode.text().isEmpty() + && str.length() <= topNode.ownText().length()) + str = topNode.text(); + + // if jsoup failed to parse the whole html now parse this smaller + // snippet again to avoid html tags disturbing our text: + return Jsoup.parse(str).text(); + } + + /** + * Takes an element and returns a list of texts extracted from the P tags + */ + public List getTextList(Element topNode) { + List texts = new ArrayList(); + for (Element element : topNode.select(this.nodesToKeepCssSelector)) { + if (element.hasText()) { + texts.add(element.text()); + } + } + return texts; + } + + /** + * If there are elements inside our top node that have a negative gravity + * score remove them + */ + protected void removeNodesWithNegativeScores(Element topNode) { + Elements gravityItems = topNode.select("*[gravityScore]"); + for (Element item : gravityItems) { + int score = Integer.parseInt(item.attr("gravityScore")); + if (score < 0 || item.text().length() < minParagraphText) + item.remove(); + } + } + + protected void append(Element node, StringBuilder sb, String tagName) { + // is select more costly then getElementsByTag? + MAIN: for (Element e : node.select(tagName)) { + Element tmpEl = e; + // check all elements until 'node' + while (tmpEl != null && !tmpEl.equals(node)) { + if (unlikely(tmpEl)) + continue MAIN; + tmpEl = tmpEl.parent(); + } + + String text = node2Text(e); + if (text.isEmpty() || text.length() < minParagraphText + || text.length() > SHelper.countLetters(text) * 2) + continue; + + sb.append(text); + sb.append("\n\n"); + } + } + + boolean unlikely(Node e) { + if (e.attr("class") != null && e.attr("class").toLowerCase(Locale.getDefault()).contains("caption")) + return true; + + String style = e.attr("style"); + String clazz = e.attr("class"); + if (unlikelyPattern.matcher(style).find() || unlikelyPattern.matcher(clazz).find()) + return true; + return false; + } + + void appendTextSkipHidden(Element e, StringBuilder accum) { + for (Node child : e.childNodes()) { + if (unlikely(child)) + continue; + if (child instanceof TextNode) { + TextNode textNode = (TextNode) child; + String txt = textNode.text(); + accum.append(txt); + } else if (child instanceof Element) { + Element element = (Element) child; + if (accum.length() > 0 && element.isBlock() && !lastCharIsWhitespace(accum)) + accum.append(" "); + else if (element.tagName().equals("br")) + accum.append(" "); + appendTextSkipHidden(element, accum); + } + } + } + + boolean lastCharIsWhitespace(StringBuilder accum) { + if (accum.length() == 0) + return false; + return Character.isWhitespace(accum.charAt(accum.length() - 1)); + } + + protected String node2TextOld(Element el) { + return el.text(); + } + + protected String node2Text(Element el) { + StringBuilder sb = new StringBuilder(200); + appendTextSkipHidden(el, sb); + return sb.toString(); + } + + public OutputFormatter setUnlikelyPattern(String unlikelyPattern) { + this.unlikelyPattern = Pattern.compile(unlikelyPattern); + return this; + } + + public OutputFormatter appendUnlikelyPattern(String str) { + return setUnlikelyPattern(unlikelyPattern.toString() + "|" + str); + } +} diff --git a/src/acr/browser/lightning/Reading/SCache.java b/src/acr/browser/lightning/Reading/SCache.java new file mode 100644 index 0000000..ace929c --- /dev/null +++ b/src/acr/browser/lightning/Reading/SCache.java @@ -0,0 +1,29 @@ +/* + * Copyright 2011 Peter Karich + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package acr.browser.lightning.Reading; + +/** + * + * @author Peter Karich + */ +public interface SCache { + + JResult get(String url); + + void put(String url, JResult res); + + int getSize(); +} diff --git a/src/acr/browser/lightning/Reading/SHelper.java b/src/acr/browser/lightning/Reading/SHelper.java new file mode 100644 index 0000000..ab58c5f --- /dev/null +++ b/src/acr/browser/lightning/Reading/SHelper.java @@ -0,0 +1,480 @@ +/* + * Copyright 2011 Peter Karich + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package acr.browser.lightning.Reading; + +import java.io.UnsupportedEncodingException; +import java.net.CookieHandler; +import java.net.CookieManager; +import java.net.CookiePolicy; +import java.net.URLDecoder; +import java.net.URLEncoder; +import java.security.SecureRandom; +import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; +import java.text.SimpleDateFormat; +import java.util.Locale; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import javax.net.ssl.KeyManager; +import javax.net.ssl.SSLContext; +import javax.net.ssl.TrustManager; +import javax.net.ssl.X509TrustManager; +import org.jsoup.nodes.Element; + +/** + * + * @author Peter Karich + */ +public class SHelper { + + public static final String UTF8 = "UTF-8"; + private static final Pattern SPACE = Pattern.compile(" "); + + public static String replaceSpaces(String url) { + if (!url.isEmpty()) { + url = url.trim(); + if (url.contains(" ")) { + Matcher spaces = SPACE.matcher(url); + url = spaces.replaceAll("%20"); + } + } + return url; + } + + public static int count(String str, String substring) { + int c = 0; + int index1 = str.indexOf(substring); + if (index1 >= 0) { + c++; + c += count(str.substring(index1 + substring.length()), substring); + } + return c; + } + + /** + * remove more than two spaces or newlines + */ + public static String innerTrim(String str) { + if (str.isEmpty()) + return ""; + + StringBuilder sb = new StringBuilder(); + boolean previousSpace = false; + for (int i = 0; i < str.length(); i++) { + char c = str.charAt(i); + if (c == ' ' || (int) c == 9 || c == '\n') { + previousSpace = true; + continue; + } + + if (previousSpace) + sb.append(' '); + + previousSpace = false; + sb.append(c); + } + return sb.toString().trim(); + } + + /** + * Starts reading the encoding from the first valid character until an + * invalid encoding character occurs. + */ + public static String encodingCleanup(String str) { + StringBuilder sb = new StringBuilder(); + boolean startedWithCorrectString = false; + for (int i = 0; i < str.length(); i++) { + char c = str.charAt(i); + if (Character.isDigit(c) || Character.isLetter(c) || c == '-' || c == '_') { + startedWithCorrectString = true; + sb.append(c); + continue; + } + + if (startedWithCorrectString) + break; + } + return sb.toString().trim(); + } + + /** + * @return the longest substring as str1.substring(result[0], result[1]); + */ + public static String getLongestSubstring(String str1, String str2) { + int res[] = longestSubstring(str1, str2); + if (res == null || res[0] >= res[1]) + return ""; + + return str1.substring(res[0], res[1]); + } + + public static int[] longestSubstring(String str1, String str2) { + if (str1 == null || str1.isEmpty() || str2 == null || str2.isEmpty()) + return null; + + // dynamic programming => save already identical length into array + // to understand this algo simply print identical length in every entry + // of the array + // i+1, j+1 then reuses information from i,j + // java initializes them already with 0 + int[][] num = new int[str1.length()][str2.length()]; + int maxlen = 0; + int lastSubstrBegin = 0; + int endIndex = 0; + for (int i = 0; i < str1.length(); i++) { + for (int j = 0; j < str2.length(); j++) { + if (str1.charAt(i) == str2.charAt(j)) { + if ((i == 0) || (j == 0)) + num[i][j] = 1; + else + num[i][j] = 1 + num[i - 1][j - 1]; + + if (num[i][j] > maxlen) { + maxlen = num[i][j]; + // generate substring from str1 => i + lastSubstrBegin = i - num[i][j] + 1; + endIndex = i + 1; + } + } + } + } + return new int[] { lastSubstrBegin, endIndex }; + } + + public static String getDefaultFavicon(String url) { + return useDomainOfFirstArg4Second(url, "/favicon.ico"); + } + + /** + * @param urlForDomain + * extract the domain from this url + * @param path + * this url does not have a domain + * @return + */ + public static String useDomainOfFirstArg4Second(String urlForDomain, String path) { + if (path.startsWith("http")) + return path; + + if ("favicon.ico".equals(path)) + path = "/favicon.ico"; + + if (path.startsWith("//")) { + // wikipedia special case, see tests + if (urlForDomain.startsWith("https:")) + return "https:" + path; + + return "http:" + path; + } else if (path.startsWith("/")) + return "http://" + extractHost(urlForDomain) + path; + else if (path.startsWith("../")) { + int slashIndex = urlForDomain.lastIndexOf("/"); + if (slashIndex > 0 && slashIndex + 1 < urlForDomain.length()) + urlForDomain = urlForDomain.substring(0, slashIndex + 1); + + return urlForDomain + path; + } + return path; + } + + public static String extractHost(String url) { + return extractDomain(url, false); + } + + public static String extractDomain(String url, boolean aggressive) { + if (url.startsWith("http://")) + url = url.substring("http://".length()); + else if (url.startsWith("https://")) + url = url.substring("https://".length()); + + if (aggressive) { + if (url.startsWith("www.")) + url = url.substring("www.".length()); + + // strip mobile from start + if (url.startsWith("m.")) + url = url.substring("m.".length()); + } + + int slashIndex = url.indexOf("/"); + if (slashIndex > 0) + url = url.substring(0, slashIndex); + + return url; + } + + public static boolean isVideoLink(String url) { + url = extractDomain(url, true); + return url.startsWith("youtube.com") || url.startsWith("video.yahoo.com") + || url.startsWith("vimeo.com") || url.startsWith("blip.tv"); + } + + public static boolean isVideo(String url) { + return url.endsWith(".mpeg") || url.endsWith(".mpg") || url.endsWith(".avi") + || url.endsWith(".mov") || url.endsWith(".mpg4") || url.endsWith(".mp4") + || url.endsWith(".flv") || url.endsWith(".wmv"); + } + + public static boolean isAudio(String url) { + return url.endsWith(".mp3") || url.endsWith(".ogg") || url.endsWith(".m3u") + || url.endsWith(".wav"); + } + + public static boolean isDoc(String url) { + return url.endsWith(".pdf") || url.endsWith(".ppt") || url.endsWith(".doc") + || url.endsWith(".swf") || url.endsWith(".rtf") || url.endsWith(".xls"); + } + + public static boolean isPackage(String url) { + return url.endsWith(".gz") || url.endsWith(".tgz") || url.endsWith(".zip") + || url.endsWith(".rar") || url.endsWith(".deb") || url.endsWith(".rpm") + || url.endsWith(".7z"); + } + + public static boolean isApp(String url) { + return url.endsWith(".exe") || url.endsWith(".bin") || url.endsWith(".bat") + || url.endsWith(".dmg"); + } + + public static boolean isImage(String url) { + return url.endsWith(".png") || url.endsWith(".jpeg") || url.endsWith(".gif") + || url.endsWith(".jpg") || url.endsWith(".bmp") || url.endsWith(".ico") + || url.endsWith(".eps"); + } + + /** + * @see http + * ://blogs.sun.com/CoreJavaTechTips/entry/cookie_handling_in_java_se + */ + public static void enableCookieMgmt() { + CookieManager manager = new CookieManager(); + manager.setCookiePolicy(CookiePolicy.ACCEPT_ALL); + CookieHandler.setDefault(manager); + } + + /** + * @see http + * ://stackoverflow.com/questions/2529682/setting-user-agent-of-a-java + * -urlconnection + */ + public static void enableUserAgentOverwrite() { + System.setProperty("http.agent", ""); + } + + public static String getUrlFromUglyGoogleRedirect(String url) { + if (url.startsWith("http://www.google.com/url?")) { + url = url.substring("http://www.google.com/url?".length()); + String arr[] = urlDecode(url).split("\\&"); + if (arr != null) + for (String str : arr) { + if (str.startsWith("q=")) + return str.substring("q=".length()); + } + } + + return null; + } + + public static String getUrlFromUglyFacebookRedirect(String url) { + if (url.startsWith("http://www.facebook.com/l.php?u=")) { + url = url.substring("http://www.facebook.com/l.php?u=".length()); + return urlDecode(url); + } + + return null; + } + + public static String urlEncode(String str) { + try { + return URLEncoder.encode(str, UTF8); + } catch (UnsupportedEncodingException ex) { + return str; + } + } + + public static String urlDecode(String str) { + try { + return URLDecoder.decode(str, UTF8); + } catch (UnsupportedEncodingException ex) { + return str; + } + } + + /** + * Popular sites uses the #! to indicate the importance of the following + * chars. Ugly but true. Such as: facebook, twitter, gizmodo, ... + */ + public static String removeHashbang(String url) { + return url.replaceFirst("#!", ""); + } + + public static String printNode(Element root) { + return printNode(root, 0); + } + + public static String printNode(Element root, int indentation) { + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < indentation; i++) { + sb.append(' '); + } + sb.append(root.tagName()); + sb.append(":"); + sb.append(root.ownText()); + sb.append("\n"); + for (Element el : root.children()) { + sb.append(printNode(el, indentation + 1)); + sb.append("\n"); + } + return sb.toString(); + } + + public static String estimateDate(String url) { + int index = url.indexOf("://"); + if (index > 0) + url = url.substring(index + 3); + + int year = -1; + int yearCounter = -1; + int month = -1; + int monthCounter = -1; + int day = -1; + String strs[] = url.split("/"); + for (int counter = 0; counter < strs.length; counter++) { + String str = strs[counter]; + if (str.length() == 4) { + try { + year = Integer.parseInt(str); + } catch (Exception ex) { + continue; + } + if (year < 1970 || year > 3000) { + year = -1; + continue; + } + yearCounter = counter; + } else if (str.length() == 2) { + if (monthCounter < 0 && counter == yearCounter + 1) { + try { + month = Integer.parseInt(str); + } catch (Exception ex) { + continue; + } + if (month < 1 || month > 12) { + month = -1; + continue; + } + monthCounter = counter; + } else if (counter == monthCounter + 1) { + try { + day = Integer.parseInt(str); + } catch (Exception ex) { + } + if (day < 1 || day > 31) { + day = -1; + continue; + } + break; + } + } + } + + if (year < 0) + return null; + + StringBuilder str = new StringBuilder(); + str.append(year); + if (month < 1) + return str.toString(); + + str.append('/'); + if (month < 10) + str.append('0'); + str.append(month); + if (day < 1) + return str.toString(); + + str.append('/'); + if (day < 10) + str.append('0'); + str.append(day); + return str.toString(); + } + + public static String completeDate(String dateStr) { + if (dateStr == null) + return null; + + int index = dateStr.indexOf('/'); + if (index > 0) { + index = dateStr.indexOf('/', index + 1); + if (index > 0) + return dateStr; + else + return dateStr + "/01"; + } + return dateStr + "/01/01"; + } + + /** + * keep in mind: simpleDateFormatter is not thread safe! call completeDate + * before applying this formatter. + */ + public static SimpleDateFormat createDateFormatter() { + return new SimpleDateFormat("yyyy/MM/dd", Locale.getDefault()); + } + + // with the help of + // http://stackoverflow.com/questions/1828775/httpclient-and-ssl + public static void enableAnySSL() { + try { + SSLContext ctx = SSLContext.getInstance("TLS"); + ctx.init(new KeyManager[0], new TrustManager[] { new DefaultTrustManager() }, + new SecureRandom()); + SSLContext.setDefault(ctx); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + private static class DefaultTrustManager implements X509TrustManager { + + @Override + public void checkClientTrusted(X509Certificate[] arg0, String arg1) + throws CertificateException { + } + + @Override + public void checkServerTrusted(X509Certificate[] arg0, String arg1) + throws CertificateException { + } + + @Override + public X509Certificate[] getAcceptedIssuers() { + return null; + } + } + + public static int countLetters(String str) { + int len = str.length(); + int chars = 0; + for (int i = 0; i < len; i++) { + if (Character.isLetter(str.charAt(i))) + chars++; + } + return chars; + } +} diff --git a/src/acr/browser/lightning/ReadingActivity.java b/src/acr/browser/lightning/ReadingActivity.java new file mode 100644 index 0000000..ada7513 --- /dev/null +++ b/src/acr/browser/lightning/ReadingActivity.java @@ -0,0 +1,153 @@ +package acr.browser.lightning; + +import java.util.ArrayList; +import java.util.List; + +import acr.browser.lightning.Reading.HtmlFetcher; +import acr.browser.lightning.Reading.JResult; +import android.animation.ObjectAnimator; +import android.app.ProgressDialog; +import android.content.Context; +import android.content.Intent; +import android.os.AsyncTask; +import android.os.Bundle; +import android.support.v7.app.ActionBarActivity; +import android.support.v7.widget.Toolbar; +import android.view.MenuItem; +import android.view.View; +import android.widget.TextView; + +public class ReadingActivity extends ActionBarActivity { + + private TextView mTitle; + private TextView mBody; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.reading_view); + + Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); + setSupportActionBar(toolbar); + + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + + mTitle = (TextView) findViewById(R.id.textViewTitle); + mBody = (TextView) findViewById(R.id.textViewBody); + + mTitle.setText(getString(R.string.untitled)); + mBody.setText(getString(R.string.loading)); + + mTitle.setVisibility(View.INVISIBLE); + mBody.setVisibility(View.INVISIBLE); + + Intent intent = getIntent(); + if (!loadPage(intent)) { + setText(getString(R.string.untitled), getString(R.string.loading_failed)); + } + } + + protected boolean loadPage(Intent intent) { + if (intent == null) { + return false; + } + String url = intent.getStringExtra(Constants.LOAD_READING_URL); + if (url == null) { + return false; + } + getSupportActionBar().setTitle(Utils.getDomainName(url)); + new PageLoader(this).execute(url); + return true; + } + + private class PageLoader extends AsyncTask { + + private Context mContext; + private ProgressDialog mProgressDialog; + private String mTitleText; + private List mBodyText; + + public PageLoader(Context context) { + mContext = context; + } + + @Override + protected void onPreExecute() { + super.onPreExecute(); + mProgressDialog = new ProgressDialog(mContext); + mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); + mProgressDialog.setCancelable(false); + mProgressDialog.setIndeterminate(true); + mProgressDialog.setMessage(mContext.getString(R.string.loading)); + mProgressDialog.show(); + } + + @Override + protected Void doInBackground(String... params) { + + HtmlFetcher fetcher = new HtmlFetcher(); + try { + JResult result = fetcher.fetchAndExtract(params[0], 5000, true); + mTitleText = result.getTitle(); + mBodyText = result.getTextList(); + } catch (Exception e) { + mTitleText = ""; + mBodyText = new ArrayList<>(); + e.printStackTrace(); + } catch (OutOfMemoryError e) { + System.gc(); + mTitleText = ""; + mBodyText = new ArrayList<>(); + e.printStackTrace(); + } + return null; + } + + @Override + protected void onPostExecute(Void result) { + mProgressDialog.dismiss(); + if (mTitleText.isEmpty() || mBodyText.isEmpty()) { + setText(getString(R.string.untitled), getString(R.string.loading_failed)); + } else { + StringBuilder builder = new StringBuilder(); + for (String text : mBodyText) { + builder.append(text + "\n\n"); + } + setText(mTitleText, builder.toString()); + } + super.onPostExecute(result); + } + + } + + private void setText(String title, String body) { + if (mTitle.getVisibility() == View.INVISIBLE) { + mTitle.setAlpha(0.0f); + mTitle.setVisibility(View.VISIBLE); + mTitle.setText(title); + ObjectAnimator animator = ObjectAnimator.ofFloat(mTitle, "alpha", 1.0f); + animator.setDuration(300); + animator.start(); + } else { + mTitle.setText(title); + } + + if (mBody.getVisibility() == View.INVISIBLE) { + mBody.setAlpha(0.0f); + mBody.setVisibility(View.VISIBLE); + mBody.setText(body); + ObjectAnimator animator = ObjectAnimator.ofFloat(mBody, "alpha", 1.0f); + animator.setDuration(300); + animator.start(); + } else { + mBody.setText(body); + } + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + finish(); + return super.onOptionsItemSelected(item); + } + +}