This commit is contained in:
2024-12-17 18:12:08 +09:00
parent 10ac465aba
commit 4d8b9b728b
17 changed files with 300 additions and 199 deletions
@@ -1191,9 +1191,7 @@ fun openReddit(schemeString : String) {
var uri = schemeString.toUri()
val gmmIntentUri = Uri.parse(schemeString)
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
if (uri != null && uri.host?.contains("facebook") == true) {
} else {
if(schemeString.contains("reddit")) {
mapIntent.setPackage("com.reddit.frontpage")
}
lActivity?.startActivity(mapIntent)
@@ -84,6 +84,7 @@ import bums.lunatic.launcher.utils.Blog
import bums.lunatic.launcher.utils.BitmapConverter
import bums.lunatic.launcher.utils.SimpleFingerGestures
import bums.lunatic.launcher.utils.beforeDay
import bums.lunatic.launcher.utils.beforeOneDay
import bums.lunatic.launcher.view.TableRadioGroup
import bums.lunatic.launcher.workers.LocationGetter
import bums.lunatic.launcher.workers.RecentCall
@@ -109,7 +110,6 @@ import java.math.BigDecimal
import java.math.RoundingMode
import java.net.URLEncoder
import java.util.Calendar
import java.util.Date
internal class LauncherHome : Fragment() {
@@ -489,7 +489,7 @@ internal class LauncherHome : Fragment() {
WorkersDb.getRealm().writeBlocking {
delete(
query<RssData>()
.query("pubDate < $0", beforeDay())
.query("pubDate < $0", beforeOneDay())
.query("category != $0 AND category != $1 ", RssDataType.GURU.name, RssDataType.MOST.name)
.query("vote != $0", true).find()
)
@@ -510,11 +510,14 @@ internal class LauncherHome : Fragment() {
commandHandler.postDelayed(infoUpdate, UPDATE_DELAY)
}
else -> {
}
}
}
}
infosJob?.start()
}
fun queryVotes() {
@@ -527,7 +530,7 @@ internal class LauncherHome : Fragment() {
) {
beforeQuery()
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", beforeOneDay())
((filter?.size ?: 0) > 0).letTrue {filter!!.forEach {rQ = rQ.query("category != $0", it.name)}}
updateQuery(rQ)
}
@@ -742,7 +745,7 @@ internal class LauncherHome : Fragment() {
binding.infoList.visibility = View.INVISIBLE
binding.notiList.visibility = View.INVISIBLE
var dateParam = beforeDay(Date(), 30).toString()
var dateParam = beforeDay(30).toString()
if (binding.missedCalls.isSelected) {
WorkersDb.getRealm().apply {
val result = query<RecentCall>().query("callDayTime >= $0", dateParam)
@@ -3,6 +3,9 @@ package bums.lunatic.launcher.home
import android.app.Activity
import android.content.Context
import android.content.Intent
import android.net.Uri
import android.os.Environment
import android.print.PDFPrint
import android.view.KeyEvent
import android.view.KeyEvent.ACTION_UP
import android.view.KeyEvent.KEYCODE_BUTTON_A
@@ -18,21 +21,35 @@ import android.view.KeyEvent.KEYCODE_DPAD_UP
import android.view.MotionEvent
import android.view.MotionEvent.ACTION_MOVE
import android.view.View
import android.webkit.CookieManager
import android.widget.Toast
import androidx.core.net.toUri
import androidx.core.view.contains
import androidx.core.view.drawToBitmap
import bums.lunatic.launcher.LauncherActivity.Companion.lActivity
import bums.lunatic.launcher.model.RssData
import bums.lunatic.launcher.utils.Blog
import bums.lunatic.launcher.workers.WorkersDb
import io.realm.kotlin.UpdatePolicy
import io.realm.kotlin.ext.query
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kr.lunaticbum.awesomewebview.AwesomeWebView
import kr.lunaticbum.awesomewebview.AwesomeWebView.Builder
import kr.lunaticbum.awesomewebview.AwesomeWebViewActivity
import kr.lunaticbum.awesomewebview.helpers.DownPicUtil
import kr.lunaticbum.awesomewebview.helpers.DownPicUtil.DownFinishListener
import kr.lunaticbum.awesomewebview.listeners.BroadCastManager
import kr.lunaticbum.awesomewebview.objects.CustomMenu
import kr.lunaticbum.utils.content.ContextUtil
import kr.lunaticbum.utils.log.LogUtil
import org.jsoup.Jsoup
import org.jsoup.UnsupportedMimeTypeException
import org.jsoup.nodes.Element
import java.io.File
import java.lang.Exception
import java.net.URL
class RssViewBuilder(context: Context) : AwesomeWebView.Builder(context) {
var rssId : String = ""
@@ -245,6 +262,15 @@ class RssViewerActivity : AwesomeWebViewActivity(), View.OnGenericMotionListene
webView?.scrollTo(webView?.scrollX ?: 0, (webView?.scrollY ?: 0) + getUnit())
}
override var pdfListner : PDFPrint.OnPDFPrintListener? = object : PDFPrint.OnPDFPrintListener {
override fun onSuccess(file: File?) {
LogUtil.e("file.absolutePath >>> ${file?.absolutePath}")
}
override fun onError(exception: Exception?) {
}
}
override fun dispatchGenericMotionEvent(ev: MotionEvent?): Boolean {
if (ev?.device?.name?.contains("BLE-M3") == true) {
@@ -353,6 +379,82 @@ class RssViewerActivity : AwesomeWebViewActivity(), View.OnGenericMotionListene
return@forEachIndexed}
}
}
override fun onHtml(value: String?) {
val agent = webView!!.settings.userAgentString
val current = webView!!.url
CoroutineScope(Dispatchers.IO).launch {
mediaUrls.forEach {
try {
LogUtil.e("try Jsoup.parse ${it}")
Jsoup.parse(URL(it), 3000)?.let {
try {
LogUtil.e("onit Jsoup.parse ${it.title()}")
it.getElementsByTag("video")?.forEach {
it.attribute("src").value?.let {
var url = if (it.startsWith("http")) {
it
} else {
"https:".plus(it)
}
val cookieManager =
CookieManager.getInstance()
val cookie =
cookieManager.getCookie(current)
DownPicUtil.downMp4(
File(
Environment.getExternalStorageDirectory(),
"bums"
).path,
url,
agent,
current,
cookie,
object : DownFinishListener {
override fun onDownFinish(path: String) {
if (showToastPhotoSavedOrFailed) {
Toast.makeText(
applicationContext,
resources.getString(
stringResPhotoSavedTo
) + path,
Toast.LENGTH_LONG
).show()
}
// 最后通知图库更新
applicationContext.sendBroadcast(
Intent(
Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,
Uri.parse("file://$path")
)
)
}
override fun onError() {
if (showToastPhotoSavedOrFailed) {
Toast.makeText(
applicationContext,
resources.getString(
stringResPhotoSaveFailed
),
Toast.LENGTH_LONG
).show()
}
}
})
}
}
} catch (e : UnsupportedMimeTypeException) {
} catch (e : Exception){}
}
} catch (e : UnsupportedMimeTypeException) {
} catch (e : Exception){}
}
}
}
override fun webviewOnPageFinished() {
double = false
if(hasYoutubePlayer) {
@@ -371,5 +473,14 @@ class RssViewerActivity : AwesomeWebViewActivity(), View.OnGenericMotionListene
}
}
registCancelSearch()
if (webView?.url?.contains("dcinside") == true){
webView?.evaluateJavascript("try{document.querySelector('#div_adnmore_area').hidden = true;}catch(e){}",null)
} else if(webView?.url?.contains("fmkorea") == true) {
webView?.postDelayed({
webView?.evaluateJavascript("try{document.querySelector('.m_rd_nav_side').hidden = true;}catch(e){}",null)
webView?.evaluateJavascript("try{document.querySelector(\"[class*='bd bd_mobile ']\").remove();}catch(e){}",null)
},500L)
}
}
}
@@ -4,8 +4,7 @@ import android.util.Xml
import bums.lunatic.launcher.model.NewsData
import bums.lunatic.launcher.model.RssDataInterface
import bums.lunatic.launcher.model.others.Reddit
import bums.lunatic.launcher.utils.Blog
import bums.lunatic.launcher.utils.beforeDay
import bums.lunatic.launcher.utils.beforeOneDay
import com.google.gson.Gson
import org.xmlpull.v1.XmlPullParser
import org.xmlpull.v1.XmlPullParserException
@@ -14,14 +13,13 @@ import java.io.InputStream
import java.io.InputStreamReader
import java.net.URL
import java.text.SimpleDateFormat
import java.util.Date
import java.util.Locale
object RssFeedsParser {
var parseDateFormat: SimpleDateFormat = SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z", Locale.ENGLISH)
var parseDateFormat2: SimpleDateFormat = SimpleDateFormat("E, dd MM yyyy HH:mm:ss ZZ", Locale.ENGLISH)
var limitDateTime = beforeDay(Date(),3)
var limitDateTime = beforeOneDay()
fun getFeeds(url : String) : List<RssDataInterface> {
var returnList = mutableListOf<RssDataInterface>()
try {
@@ -34,7 +32,7 @@ object RssFeedsParser {
fun getReddit(url : String, nsfw : Boolean): List<RssDataInterface> {
var returnList = mutableListOf<RssDataInterface>()
var dateTime = beforeDay(Date(),3)
var dateTime = beforeOneDay()
try {
var mReddit = Gson().fromJson(InputStreamReader(getInputStream(url)!!), Reddit::class.java)
mReddit.data?.children?.forEach {
@@ -4,43 +4,6 @@ import bums.lunatic.launcher.beforeDay
import bums.lunatic.launcher.utils.JamoUtils
import java.util.Date
class MissD : RssDataInterface {
var link : String? = null
var title : String? = null
var thumb : String? = null
var desc : String? = null
override fun title(): String {
return title ?: ""
}
override fun thumbnailUrl(): String {
return thumb ?: ""
}
override fun originPage(): String {
return link ?: ""
}
override fun description(): String {
return desc ?: ""
}
override fun pubDate(): Long {
return beforeDay(Date())
}
override fun category(): RssDataType {
return RssDataType.GURU
}
override fun getCho(): String? {
return JamoUtils.split(title!!).joinToString("")
}
}
class MostItem : JGuru , RssDataInterface {
@@ -2,7 +2,7 @@ package bums.lunatic.launcher.model
import bums.lunatic.launcher.utils.JamoUtils
import bums.lunatic.launcher.utils.afterDay
import bums.lunatic.launcher.utils.beforeDay
import bums.lunatic.launcher.utils.beforeDayBy
import io.realm.kotlin.types.RealmObject
import io.realm.kotlin.types.annotations.Ignore
import io.realm.kotlin.types.annotations.PrimaryKey
@@ -308,15 +308,15 @@ open class Dotax(var pageLink : String,
before = dayString.toInt()
if (dateDesc.contains("")) {
before = 365 * before
dateTime = if (isBefore) beforeDay(date, before) else afterDay(date, before)
dateTime = if (isBefore) beforeDayBy(date, before) else afterDay(date, before)
} else if (dateDesc.contains("")) {
before = 30 * before
dateTime = if (isBefore) beforeDay(date, before) else afterDay(date, before)
dateTime = if (isBefore) beforeDayBy(date, before) else afterDay(date, before)
} else if (dateDesc.contains("")) {
before = 7 * before
dateTime = if (isBefore) beforeDay(date, before) else afterDay(date, before)
dateTime = if (isBefore) beforeDayBy(date, before) else afterDay(date, before)
} else if (dateDesc.contains("")) {
dateTime = if (isBefore) beforeDay(date, before) else afterDay(date, before)
dateTime = if (isBefore) beforeDayBy(date, before) else afterDay(date, before)
} else if (dateDesc.contains("시간")) {
dateTime =
if (isBefore) dateTime.minus(before.times(1000L * 60L * 60L)) else dateTime.plus(
@@ -4,7 +4,7 @@ import bums.lunatic.launcher.model.RssDataInterface
import bums.lunatic.launcher.model.RssDataType
import bums.lunatic.launcher.utils.JamoUtils
import bums.lunatic.launcher.utils.afterDay
import bums.lunatic.launcher.utils.beforeDay
import bums.lunatic.launcher.utils.beforeDayBy
import org.json.JSONObject
import java.util.Date
@@ -1621,15 +1621,15 @@ open class VideoRenderer : RssDataInterface {
before = dayString.toInt()
if (dateDesc.contains("")) {
before = 365 * before
dateTime = if (isBefore) beforeDay(date, before) else afterDay(date, before)
dateTime = if (isBefore) beforeDayBy(date, before) else afterDay(date, before)
} else if (dateDesc.contains("")) {
before = 30 * before
dateTime = if (isBefore) beforeDay(date, before) else afterDay(date, before)
dateTime = if (isBefore) beforeDayBy(date, before) else afterDay(date, before)
} else if (dateDesc.contains("")) {
before = 7 * before
dateTime = if (isBefore) beforeDay(date, before) else afterDay(date, before)
dateTime = if (isBefore) beforeDayBy(date, before) else afterDay(date, before)
} else if (dateDesc.contains("")) {
dateTime = if (isBefore) beforeDay(date, before) else afterDay(date, before)
dateTime = if (isBefore) beforeDayBy(date, before) else afterDay(date, before)
} else if (dateDesc.contains("시간")) {
dateTime = if (isBefore)dateTime.minus(before.times(1000L * 60L * 60L)) else dateTime.plus(before.times(1000L * 60L * 60L))
} else if (dateDesc.contains("")) {
@@ -15,15 +15,23 @@ fun before30Min(date: Date): Long {
return cal.timeInMillis
}
fun beforeDay(): Long {
fun beforeOneDay(): Long {
val cal: Calendar = Calendar.getInstance()
cal.setTime(Date())
cal.add(Calendar.DAY_OF_YEAR, -1)
cal.add(Calendar.HOUR_OF_DAY, -6)
cal.add(Calendar.HOUR_OF_DAY, -3)
return cal.timeInMillis
}
fun beforeDay(date: Date?, day: Int): Long {
fun beforeDay(day: Int): Long {
val cal: Calendar = Calendar.getInstance()
cal.setTime(Date())
cal.add(Calendar.DAY_OF_YEAR, Math.abs(day) * -1)
return cal.timeInMillis
}
fun beforeDayBy(date : Date, day: Int): Long {
val cal: Calendar = Calendar.getInstance()
cal.setTime(date)
cal.add(Calendar.DAY_OF_YEAR, Math.abs(day) * -1)
@@ -7,11 +7,10 @@ import bums.lunatic.launcher.model.RssDataInterface
import bums.lunatic.launcher.model.RssDataType
import bums.lunatic.launcher.model.getRssData
import bums.lunatic.launcher.model.getT
import bums.lunatic.launcher.utils.beforeDay
import bums.lunatic.launcher.utils.beforeOneDay
import bums.lunatic.launcher.workers.WorkersDb.blockKeyword
import org.jsoup.Jsoup
import org.jsoup.nodes.Element
import java.util.Date
class ArcaGetter : BaseGetter {
companion object {
@@ -87,7 +86,7 @@ class ArcaGetter : BaseGetter {
this.dateTiem = dateTime
}.apply {
// BLog.LOGE("parseArcaLi >>>> ${this}")
if (this.pubDate() > beforeDay(Date(), 3)) {
if (this.pubDate() > beforeOneDay()) {
tempArray.add(this)
}
}
@@ -6,6 +6,7 @@ import androidx.work.Worker
import androidx.work.WorkerParameters
import bums.lunatic.launcher.model.RssData
import bums.lunatic.launcher.utils.beforeDay
import bums.lunatic.launcher.utils.beforeOneDay
import java.util.Calendar
import java.util.Date
@@ -22,9 +23,9 @@ open abstract class BaseGetter : Worker {
}
val USAGT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 Safari/605.1.15"
val now = Date()
val limitDateTime = beforeDay(now,3)
val commicsDateTime = beforeDay(now,1)
val limitDateTime = beforeOneDay()
val commicsDateTime = beforeDay(1)
val temp = arrayListOf<RssData>()
constructor(context: Context, workerParams: WorkerParameters) : super(context, workerParams) {
@@ -60,7 +60,7 @@ class RecentCallGetter : BaseGetter {
@SuppressLint("RestrictedApi")
override fun realWork(): Result {
var dateParam = beforeDay(Date(),dayRange).toString()
var dateParam = beforeDay(dayRange).toString()
var managedCursor = lActivity?.contentResolver?.query(
CallLog.Calls.CONTENT_URI, arrayOf(
CallLog.Calls.NUMBER,
@@ -22,7 +22,6 @@ import java.io.BufferedReader
import java.io.IOException
import java.io.InputStream
import java.io.InputStreamReader
import java.util.Date
class RecentSmsGetter : BaseGetter {
companion object {
@@ -38,7 +37,7 @@ class RecentSmsGetter : BaseGetter {
@SuppressLint("RestrictedApi")
override fun realWork(): Result {
var dateParam = beforeDay(Date(),dayRange).toString()
var dateParam = beforeDay(dayRange).toString()
val managedCursor = lActivity?.contentResolver?.query(
Telephony.Sms.CONTENT_URI, arrayOf(
Telephony.Sms.THREAD_ID,
@@ -340,7 +339,7 @@ internal class MmsQueryHelper(
fun convertData(cursor: Cursor?) {
cursor ?: return
val dateTime = beforeDay(Date(), dayRange)
val dateTime = beforeDay(dayRange)
cursor.use {
if (cursor.moveToFirst()) {
do {
@@ -27,7 +27,7 @@ import bums.lunatic.launcher.model.TelegramMessage
import bums.lunatic.launcher.model.WeatherForcast
import bums.lunatic.launcher.utils.Blog
import bums.lunatic.launcher.utils.JamoUtils
import bums.lunatic.launcher.utils.beforeDay
import bums.lunatic.launcher.utils.beforeOneDay
import io.realm.kotlin.Realm
import io.realm.kotlin.RealmConfiguration
import io.realm.kotlin.UpdatePolicy
@@ -36,7 +36,6 @@ import io.realm.kotlin.migration.AutomaticSchemaMigration
import io.realm.kotlin.query.RealmQuery
import io.realm.kotlin.types.BaseRealmObject
import io.realm.kotlin.types.TypedRealmObject
import java.util.Date
import java.util.Locale
import java.util.regex.Pattern
import kotlin.reflect.KClass
@@ -201,7 +200,7 @@ object WorkersDb {
category: Collection<String>? = arrayListOf(),
noLimit: Boolean = false) : RealmQuery<RssData>{
var rQ = getRealm().query<RssData>()
if (!noLimit) rQ.query("pubDate > $0", beforeDay(Date(), 3))
if (!noLimit) rQ.query("pubDate > $0", beforeOneDay())
keyword?.isNotEmpty()?.letTrue {
if (JamoUtils.CHOSUNG.contains(keyword.split("")[0])) {
rQ = rQ.query("title CONTAINS $0 OR chosung CONTAINS $1 ", keyword, keyword)