diff --git a/app/src/main/java/io/legado/app/model/rss/RssParser.kt b/app/src/main/java/io/legado/app/model/rss/RssParser.kt index 6cec063a6..3c66389c7 100644 --- a/app/src/main/java/io/legado/app/model/rss/RssParser.kt +++ b/app/src/main/java/io/legado/app/model/rss/RssParser.kt @@ -33,99 +33,62 @@ object RssParser { // Start parsing the item if (eventType == XmlPullParser.START_TAG) { when { - xmlPullParser.name.equals( - RSSKeywords.RSS_ITEM, - ignoreCase = true - ) -> insideItem = true - xmlPullParser.name.equals( - RSSKeywords.RSS_ITEM_TITLE, - ignoreCase = true - ) -> if (insideItem) { - currentArticle.title = xmlPullParser.nextText().trim() - } - xmlPullParser.name.equals( - RSSKeywords.RSS_ITEM_LINK, - ignoreCase = true - ) -> if (insideItem) { - currentArticle.link = xmlPullParser.nextText().trim() - } - xmlPullParser.name.equals( - RSSKeywords.RSS_ITEM_AUTHOR, - ignoreCase = true - ) -> if (insideItem) { - currentArticle.author = xmlPullParser.nextText().trim() - } - xmlPullParser.name.equals( - RSSKeywords.RSS_ITEM_CATEGORY, - ignoreCase = true - ) -> if (insideItem) { - currentArticle.categories.add(xmlPullParser.nextText().trim()) - } - xmlPullParser.name.equals( - RSSKeywords.RSS_ITEM_THUMBNAIL, - ignoreCase = true - ) -> if (insideItem) { - currentArticle.image = + xmlPullParser.name + .equals(RSSKeywords.RSS_ITEM, true) -> insideItem = true + xmlPullParser.name.equals(RSSKeywords.RSS_ITEM_TITLE, true) -> + if (insideItem) currentArticle.title = xmlPullParser.nextText().trim() + xmlPullParser.name.equals(RSSKeywords.RSS_ITEM_LINK, true) -> + if (insideItem) currentArticle.link = xmlPullParser.nextText().trim() + xmlPullParser.name.equals(RSSKeywords.RSS_ITEM_AUTHOR, true) -> + if (insideItem) currentArticle.author = xmlPullParser.nextText().trim() + xmlPullParser.name.equals(RSSKeywords.RSS_ITEM_CATEGORY, true) -> + if (insideItem) currentArticle.categories.add(xmlPullParser.nextText().trim()) + xmlPullParser.name.equals(RSSKeywords.RSS_ITEM_THUMBNAIL, true) -> + if (insideItem) currentArticle.image = xmlPullParser.getAttributeValue(null, RSSKeywords.RSS_ITEM_URL) - } - xmlPullParser.name.equals( - RSSKeywords.RSS_ITEM_ENCLOSURE, - ignoreCase = true - ) -> if (insideItem) { - val type = xmlPullParser.getAttributeValue(null, RSSKeywords.RSS_ITEM_TYPE) - if (type != null && type.contains("image/")) { - currentArticle.image = - xmlPullParser.getAttributeValue(null, RSSKeywords.RSS_ITEM_URL) + xmlPullParser.name.equals(RSSKeywords.RSS_ITEM_ENCLOSURE, true) -> + if (insideItem) { + val type = + xmlPullParser.getAttributeValue(null, RSSKeywords.RSS_ITEM_TYPE) + if (type != null && type.contains("image/")) { + currentArticle.image = + xmlPullParser.getAttributeValue(null, RSSKeywords.RSS_ITEM_URL) + } } - } - xmlPullParser.name.equals( - RSSKeywords.RSS_ITEM_DESCRIPTION, - ignoreCase = true - ) -> if (insideItem) { - val description = xmlPullParser.nextText() - currentArticle.description = description.trim() - if (currentArticle.image == null) { - currentArticle.image = getImageUrl(description) + xmlPullParser.name + .equals(RSSKeywords.RSS_ITEM_DESCRIPTION, true) -> + if (insideItem) { + val description = xmlPullParser.nextText() + currentArticle.description = description.trim() + if (currentArticle.image == null) { + currentArticle.image = getImageUrl(description) + } } - } - xmlPullParser.name.equals( - RSSKeywords.RSS_ITEM_CONTENT, - ignoreCase = true - ) -> if (insideItem) { - val content = xmlPullParser.nextText().trim() - currentArticle.content = content - if (currentArticle.image == null) { - currentArticle.image = getImageUrl(content) + xmlPullParser.name.equals(RSSKeywords.RSS_ITEM_CONTENT, true) -> + if (insideItem) { + val content = xmlPullParser.nextText().trim() + currentArticle.content = content + if (currentArticle.image == null) { + currentArticle.image = getImageUrl(content) + } } - } - xmlPullParser.name.equals( - RSSKeywords.RSS_ITEM_PUB_DATE, - ignoreCase = true - ) -> if (insideItem) { - val nextTokenType = xmlPullParser.next() - if (nextTokenType == XmlPullParser.TEXT) { - currentArticle.pubDate = xmlPullParser.text.trim() + xmlPullParser.name + .equals(RSSKeywords.RSS_ITEM_PUB_DATE, true) -> + if (insideItem) { + val nextTokenType = xmlPullParser.next() + if (nextTokenType == XmlPullParser.TEXT) { + currentArticle.pubDate = xmlPullParser.text.trim() + } + // Skip to be able to find date inside 'tag' tag + continue@loop } - // Skip to be able to find date inside 'tag' tag - continue@loop - } - xmlPullParser.name.equals( - RSSKeywords.RSS_ITEM_TIME, - ignoreCase = true - ) -> if (insideItem) { - currentArticle.pubDate = xmlPullParser.nextText() - } - xmlPullParser.name.equals( - RSSKeywords.RSS_ITEM_GUID, - ignoreCase = true - ) -> if (insideItem) { - currentArticle.guid = xmlPullParser.nextText().trim() - } + xmlPullParser.name.equals(RSSKeywords.RSS_ITEM_TIME, true) -> + if (insideItem) currentArticle.pubDate = xmlPullParser.nextText() + xmlPullParser.name.equals(RSSKeywords.RSS_ITEM_GUID, true) -> + if (insideItem) currentArticle.guid = xmlPullParser.nextText().trim() } - } else if (eventType == XmlPullParser.END_TAG && xmlPullParser.name.equals( - "item", - ignoreCase = true - ) + } else if (eventType == XmlPullParser.END_TAG + && xmlPullParser.name.equals("item", true) ) { // The item is correctly parsed insideItem = false