This commit is contained in:
lunaticbum 2024-12-02 10:48:45 +09:00
parent 33d0a930fd
commit ab2d0af594
5 changed files with 94 additions and 58 deletions

View File

@ -526,7 +526,7 @@ internal class LauncherHome : Fragment() {
filter: Collection<RssDataType>? = arrayListOf(RssDataType.GURU, RssDataType.MOST,RssDataType.REDDIT_NSFW), noLimit: Boolean = false filter: Collection<RssDataType>? = arrayListOf(RssDataType.GURU, RssDataType.MOST,RssDataType.REDDIT_NSFW), noLimit: Boolean = false
) { ) {
beforeQuery() beforeQuery()
var rQ = WorkersDb.getRealm().query<RssData>().query("read < $0", nomoreShowCount) var rQ = WorkersDb.getRealm().query<RssData>().query("read < $0", nomoreShowCount).distinct("originPage").distinct("title")
if (!noLimit) rQ.query("pubDate > $0", beforeDay(Date(), 3)) if (!noLimit) rQ.query("pubDate > $0", beforeDay(Date(), 3))
((filter?.size ?: 0) > 0).letTrue {filter!!.forEach {rQ = rQ.query("category != $0", it.name)}} ((filter?.size ?: 0) > 0).letTrue {filter!!.forEach {rQ = rQ.query("category != $0", it.name)}}
updateQuery(rQ) updateQuery(rQ)

View File

@ -212,6 +212,7 @@ class RssData : RealmObject, RssDataInterface {
@PrimaryKey @PrimaryKey
var originPage : String? = null var originPage : String? = null
var title : String? = null var title : String? = null
var description : String? = null var description : String? = null
var thumbnail : String? = null var thumbnail : String? = null

View File

@ -195,7 +195,7 @@ object WorkersDb {
} }
} }
fun getVotedRss() = getRealm().query<RssData>().query("vote == $0", true) fun getVotedRss() = getRealm().query<RssData>().query("vote == $0", true).distinct("originPage").distinct("title")
fun getRssQuery(keyword: String?, fun getRssQuery(keyword: String?,
category: Collection<String>? = arrayListOf(), category: Collection<String>? = arrayListOf(),
@ -230,7 +230,7 @@ object WorkersDb {
if (keyword?.length ?: 0 == 0 && category?.size ?: 0 == 0) { if (keyword?.length ?: 0 == 0 && category?.size ?: 0 == 0) {
rQ = rQ.query("read < $0", 3).query("vote != $0", true) rQ = rQ.query("read < $0", 3).query("vote != $0", true)
} }
return rQ return rQ.distinct("originPage").distinct("title")
} }
} }

View File

@ -132,7 +132,7 @@ class AwesomeWebView {
var webViewLoadWithOverviewMode: Boolean? = null var webViewLoadWithOverviewMode: Boolean? = null
var webViewSaveFormData: Boolean? = null var webViewSaveFormData: Boolean? = null
var webViewTextZoom: Int? = null var webViewTextZoom: Int? = null
var webViewUseWideViewPort: Boolean? = null var webViewUseWideViewPort: Boolean = true
var webViewSupportMultipleWindows: Boolean? = null var webViewSupportMultipleWindows: Boolean? = null
var webViewLayoutAlgorithm: LayoutAlgorithm? = null var webViewLayoutAlgorithm: LayoutAlgorithm? = null
var webViewStandardFontFamily: String? = null var webViewStandardFontFamily: String? = null

View File

@ -36,7 +36,6 @@ import android.webkit.CookieSyncManager
import android.webkit.DownloadListener import android.webkit.DownloadListener
import android.webkit.GeolocationPermissions import android.webkit.GeolocationPermissions
import android.webkit.PermissionRequest import android.webkit.PermissionRequest
import android.webkit.URLUtil
import android.webkit.ValueCallback import android.webkit.ValueCallback
import android.webkit.WebChromeClient import android.webkit.WebChromeClient
import android.webkit.WebResourceRequest import android.webkit.WebResourceRequest
@ -46,10 +45,8 @@ import android.webkit.WebSettings.LayoutAlgorithm
import android.webkit.WebView import android.webkit.WebView
import android.webkit.WebView.HitTestResult import android.webkit.WebView.HitTestResult
import android.webkit.WebViewClient import android.webkit.WebViewClient
import android.widget.FrameLayout
import android.widget.ImageButton import android.widget.ImageButton
import android.widget.LinearLayout import android.widget.LinearLayout
import android.widget.ProgressBar
import android.widget.RelativeLayout import android.widget.RelativeLayout
import android.widget.TextView import android.widget.TextView
import android.widget.Toast import android.widget.Toast
@ -57,8 +54,6 @@ import androidx.annotation.DrawableRes
import androidx.annotation.RequiresApi import androidx.annotation.RequiresApi
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.AppCompatImageButton
import androidx.appcompat.widget.Toolbar
import androidx.coordinatorlayout.widget.CoordinatorLayout import androidx.coordinatorlayout.widget.CoordinatorLayout
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.content.FileProvider import androidx.core.content.FileProvider
@ -92,7 +87,6 @@ import java.io.ByteArrayOutputStream
import java.io.File import java.io.File
import java.io.IOException import java.io.IOException
import java.io.InputStream import java.io.InputStream
import java.net.URL
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.Date import java.util.Date
import java.util.Locale import java.util.Locale
@ -1443,7 +1437,22 @@ open class AwesomeWebViewActivity : AppCompatActivity(), View.OnClickListener,
webView!!.reload() webView!!.reload()
hideMenu() hideMenu()
} else if (viewId == R.id.menuPdf) { } else if (viewId == R.id.menuPdf) {
// PDFPrint LogUtil.e("onClick on menuPdf")
val fileName = host.plus(SimpleDateFormat("_yyyyMMddhhmmss").format(Date())).plus(".pdf")
val path = File(Environment.getExternalStorageDirectory(),"bums")
if (path.exists() == false) {
path.mkdirs()
}
val file = File(path, fileName)
PDFPrint.generatePDFFromWebView(file,webView,object :PDFPrint.OnPDFPrintListener {
override fun onSuccess(file: File?) {
LogUtil.e("file.absolutePath >>> ${file?.absolutePath ?: "fail"}")
}
override fun onError(exception: java.lang.Exception?) {
exception?.printStackTrace()
}
})
hideMenu() hideMenu()
} else if (viewId == R.id.menuFind) { } else if (viewId == R.id.menuFind) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) webView!!.showFindDialog( if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) webView!!.showFindDialog(
@ -1865,7 +1874,7 @@ open class AwesomeWebViewActivity : AppCompatActivity(), View.OnClickListener,
.contains("ads".toLowerCase(Locale.ROOT))) { .contains("ads".toLowerCase(Locale.ROOT))) {
LogUtil.e("shouldInterceptRequest request url contains ads >>> ${request.url.toString()}") LogUtil.e("shouldInterceptRequest request url contains ads >>> ${request.url.toString()}")
} }
var adblockKeyWords = arrayOf("adcr.naver.com","daumcdn.net/biz/ui/ad/adcm","imgad","ad.daum.net","cr.adsappier.com","ar-adview","adtrafficquality","criteo","adlib.nhnace.com","google.com/ads","googleads.","/pagead","/adpost/","ads/search") var adblockKeyWords = arrayOf("adcr.naver.com","daumcdn.net/biz/ui/ad/adcm","imgad","ad.daum.net","cr.adsappier.com","ar-adview","adtrafficquality","criteo","adlib.nhnace.com","google.com/ads","googleads.","/pagead","/adpost/","ads/search","plugin.adplex")
val adblock = adblockKeyWords.filter { url.toLowerCase(Locale.ROOT).contains(it.toLowerCase(Locale.ROOT)) }.size > 0 val adblock = adblockKeyWords.filter { url.toLowerCase(Locale.ROOT).contains(it.toLowerCase(Locale.ROOT)) }.size > 0
return if(adblock) { return if(adblock) {
try { try {
@ -1877,14 +1886,18 @@ open class AwesomeWebViewActivity : AppCompatActivity(), View.OnClickListener,
}else if(url.toLowerCase(Locale.ROOT).contains(".jpg") || url.toLowerCase(Locale.ROOT).contains(".jpeg")){ }else if(url.toLowerCase(Locale.ROOT).contains(".jpg") || url.toLowerCase(Locale.ROOT).contains(".jpeg")){
try { try {
val bitmap = Glide.with(this@AwesomeWebViewActivity).asBitmap().timeout(30000).diskCacheStrategy(DiskCacheStrategy.ALL).load(url).submit().get() val bitmap = Glide.with(this@AwesomeWebViewActivity).asBitmap().timeout(30000).diskCacheStrategy(DiskCacheStrategy.ALL).load(url).submit().get()
WebResourceResponse("image/jpg", "UTF-8",getBitmapInputStream(bitmap,Bitmap.CompressFormat.JPEG)) WebResourceResponse("image/jpg", "UTF-8",getBitmapInputStream(bitmap,Bitmap.CompressFormat.JPEG)).apply {
LogUtil.e("shouldInterceptRequest request url down from Glide >>> ${request.url.toString()}")
}
} catch (e : Exception) { } catch (e : Exception) {
super.shouldInterceptRequest(view, url) super.shouldInterceptRequest(view, url)
} }
}else if(url.toLowerCase(Locale.ROOT).contains(".png")){ }else if(url.toLowerCase(Locale.ROOT).contains(".png")){
try { try {
val bitmap = Glide.with(this@AwesomeWebViewActivity).asBitmap().timeout(30000).diskCacheStrategy(DiskCacheStrategy.ALL).load(url).submit().get() val bitmap = Glide.with(this@AwesomeWebViewActivity).asBitmap().timeout(30000).diskCacheStrategy(DiskCacheStrategy.ALL).load(url).submit().get()
WebResourceResponse("image/png", "UTF-8",getBitmapInputStream(bitmap,Bitmap.CompressFormat.PNG)) WebResourceResponse("image/png", "UTF-8",getBitmapInputStream(bitmap,Bitmap.CompressFormat.PNG)).apply {
LogUtil.e("shouldInterceptRequest request url down from Glide >>> ${request.url.toString()}")
}
} catch (e : Exception) { } catch (e : Exception) {
super.shouldInterceptRequest(view, url) super.shouldInterceptRequest(view, url)
} }
@ -1892,7 +1905,9 @@ open class AwesomeWebViewActivity : AppCompatActivity(), View.OnClickListener,
}else if(url.toLowerCase(Locale.ROOT).contains(".webp")){ }else if(url.toLowerCase(Locale.ROOT).contains(".webp")){
try { try {
val bitmap = Glide.with(this@AwesomeWebViewActivity).asBitmap().timeout(30000).diskCacheStrategy(DiskCacheStrategy.ALL).load(url).submit().get() val bitmap = Glide.with(this@AwesomeWebViewActivity).asBitmap().timeout(30000).diskCacheStrategy(DiskCacheStrategy.ALL).load(url).submit().get()
WebResourceResponse("image/webp", "UTF-8",getBitmapInputStream(bitmap,Bitmap.CompressFormat.WEBP)) WebResourceResponse("image/webp", "UTF-8",getBitmapInputStream(bitmap,Bitmap.CompressFormat.WEBP)).apply {
LogUtil.e("shouldInterceptRequest request url down from Glide >>> ${request.url.toString()}")
}
} catch (e : Exception) { } catch (e : Exception) {
super.shouldInterceptRequest(view, url) super.shouldInterceptRequest(view, url)
} }
@ -1971,9 +1986,31 @@ open class AwesomeWebViewActivity : AppCompatActivity(), View.OnClickListener,
var skipResource = host!= null && ((url.contains(host!!) ?: true) == false) && (host!!.contains("google") == false) var skipResource = host!= null && ((url.contains(host!!) ?: true) == false) && (host!!.contains("google") == false)
if (skipResource) { if (skipResource) {
LogUtil.e("shouldOverrideUrlLoading block url $url , host >>>> $host ") LogUtil.e("shouldOverrideUrlLoading block url $url , host >>>> $host ")
val alertDialog = AlertDialog.Builder(view.context).create()
alertDialog.setCancelable(false)
alertDialog.setTitle("링크 열거임?!")
alertDialog.setMessage("$host 와 다른 사이트인데 브라우저로 열거임?")
alertDialog.setButton(
AlertDialog.BUTTON_NEUTRAL, "NO"
) { dialog, which ->
Toast.makeText(applicationContext, "취소를 선택하심.", Toast.LENGTH_SHORT)
.show()
dialog.dismiss()
}
alertDialog.setButton(
AlertDialog.BUTTON_POSITIVE, "OK"
) { dialog, which ->
Toast.makeText(applicationContext, "오~ 브라우저로 열릴꺼임.", Toast.LENGTH_SHORT)
.show()
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
view.context.startActivity(intent)
dialog.dismiss()
}
alertDialog.show()
return true return true
} }
if (url.contains("coupang") == false && url.contains("aliex") == false) {
if (url.endsWith(".mp4")) { if (url.endsWith(".mp4")) {
val intent = Intent(Intent.ACTION_VIEW) val intent = Intent(Intent.ACTION_VIEW)
intent.setDataAndType(Uri.parse(url), "video/*") intent.setDataAndType(Uri.parse(url), "video/*")
@ -2024,9 +2061,7 @@ open class AwesomeWebViewActivity : AppCompatActivity(), View.OnClickListener,
return super.shouldOverrideUrlLoading(view, url) return super.shouldOverrideUrlLoading(view, url)
} }
} }
} else {
return true
}
} }
override fun onLoadResource(view: WebView, url: String) { override fun onLoadResource(view: WebView, url: String) {