From d7fdb48b4a8b44147cdf02216de2039559c205eb Mon Sep 17 00:00:00 2001 From: lunaticbum Date: Mon, 2 Sep 2024 11:30:29 +0900 Subject: [PATCH] ... --- app/src/main/AndroidManifest.xml | 1 + .../rasel/lunar/launcher/LauncherActivity.kt | 185 +++++++++-- .../rasel/lunar/launcher/apps/AppDrawer.kt | 3 + .../rasel/lunar/launcher/feeds/Feeds.kt | 10 +- .../rasel/lunar/launcher/home/LauncherHome.kt | 83 +++-- .../rasel/lunar/launcher/model/Reddit.kt | 6 + .../rasel/lunar/launcher/todos/RssDataItem.kt | 2 + .../lunar/launcher/todos/RssFeedsParser.kt | 4 +- .../lunar/launcher/todos/RssItemAdapter.kt | 165 +++++++--- .../rasel/lunar/launcher/utils/DataManager.kt | 291 ++++++++++++++++-- .../rasel/lunar/launcher/utils/RssList.kt | 14 +- app/src/main/res/drawable/daum.png | Bin 0 -> 18632 bytes app/src/main/res/drawable/fmk.png | Bin 0 -> 12514 bytes app/src/main/res/drawable/reddit.png | Bin 0 -> 19995 bytes app/src/main/res/drawable/youtube.png | Bin 0 -> 13626 bytes app/src/main/res/layout/app_drawer.xml | 4 + app/src/main/res/layout/list_item_with.xml | 2 +- 17 files changed, 637 insertions(+), 133 deletions(-) create mode 100644 app/src/main/res/drawable/daum.png create mode 100644 app/src/main/res/drawable/fmk.png create mode 100644 app/src/main/res/drawable/reddit.png create mode 100644 app/src/main/res/drawable/youtube.png diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 70a20eb8..bb8c208c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -63,6 +63,7 @@ android:theme="@style/Theme.LunarLauncher.Starting" android:launchMode="singleInstance" android:screenOrientation="portrait" + android:excludeFromRecents="true" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|screenLayout|layoutDirection" android:windowSoftInputMode="adjustResize" android:exported="true"> diff --git a/app/src/main/kotlin/rasel/lunar/launcher/LauncherActivity.kt b/app/src/main/kotlin/rasel/lunar/launcher/LauncherActivity.kt index ea3ff8f6..c4515a4c 100644 --- a/app/src/main/kotlin/rasel/lunar/launcher/LauncherActivity.kt +++ b/app/src/main/kotlin/rasel/lunar/launcher/LauncherActivity.kt @@ -32,16 +32,15 @@ import android.net.Uri import android.net.http.SslError import android.os.Build import android.os.Bundle -import android.provider.CallLog -import android.provider.ContactsContract import android.provider.Settings import android.telephony.TelephonyManager -import android.util.Log import android.view.View import android.view.WindowInsets import android.view.WindowManager import android.webkit.JavascriptInterface import android.webkit.SslErrorHandler +import android.webkit.WebResourceError +import android.webkit.WebResourceRequest import android.webkit.WebSettings import android.webkit.WebView import android.webkit.WebViewClient @@ -83,12 +82,21 @@ import rasel.lunar.launcher.home.LauncherHome import rasel.lunar.launcher.home.LauncherHome.Companion.lastedFinishedPageUrl import rasel.lunar.launcher.home.LauncherHome.Companion.listItem import rasel.lunar.launcher.home.LauncherHome.Companion.listTags +import rasel.lunar.launcher.home.LauncherHome.Companion.rssSet import rasel.lunar.launcher.home.RssItem import rasel.lunar.launcher.home.RssTagItem import rasel.lunar.launcher.utils.BLog +import rasel.lunar.launcher.utils.ComicsGetter +import rasel.lunar.launcher.utils.ComicsGetter2 import rasel.lunar.launcher.utils.MissedCallGetter import rasel.lunar.launcher.utils.NewsFeedsGetter import rasel.lunar.launcher.utils.RecentSmsGetter +import rasel.lunar.launcher.utils.RedditGetter +import rasel.lunar.launcher.utils.RssList.jGuruMain +import rasel.lunar.launcher.utils.RssList.jGuruRanks +import rasel.lunar.launcher.utils.YoutubeGetter +import rasel.lunar.launcher.utils.beforeDay +import rasel.lunar.launcher.utils.make0H import java.text.SimpleDateFormat import java.util.Date import java.util.Locale @@ -103,15 +111,21 @@ internal class LauncherActivity : AppCompatActivity() { lateinit var viewPager: ViewPager2 companion object { - val TEST_PAG = "https://jav.guru/" + private var mWorkManager: WorkManager? = null - val TEST_PAG2 = "https://torrentsee246.com/topic/index?category1=129&category2=132" val SMS_WORK_TAG = "RecentSmsGetter" val CALL_WORK_TAG = "MissedCallGetter" val FEDDS_WORK_TAG = "NewsFeedsGetter" - + val YT_WORK_TAG = "YoutubeGetter" + val COMIC_WORK_TAG = "ComicGetter" + val COMIC2_WORK_TAG = "ComicGetter2" + val REDDIT_WORK_TAG = "RedditGetter" + val shortTimePeriod = 60L + val longTimePeriod = 60L + val midTimePeriod = 60L var isOpendFold = false + var rssSetTouchCount = 0 @JvmStatic var lActivity: LauncherActivity? = null @JvmStatic var appWidgetManager: AppWidgetManager? = null @@ -122,7 +136,7 @@ internal class LauncherActivity : AppCompatActivity() { mWorkManager?.enqueueUniquePeriodicWork( SMS_WORK_TAG, ExistingPeriodicWorkPolicy.CANCEL_AND_REENQUEUE, - PeriodicWorkRequestBuilder(30, TimeUnit.MINUTES) + PeriodicWorkRequestBuilder(longTimePeriod, TimeUnit.MINUTES) .addTag(SMS_WORK_TAG) .build()) }, 2, TimeUnit.SECONDS) @@ -133,7 +147,7 @@ internal class LauncherActivity : AppCompatActivity() { mWorkManager?.enqueueUniquePeriodicWork( CALL_WORK_TAG, ExistingPeriodicWorkPolicy.CANCEL_AND_REENQUEUE, - PeriodicWorkRequestBuilder(30, TimeUnit.MINUTES) + PeriodicWorkRequestBuilder(longTimePeriod, TimeUnit.MINUTES) .addTag(CALL_WORK_TAG) .build()) }, 2, TimeUnit.SECONDS) @@ -143,12 +157,53 @@ internal class LauncherActivity : AppCompatActivity() { mWorkManager?.cancelAllWorkByTag(FEDDS_WORK_TAG) mWorkManager?.enqueueUniquePeriodicWork( FEDDS_WORK_TAG, ExistingPeriodicWorkPolicy.CANCEL_AND_REENQUEUE, - PeriodicWorkRequestBuilder(30, TimeUnit.MINUTES) + PeriodicWorkRequestBuilder(shortTimePeriod, TimeUnit.MINUTES) .addTag(FEDDS_WORK_TAG) .build()) }, 2, TimeUnit.SECONDS) } + fun refreshYoutube() { + Executors.newSingleThreadScheduledExecutor().schedule({ + mWorkManager?.cancelAllWorkByTag(YT_WORK_TAG) + mWorkManager?.enqueueUniquePeriodicWork( + YT_WORK_TAG, ExistingPeriodicWorkPolicy.CANCEL_AND_REENQUEUE, + PeriodicWorkRequestBuilder(longTimePeriod, TimeUnit.MINUTES) + .addTag(YT_WORK_TAG) + .build()) + }, 2, TimeUnit.SECONDS) + } + fun refreshReddit() { + Executors.newSingleThreadScheduledExecutor().schedule({ + mWorkManager?.cancelAllWorkByTag(REDDIT_WORK_TAG) + mWorkManager?.enqueueUniquePeriodicWork( + REDDIT_WORK_TAG, ExistingPeriodicWorkPolicy.CANCEL_AND_REENQUEUE, + PeriodicWorkRequestBuilder(midTimePeriod, TimeUnit.MINUTES) + .addTag(REDDIT_WORK_TAG) + .build()) + }, 2, TimeUnit.SECONDS) + } + fun refreshComics() { + Executors.newSingleThreadScheduledExecutor().schedule({ + mWorkManager?.cancelAllWorkByTag(COMIC_WORK_TAG) + mWorkManager?.enqueueUniquePeriodicWork( + COMIC_WORK_TAG, ExistingPeriodicWorkPolicy.CANCEL_AND_REENQUEUE, + PeriodicWorkRequestBuilder(shortTimePeriod, TimeUnit.MINUTES) + .addTag(COMIC_WORK_TAG) + .build()) + refreshComics2() + }, 2, TimeUnit.SECONDS) + } + fun refreshComics2() { + Executors.newSingleThreadScheduledExecutor().schedule({ + mWorkManager?.cancelAllWorkByTag(COMIC2_WORK_TAG) + mWorkManager?.enqueueUniquePeriodicWork( + COMIC2_WORK_TAG, ExistingPeriodicWorkPolicy.CANCEL_AND_REENQUEUE, + PeriodicWorkRequestBuilder(shortTimePeriod, TimeUnit.MINUTES) + .addTag(COMIC2_WORK_TAG) + .build()) + }, 2, TimeUnit.SECONDS) + } fun workmanager() : WorkManager? { if (mWorkManager == null && lActivity != null) { mWorkManager = WorkManager.getInstance(lActivity!!) @@ -213,6 +268,9 @@ internal class LauncherActivity : AppCompatActivity() { refreshSms() refreshCalls() refreshFeeds() + refreshYoutube() + refreshReddit() + refreshComics() } override fun onDestroy() { @@ -225,6 +283,12 @@ internal class LauncherActivity : AppCompatActivity() { BLog.LOGE("LauncherActivity onStart()") statusBarView() setBgColor() + + if (listItem.size < 2) { + lActivity?.doWebParseStart(jGuruRanks) { + + } + } } override fun onResume() { super.onResume() @@ -398,15 +462,28 @@ internal class LauncherActivity : AppCompatActivity() { } var callBack : (()->Unit)? = null - fun doWebPare(url : String, callBack : (()->Unit)?) { + fun doWebParseStart(url : String, callBack : (()->Unit)?) { this.callBack = callBack + binding.searcher01.post { binding.searcher01.visibility = View.VISIBLE } BLog.LOGE("binding.otherCheck before ThreadRun") binding.searcher01.webViewClient = object : WebViewClient() { + + override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean { + view?.loadUrl(url!!) + return false + } + override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) { BLog.LOGE("binding.otherCheck searcher01 in onPageStarted ${url}") super.onPageStarted(view, url, favicon) } - + override fun onReceivedError( + view: WebView?, + request: WebResourceRequest?, + error: WebResourceError? + ) { + super.onReceivedError(view, request, error) + } override fun onReceivedSslError( view: WebView?, handler: SslErrorHandler?, @@ -432,6 +509,7 @@ internal class LauncherActivity : AppCompatActivity() { } } } else { + //if (url?.contains("guru", true) == true) view?.evaluateJavascript( "function getAll() {\n" + " MyJavaScriptInterface.sendValueFromHtml(document.getElementsByTagName('html')[0].innerHTML)" + @@ -443,15 +521,22 @@ internal class LauncherActivity : AppCompatActivity() { } } callBack?.invoke() + binding.searcher01.post { binding.searcher01.visibility = View.GONE } + } } WebView.setWebContentsDebuggingEnabled(false) binding.searcher01.apply { +// Jsoup.connect("https://missav.com/dm11/ko").userAgent() +// .timeout(30000).get()?.apply { +// BLog.LOGE("Jsoup.connect(missAv).get() ${this}") +// } this.addJavascriptInterface(MyJavaScriptInterface(this),"MyJavaScriptInterface") setBackgroundColor(Color.WHITE) // 백그라운드 색상 설정 setLayerType(View.LAYER_TYPE_SOFTWARE, null) // 랜더링 이슈 해결 try { settings.apply { + userAgentString = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36" javaScriptEnabled = true // 자바스크립트 사용 가능하도록 설정 loadWithOverviewMode = true // 전체 웹페이지를 화면에 맞게 로드 useWideViewPort = true // 화면에 맞게 페이지 확대/축소 @@ -471,13 +556,47 @@ internal class LauncherActivity : AppCompatActivity() { var maxDate : Long = Long.MIN_VALUE var minDate : Long = Long.MAX_VALUE - val triple = 1000L * 60L * 60L * 24L * 3L + val triple = 1000L * 60L * 60L * 24L * 2L val simpldateFormat = SimpleDateFormat("d MMM, yy", Locale.US) + fun jGuruToday(doc: Document) { + doc.getElementsByTag("li").forEach { + if (it.getElementsByTag("img").size > 0) { + var title = it.getElementsByTag("a").get(0).attr("title") + var model = title.replace("[", "").split("]")[0] + var pageLink = it.getElementsByTag("a").get(0).attr("href") + var imgg = it.getElementsByTag("img").get(0).attr("src") + var actor = if (it.getElementsByClass("wpptax").size > 0 )it.getElementsByClass("wpptax").get(0).text() else "" + if (pageLink.length > 0 && imgg.length > 0 && title.length > 0 && model.length > 0) { + listItem.add( + RssItem( + model = model, + title = title, + pageLink = pageLink, + image = imgg, + tags = actor, + date = beforeDay(Date(),3) + 360000 + ) + ) + } + } + }.apply { + this@LauncherActivity.callBack?.invoke() + var idx = 0 + listItem?.forEach { + if(it.date > beforeDay(Date(),3) && idx < 10) { + it.date = it.date + (10000L * idx) + rssSet.put(it.pageLink,it) + idx += 1 + } + } + Toast.makeText(this@LauncherActivity, + "Stored rank data", Toast.LENGTH_LONG).show() + binding.searcher01?.post { binding.searcher01.loadUrl(jGuruMain) } + } + } fun jGuruMain(doc: Document) { -// BLog.LOGE("do default parsing") // BLog.LOGE("SimpleDateFormat D MM yy => ${SimpleDateFormat("d MMM yy", Locale.US).format(Date())}") val prevUrl = doc.getElementsByClass("prev").get(0).getElementsByAttribute("href").get(0).attr("href") -// BLog.LOGE("doc.getElementsByClass(prev).get(0).html() ${prevUrl}") doc.getElementsByClass("column").forEach { var title = it.getElementsByAttribute("title").get(0).text() var model = title.replace("[","").split("]")[0] @@ -486,21 +605,30 @@ internal class LauncherActivity : AppCompatActivity() { var tags = it.getElementsByClass("tags").get(0).text() var date = it.getElementsByClass("date").get(0).text() var regDate = simpldateFormat.parse(date).time + minDate = Math.min(minDate,regDate) maxDate = Math.max(maxDate,regDate) - listItem.add(RssItem(model = model, title = title, pageLink = pageLink, image = imgg, tags = tags, date = simpldateFormat.parse(date).time)) + listItem.add(RssItem(model = model, title = title, pageLink = pageLink, image = imgg, tags = tags, date = make0H(simpldateFormat.parse(date)))) }.apply { - - BLog.LOGE("listItem.size >>> ${listItem.size}") - if (prevUrl!=null && prevUrl.length > TEST_PAG.length && prevUrl.contains("/page/") && ((maxDate - minDate) < triple)) { +// if (prevUrl!=null && prevUrl.length > TEST_PAG.length && prevUrl.contains("/page/") && ((maxDate - minDate) < triple)) { +// listItem.sortByDescending { it.date } +// binding.searcher01.postDelayed({binding.searcher01.loadUrl(prevUrl)}, 5000L) +//// } else { + var itemC = 0 listItem.sortByDescending { it.date } - binding.searcher01.postDelayed({binding.searcher01.loadUrl(prevUrl)}, 5000L) - } else { - listItem.sortByDescending { it.date } - BLog.LOGE("Stored data :: ${listItem.size}items ${simpldateFormat.format(Date(minDate))} ~ ${simpldateFormat.format(Date(maxDate))}") + listItem?.forEach { + if(it.date > beforeDay(Date(),1)) { + if (itemC < 10) { + it.date = it.date + (10000L * itemC) + rssSet.put(it.pageLink, it) + } + itemC = itemC + 1 + } + } + BLog.LOGE("Stored data :: ${listItem.size}items ${simpldateFormat.format(Date(minDate))} ~ ${simpldateFormat.format(Date(maxDate))} set in ${itemC}") Toast.makeText(this@LauncherActivity, - "Stored data :: ${listItem.size} items :: [${simpldateFormat.format(Date(minDate))} ~ ${simpldateFormat.format(Date(maxDate))}]", Toast.LENGTH_LONG).show() - } + "Stored data :: ${listItem.size} items :: [${simpldateFormat.format(Date(minDate))} ~ ${simpldateFormat.format(Date(maxDate))}] \n set in ${itemC}", Toast.LENGTH_LONG).show() +// } this@LauncherActivity.callBack?.invoke() } } @@ -532,20 +660,25 @@ internal class LauncherActivity : AppCompatActivity() { @JavascriptInterface fun sendValueFromHtml(result: String) { - if (lastedFinishedPageUrl.contains(TEST_PAG)) { + if (lastedFinishedPageUrl.contains(jGuruMain)) { var htmlString = result.replace("\\u003","<") val doc: Document = Jsoup.parse(htmlString) if (lastedFinishedPageUrl?.contains("page") == true || lastedFinishedPageUrl?.equals( - TEST_PAG + jGuruMain ) == true ) { jGuruMain(doc) + } else if (lastedFinishedPageUrl?.contains("/most-watched-rank") == true) { +jGuruToday(doc) } else if (lastedFinishedPageUrl?.contains("/tags/") == true) { jGuruTag(doc) } } else if (lastedFinishedPageUrl?.contains("youtube") == true) { // val doc: Document = Jsoup.parse(result) // ytChannel(doc) + } else if (lastedFinishedPageUrl?.contains("missav")==true) { + val doc: Document = Jsoup.parse(result) + BLog.LOGE("missav >>> ${doc}") } BLog.LOGE("binding.otherCheck after ThreadRun") } diff --git a/app/src/main/kotlin/rasel/lunar/launcher/apps/AppDrawer.kt b/app/src/main/kotlin/rasel/lunar/launcher/apps/AppDrawer.kt index 3cad22ba..0b11aef1 100644 --- a/app/src/main/kotlin/rasel/lunar/launcher/apps/AppDrawer.kt +++ b/app/src/main/kotlin/rasel/lunar/launcher/apps/AppDrawer.kt @@ -124,6 +124,9 @@ internal class AppDrawer : Fragment() { binding.searchNmap.setOnClickListener { openSearchApps("nmap://search?query=${getInputText()}&appname=${BuildConfig.APPLICATION_ID}","com.nhn.android.nmap") } + binding.searchYoutube.setOnClickListener { + openSearchApps("https://www.youtube.com/results?search_query=${getInputText()}","com.google.android.youtube") + } binding.searchGoogleMap.setOnClickListener { openSearchApps("geo:0,0?q=${getInputText()}","com.google.android.apps.maps") } diff --git a/app/src/main/kotlin/rasel/lunar/launcher/feeds/Feeds.kt b/app/src/main/kotlin/rasel/lunar/launcher/feeds/Feeds.kt index 3a5359e6..6edae365 100644 --- a/app/src/main/kotlin/rasel/lunar/launcher/feeds/Feeds.kt +++ b/app/src/main/kotlin/rasel/lunar/launcher/feeds/Feeds.kt @@ -18,7 +18,6 @@ package rasel.lunar.launcher.feeds -import android.R.attr.* import android.app.Activity.RESULT_CANCELED import android.app.Activity.RESULT_OK import android.appwidget.AppWidgetManager @@ -36,13 +35,10 @@ import androidx.fragment.app.Fragment import androidx.lifecycle.Lifecycle import androidx.lifecycle.lifecycleScope import androidx.lifecycle.repeatOnLifecycle -import androidx.recyclerview.widget.GridLayoutManager import com.google.android.material.button.MaterialButtonToggleGroup import kotlinx.coroutines.* -import rasel.lunar.launcher.LauncherActivity.Companion.TEST_PAG import rasel.lunar.launcher.LauncherActivity.Companion.appWidgetHost import rasel.lunar.launcher.LauncherActivity.Companion.appWidgetManager -import rasel.lunar.launcher.LauncherActivity.Companion.isOpendFold import rasel.lunar.launcher.LauncherActivity.Companion.lActivity import rasel.lunar.launcher.R import rasel.lunar.launcher.databinding.FeedsBinding @@ -57,6 +53,7 @@ import rasel.lunar.launcher.home.LauncherHome.Companion.listItem import rasel.lunar.launcher.home.LauncherHome.Companion.listTags import rasel.lunar.launcher.home.RssItem import rasel.lunar.launcher.home.RssTagItem +import rasel.lunar.launcher.utils.RssList.jGuruMain import java.util.* @@ -162,7 +159,7 @@ internal class Feeds : Fragment() { refresh.visibility = View.VISIBLE rss.visibility = View.GONE refresh.setOnClickListener { - lActivity?.doWebPare(TEST_PAG) { + var call = { if (listItem.size > 0) { rss?.postDelayed( { mRssAdapter?.updateData(listItem) @@ -172,6 +169,7 @@ internal class Feeds : Fragment() { },500L) } } + } } } @@ -192,7 +190,7 @@ internal class Feeds : Fragment() { refresh.visibility = View.VISIBLE rss2.visibility = View.GONE refresh.setOnClickListener { - lActivity?.doWebPare(TEST_PAG.plus("tags")) { + lActivity?.doWebParseStart(jGuruMain.plus("tags")) { if (listTags.size > 0) { rss2?.postDelayed( { mRssAdapter2?.updateData(listTags) diff --git a/app/src/main/kotlin/rasel/lunar/launcher/home/LauncherHome.kt b/app/src/main/kotlin/rasel/lunar/launcher/home/LauncherHome.kt index d208326e..e5d1064d 100644 --- a/app/src/main/kotlin/rasel/lunar/launcher/home/LauncherHome.kt +++ b/app/src/main/kotlin/rasel/lunar/launcher/home/LauncherHome.kt @@ -39,14 +39,22 @@ import androidx.core.content.ContextCompat.RECEIVER_EXPORTED import androidx.core.content.ContextCompat.registerReceiver import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager +import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.LinearLayoutManager import com.google.gson.Gson +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.launch import org.json.JSONArray import org.json.JSONObject +import org.jsoup.Jsoup import rasel.lunar.launcher.LauncherActivity.Companion.CALL_WORK_TAG import rasel.lunar.launcher.LauncherActivity.Companion.FEDDS_WORK_TAG import rasel.lunar.launcher.LauncherActivity.Companion.SMS_WORK_TAG import rasel.lunar.launcher.LauncherActivity.Companion.lActivity +import rasel.lunar.launcher.LauncherActivity.Companion.refreshComics +import rasel.lunar.launcher.LauncherActivity.Companion.refreshFeeds +import rasel.lunar.launcher.LauncherActivity.Companion.refreshReddit +import rasel.lunar.launcher.LauncherActivity.Companion.refreshYoutube import rasel.lunar.launcher.LauncherActivity.Companion.workmanager import rasel.lunar.launcher.R import rasel.lunar.launcher.databinding.LauncherHomeBinding @@ -76,6 +84,8 @@ import rasel.lunar.launcher.utils.beforeDay import java.util.Calendar import java.util.Date import java.util.Locale +import java.util.concurrent.Executors +import java.util.concurrent.TimeUnit internal class LauncherHome : Fragment() { @@ -98,7 +108,6 @@ internal class LauncherHome : Fragment() { var rssList = arrayListOf() - } private var nReceiver: NotificationReceiver? = null @@ -139,15 +148,20 @@ internal class LauncherHome : Fragment() { batteryReceiver = BatteryReceiver(binding.batteryProgress) mMissedCallsAdapter = MissedCallsAdapter(callList, requireContext()) mSmsLogsAdapter = SmsLogsAdapter(smsList, requireContext()) - mRssAdapter = RssItemAdapter(rssList, requireContext()) + mRssAdapter = RssItemAdapter(requireContext()) binding.mainList.adapter = mMissedCallsAdapter binding.smsList.adapter = mSmsLogsAdapter binding.infoList.adapter = mRssAdapter + val decoration = DividerItemDecoration(requireContext(), DividerItemDecoration.VERTICAL) + binding.mainList.addItemDecoration(decoration) + binding.smsList.addItemDecoration(decoration) + binding.infoList.addItemDecoration(decoration) binding.missedCalls.isChecked = true binding.smsList.visibility = View.GONE binding.infoList.visibility = View.GONE binding.favAppsGroup.visibility = View.GONE + binding.mainList.layoutManager = LinearLayoutManager(requireContext()) binding.smsList.layoutManager = LinearLayoutManager(requireContext()) binding.infoList.layoutManager = LinearLayoutManager(requireContext()) @@ -223,11 +237,26 @@ internal class LauncherHome : Fragment() { chooseAdpater() } -// binding.otherCheck.setOnLongClickListener { -// listItem.clear() -// lActivity?.doWebPare(TEST_PAG, null) -// true -// } + binding.otherCheck.setOnLongClickListener { + synchronized(rssSet) { + val now = Date() + var keys = arrayListOf() + rssSet.forEach { t, u -> + if (u.pubDate() <= beforeDay(now,3)) { + keys.add(t) + } + }.apply { + keys.forEach { rssSet.remove(it) } + }.apply { + refreshYoutube() + refreshComics() + refreshFeeds() + refreshReddit() + } + } + true + } + // binding.summaryChoose.setOnCheckedChangeListener { group, checkedId -> // chooseAdpater() // } @@ -236,7 +265,7 @@ internal class LauncherHome : Fragment() { //// lActivity?.sendBroadcast(i) //// BLog.LOGE("intent >>> ${i.action}") } - +// https://www.youtube.com/results?search_query=sds fun chooseAdpater () { @@ -252,8 +281,8 @@ internal class LauncherHome : Fragment() { }.apply { callList.sortByDescending { it.date } Handler(Looper.getMainLooper()).post { - mMissedCallsAdapter.updateData(callList) binding.mainList.visibility = View.VISIBLE + mMissedCallsAdapter.updateData(callList) } } } catch (e : Exception) { @@ -265,8 +294,8 @@ internal class LauncherHome : Fragment() { smsList.sortByDescending { it.rcvDate } binding.smsList.visibility = View.VISIBLE Handler(Looper.getMainLooper()).post { - mSmsLogsAdapter.updateData(smsList) binding.smsList.visibility = View.VISIBLE + mSmsLogsAdapter.updateData(smsList) } } catch (e : Exception) { @@ -274,19 +303,26 @@ internal class LauncherHome : Fragment() { } } else if(binding.otherCheck.isChecked) { try { - rssList.clear() - rssSet.forEach { k,v -> - if(v.pubDate() > beforeDay(Date(),3)) { - rssList.add(v) - } else { - rssSet.remove(k,v) - } - }.apply { - rssList.sortByDescending{ it.pubDate() } - binding.infoList.visibility = View.VISIBLE - Handler(Looper.getMainLooper()).post { - mRssAdapter.updateData(rssList) - binding.infoList.visibility = View.VISIBLE + GlobalScope.launch { + (rssSet.clone() as? HashMap)?.let { temMap -> + synchronized(binding.infoList) { + var tempList = arrayListOf() + temMap.forEach { k,v -> + if(v.pubDate() > beforeDay(Date(),3)) { + tempList.add(v) + } else { + + } + }.apply { + tempList.sortByDescending { it.pubDate() } + rssList.clear() + rssList.addAll(tempList) + Handler(Looper.getMainLooper()).post { + binding.infoList.visibility = View.VISIBLE + mRssAdapter.updateData(rssList) + } + } + } } } }catch (e : Exception){} @@ -311,6 +347,7 @@ internal class LauncherHome : Fragment() { /* show weather */ WeatherExecutor(settingsPrefs).generateWeatherString(binding.weather) } + } diff --git a/app/src/main/kotlin/rasel/lunar/launcher/model/Reddit.kt b/app/src/main/kotlin/rasel/lunar/launcher/model/Reddit.kt index cd76ff4a..8cf9d9ea 100644 --- a/app/src/main/kotlin/rasel/lunar/launcher/model/Reddit.kt +++ b/app/src/main/kotlin/rasel/lunar/launcher/model/Reddit.kt @@ -4,6 +4,8 @@ import rasel.lunar.launcher.todos.Image import rasel.lunar.launcher.todos.RssDataItem import rasel.lunar.launcher.todos.RssDataType import rasel.lunar.launcher.todos.Source +import rasel.lunar.launcher.utils.beforeDay +import java.sql.Date class Reddit { @@ -255,6 +257,9 @@ class Data : RssDataItem { } override fun originPage(): String { + if (post_hint?.contains("video") == true && (permalink?.length ?: 0 > 3)) { + return "https://www.reddit.com".plus(permalink) + } return url ?: "" } @@ -263,6 +268,7 @@ class Data : RssDataItem { } override fun pubDate(): Long { +// return beforeDay(java.util.Date(),2) if (created_utc != null) { return created_utc!!.toLong() * 1000L } else if (created != null) { diff --git a/app/src/main/kotlin/rasel/lunar/launcher/todos/RssDataItem.kt b/app/src/main/kotlin/rasel/lunar/launcher/todos/RssDataItem.kt index b5eba46e..9118f3bc 100644 --- a/app/src/main/kotlin/rasel/lunar/launcher/todos/RssDataItem.kt +++ b/app/src/main/kotlin/rasel/lunar/launcher/todos/RssDataItem.kt @@ -7,6 +7,8 @@ enum class RssDataType { GURU, TAGS, REDDIT, + Dotax, + FmKorae, } interface RssDataItem { diff --git a/app/src/main/kotlin/rasel/lunar/launcher/todos/RssFeedsParser.kt b/app/src/main/kotlin/rasel/lunar/launcher/todos/RssFeedsParser.kt index 481ab836..6f416fa2 100644 --- a/app/src/main/kotlin/rasel/lunar/launcher/todos/RssFeedsParser.kt +++ b/app/src/main/kotlin/rasel/lunar/launcher/todos/RssFeedsParser.kt @@ -41,8 +41,8 @@ object RssFeedsParser { // BLog.LOGE("getReddit >>>>> link ${URLDecoder.decode(url,"utf-8")} , itemSize = ${Gson().toJson(it)}") if(((it.data?.created_utc ?: 0).toLong() * 1000L > dateTime)) { // BLog.LOGE("getReddit >>>>> link ${URLDecoder.decode(url,"utf-8")} , itemSize = ${Gson().toJson(it)}") - (it.data as? RssDataItem)?.let { - returnList.add(it) + (it.data as? RssDataItem)?.let { rss -> + returnList.add(rss) } } } diff --git a/app/src/main/kotlin/rasel/lunar/launcher/todos/RssItemAdapter.kt b/app/src/main/kotlin/rasel/lunar/launcher/todos/RssItemAdapter.kt index 63bdb8cc..0aa837e8 100644 --- a/app/src/main/kotlin/rasel/lunar/launcher/todos/RssItemAdapter.kt +++ b/app/src/main/kotlin/rasel/lunar/launcher/todos/RssItemAdapter.kt @@ -19,63 +19,54 @@ package rasel.lunar.launcher.todos import android.annotation.SuppressLint -import android.content.ClipData -import android.content.ClipboardManager import android.content.Context import android.content.Intent import android.net.Uri -import android.text.Html import android.view.Gravity import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.core.content.ContextCompat.startActivity +import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.net.toUri import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.RecyclerView -import com.google.gson.Gson import com.squareup.picasso.Picasso import rasel.lunar.launcher.LauncherActivity.Companion.lActivity import rasel.lunar.launcher.R -import rasel.lunar.launcher.databinding.ListItemBinding import rasel.lunar.launcher.databinding.ListItemWithBinding import rasel.lunar.launcher.home.RssItem -import rasel.lunar.launcher.home.RssTagItem -import rasel.lunar.launcher.utils.BLog -import rasel.lunar.launcher.utils.Hashids -import rasel.lunar.launcher.utils.RecentSmsLog import java.text.SimpleDateFormat import java.util.Date internal class RssItemAdapter ( - private val smsList: ArrayList, private val context: Context) : RecyclerView.Adapter() { - + private var rssDataItemLis: ArrayList = arrayListOf() override fun onCreateViewHolder(viewGroup: ViewGroup, i: Int): RssTag { val binding = ListItemWithBinding.inflate(LayoutInflater.from(viewGroup.context), viewGroup, false) return RssTag(binding) } override fun getItemCount(): Int { - return smsList.size + return rssDataItemLis.size } val dateFormat = SimpleDateFormat("hh:mm / yy - MM - dd") @SuppressLint("SetTextI18n") override fun onBindViewHolder(holder: RssTag, position: Int) { - val todo = smsList[position] + val todo = rssDataItemLis[position] holder.view.date.text = "${dateFormat.format(Date(todo.pubDate()))}" // holder.view.desc.visibility = View.GONE - + holder.view.date.setOnClickListener { } when(todo.category()) { RssDataType.YOUTUBE -> { if(todo.thumbnailUrl()?.length ?: 0 > 6) { Picasso.get().load(todo.thumbnailUrl().toUri()).into(holder.view.circlePreview) holder.view.circlePreview.visibility = View.VISIBLE } + holder.view.circlePreview.layoutParams = ConstraintLayout.LayoutParams(280,280) holder.view.title.text = "${todo.title()}" holder.view.title.gravity = Gravity.CENTER_VERTICAL.plus(Gravity.RIGHT) holder.view.desc.gravity = Gravity.CENTER_VERTICAL.plus(Gravity.RIGHT) @@ -83,15 +74,30 @@ internal class RssItemAdapter ( holder.view.desc.visibility = View.VISIBLE holder.view.desc.text = if(todo.description().contains("게시자")) todo.description().split("게시자")[0] else todo.description() // holder.view.root.setOnClickListener { openYouTube(todo.originPage()) } + holder.view.root.setOnClickListener { + + } + holder.view.root.setOnLongClickListener { + + openYouTube(todo.originPage()) + + true + } } RssDataType.NewsFeed -> { - holder.view.desc.text = "" + holder.view.desc.text = todo.category().name holder.view.circlePreview.visibility = View.GONE holder.view.title.text = if(todo.title().length > 30)todo.title().substring(0,30).plus("...") else todo.title() - holder.view.title.gravity = Gravity.CENTER_VERTICAL.plus(Gravity.LEFT) - holder.view.desc.gravity = Gravity.CENTER_VERTICAL.plus(Gravity.LEFT) + holder.view.title.gravity = Gravity.CENTER_VERTICAL.plus(Gravity.RIGHT) + holder.view.desc.gravity = Gravity.CENTER_VERTICAL.plus(Gravity.RIGHT) holder.view.date.gravity = Gravity.CENTER_VERTICAL.plus(Gravity.RIGHT) -// holder.view.root.setOnClickListener { openNews(todo.originPage()) } + holder.view.root.setOnClickListener { + + } + holder.view.root.setOnLongClickListener { + openNews(todo.originPage()) + true + } } RssDataType.NO_DATA -> {} else -> { @@ -102,45 +108,85 @@ internal class RssItemAdapter ( if (todo.pubDate() > 1000L) { holder.view.date.text = dateFormat.format(Date(todo.pubDate())) } + + if(todo.description().contains("nsfw") || todo.category().equals(RssDataType.GURU)) { + holder.view.circlePreview.visibility = View.GONE + holder.view.circlePreview.layoutParams = ConstraintLayout.LayoutParams(360,360) + } else if( todo.category().equals(RssDataType.Dotax)) { + holder.view.circlePreview.setImageResource(R.drawable.daum) + holder.view.circlePreview.visibility = View.VISIBLE + holder.view.circlePreview.layoutParams = ConstraintLayout.LayoutParams(120,120) + } else if( todo.category().equals(RssDataType.REDDIT)) { + holder.view.circlePreview.setImageResource(R.drawable.reddit) + holder.view.circlePreview.visibility = View.VISIBLE + holder.view.circlePreview.layoutParams = ConstraintLayout.LayoutParams(120,120) + } else if( todo.category().equals(RssDataType.FmKorae)) { + holder.view.circlePreview.setImageResource(R.drawable.fmk) + holder.view.circlePreview.visibility = View.VISIBLE + holder.view.circlePreview.layoutParams = ConstraintLayout.LayoutParams(120,120) + } + if(todo.thumbnailUrl()?.length ?: 0 > 6) { Picasso.get().load(todo.thumbnailUrl().toUri()).into(holder.view.circlePreview) } - holder.view.circlePreview.visibility = View.GONE - holder.view.desc.text = todo.description() + + holder.view.desc.text = todo.description().plus(" ").plus(todo.category().name) holder.view.desc.visibility = View.VISIBLE holder.view.date.visibility = View.VISIBLE - holder.view.root.setOnClickListener { +// holder.view.date.setOnTouchListener { v,e -> +// if (holder.view.date.equals(v)) { +// when(e.action) { +// MotionEvent.ACTION_DOWN -> {holder.view.circlePreview.visibility = View.VISIBLE} +// MotionEvent.ACTION_UP -> {holder.view.circlePreview.visibility = View.GONE} +// MotionEvent.ACTION_UP -> {holder.view.circlePreview.visibility = View.GONE} +// } +// } +// false +// } + + holder.view.date.setOnClickListener { holder.view.circlePreview.visibility = View.VISIBLE holder.view.circlePreview.postDelayed({ holder.view.circlePreview.visibility = View.GONE - },500L) + },1000L) + } + holder.view.root.setOnLongClickListener { + if ( todo.category().equals(RssDataType.GURU)) { + openOpera(todo.originPage()) + } else if( todo.category().equals(RssDataType.REDDIT)) { + openReddit(todo.originPage()) + } else if( todo.category().equals(RssDataType.Dotax)) { + openDotax(todo.originPage()) + }else if( todo.category().equals(RssDataType.FmKorae)) { + openNews(todo.originPage()) + } + true } } } - - holder.view.root.setOnLongClickListener { - when(todo.category()) { - RssDataType.YOUTUBE -> { - openYouTube(todo.originPage()) - } - RssDataType.NewsFeed -> { - openNews(todo.originPage()) - } - RssDataType.NO_DATA -> {} - else -> { - - } - } -// val clipBoard = -// lActivity!!.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager -// clipBoard.setPrimaryClip(ClipData.newPlainText("", todo.thumbnailUrl())) - true - } - } + fun openOpera(schemeString : String) { + val gmmIntentUri = Uri.parse(schemeString) + val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri) + mapIntent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS) + mapIntent.setPackage("com.opera.browser") + lActivity?.startActivity(mapIntent) + } + + fun updateData(newList: List) { - DiffUtil.calculateDiff(RssItemDiffUtil(smsList, newList)).dispatchUpdatesTo(this) + try { + DiffUtil.calculateDiff(RssItemDiffUtil(rssDataItemLis, newList)).apply { + + }.dispatchUpdatesTo(this).apply { + notifyItemRangeChanged(0,10) + } + rssDataItemLis.clear() + rssDataItemLis.addAll(newList) + }catch ( e : Exception) { + e.printStackTrace() + } } fun openNews(schemeString : String) { val gmmIntentUri = Uri.parse(schemeString) @@ -156,18 +202,41 @@ internal class RssItemAdapter ( mapIntent.setPackage("com.google.android.youtube") lActivity?.startActivity(mapIntent) } + + fun openReddit(schemeString : String) { + val gmmIntentUri = Uri.parse(schemeString) + val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri) + mapIntent.setPackage("com.reddit.frontpage") + lActivity?.startActivity(mapIntent) + } + + fun openDotax(schemeString : String) { + val gmmIntentUri = Uri.parse(schemeString) + val mapIntent = Intent(Intent.ACTION_VIEW) + mapIntent.setPackage("net.daum.android.cafe") + mapIntent.setData(gmmIntentUri) + lActivity?.startActivity(mapIntent) + } } + +//fun dp2px(dp: Float): Float { +// val resources: Resources = this.getResources() +// val metrics = resources.displayMetrics +// val px = dp * (metrics.densityDpi.toFloat() / DisplayMetrics.DENSITY_DEFAULT) +// return px +//} + internal class RssTag(var view: ListItemWithBinding) : RecyclerView.ViewHolder(view.root) internal class RssItemDiffUtil( - private val oldList: List, private val newList: List + var oldList: List, var newList: List ) : DiffUtil.Callback() { override fun getOldListSize(): Int = oldList.size override fun getNewListSize(): Int = newList.size - override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean = - oldList[oldItemPosition].originPage() == newList[newItemPosition].originPage() + override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean = + oldList[oldItemPosition].originPage() == if (newList.size > newItemPosition) newList[newItemPosition].originPage() else "" override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean = - oldList[oldItemPosition].originPage() == newList[newItemPosition].originPage() + oldList[oldItemPosition].originPage() == if (newList.size > newItemPosition) newList[newItemPosition].originPage() else "" } diff --git a/app/src/main/kotlin/rasel/lunar/launcher/utils/DataManager.kt b/app/src/main/kotlin/rasel/lunar/launcher/utils/DataManager.kt index 87e586d3..13ba6c70 100644 --- a/app/src/main/kotlin/rasel/lunar/launcher/utils/DataManager.kt +++ b/app/src/main/kotlin/rasel/lunar/launcher/utils/DataManager.kt @@ -15,13 +15,16 @@ import org.json.JSONObject import org.jsoup.Jsoup import org.jsoup.nodes.Document import rasel.lunar.launcher.LauncherActivity.Companion.lActivity +import rasel.lunar.launcher.LauncherActivity.Companion.rssSetTouchCount import rasel.lunar.launcher.home.LauncherHome.Companion.missedCalls import rasel.lunar.launcher.home.LauncherHome.Companion.rssSet import rasel.lunar.launcher.home.LauncherHome.Companion.smsList import rasel.lunar.launcher.home.MissedCall +import rasel.lunar.launcher.home.RssItem import rasel.lunar.launcher.todos.Root import rasel.lunar.launcher.todos.RssDataItem +import rasel.lunar.launcher.todos.RssDataType import rasel.lunar.launcher.todos.RssFeedsParser import rasel.lunar.launcher.utils.RssList.feedJsons import java.io.BufferedReader @@ -131,6 +134,13 @@ class MissedCallGetter : Worker { } +fun before30Min(date: Date): Long { + val cal: Calendar = Calendar.getInstance() + cal.setTime(date) + cal.add(Calendar.MINUTE, -30) + return cal.timeInMillis +} + fun beforeDay(date: Date?, day: Int): Long { val cal: Calendar = Calendar.getInstance() cal.setTime(date) @@ -138,6 +148,13 @@ fun beforeDay(date: Date?, day: Int): Long { return cal.timeInMillis } +fun make0H(date: Date?): Long { + val cal: Calendar = Calendar.getInstance() + cal.setTime(date) + cal.set(Calendar.HOUR, 1) + return cal.timeInMillis +} + fun afterDay(date: Date?, day: Int): Long { val cal: Calendar = Calendar.getInstance() cal.setTime(date) @@ -487,9 +504,65 @@ fun getContactId(contentResolver: ContentResolver, phoneNumber: String?): String return contactName } - class NewsFeedsGetter : Worker { var feddsUrls = arrayListOf() + + var limitDateTime = beforeDay(Date(),3) + constructor(context: Context, workerParams: WorkerParameters) : super(context, workerParams) { + + } + + @SuppressLint("RestrictedApi") + override fun doWork(): Result { + rssSetTouchCount += 1 + val temp = arrayListOf() + feddsUrls.clear() + feddsUrls.addAll(RssList.newsFeeds) + feddsUrls.addAll(RssList.getFeedUrls()) + + for(url in feddsUrls) { + for (it in RssFeedsParser.getFeeds(url)) { + if (it.pubDate() >= limitDateTime) { + temp.add(it) + } + } + } + + + return temp.forEach { synchronized(rssSet){ + rssSet.put(it.originPage(), it) + } }.run { + rssSetTouchCount -= 1 + Result.success() } + } + + +} +class RedditGetter : Worker { + var limitDateTime = beforeDay(Date(),3) + constructor(context: Context, workerParams: WorkerParameters) : super(context, workerParams) { + + } + + @SuppressLint("RestrictedApi") + override fun doWork(): Result { + rssSetTouchCount += 1 + val temp = arrayListOf() + for (url in feedJsons) { + for (it in RssFeedsParser.getReddit(url)) { + if (it.pubDate() >= limitDateTime) { + temp.add(it) + } + } + } + return temp.forEach { synchronized(rssSet){ + rssSet.put(it.originPage(), it) + } }.run { + rssSetTouchCount -= 1 + Result.success() } + } +} +class YoutubeGetter : Worker { var rssUrls = arrayListOf() var limitDateTime = beforeDay(Date(),3) constructor(context: Context, workerParams: WorkerParameters) : super(context, workerParams) { @@ -498,30 +571,19 @@ class NewsFeedsGetter : Worker { @SuppressLint("RestrictedApi") override fun doWork(): Result { - feddsUrls.clear() - feddsUrls.addAll(RssList.newsFeeds) - feddsUrls.addAll(RssList.getFeedUrls()) + rssSetTouchCount += 1 rssUrls.clear() rssUrls.addAll(RssList.youtubeUrls) - + val temp = arrayListOf() for (url in rssUrls) { ytChannel(Jsoup.connect(url).get()) } - for(url in feddsUrls) { - for (it in RssFeedsParser.getFeeds(url)) { - if (it.pubDate() >= limitDateTime) { - rssSet.put(it.originPage(), it) - } - } - } - for (url in feedJsons) { - for (it in RssFeedsParser.getReddit(url)) { - if (it.pubDate() >= limitDateTime) { - rssSet.put(it.originPage(), it) - } - } - } - return Result.success() + + return temp.forEach { synchronized(rssSet){ + rssSet.put(it.originPage(), it) + } }.run { + rssSetTouchCount -= 1 + Result.success() } } fun ytChannel(doc: Document) { @@ -571,4 +633,193 @@ class NewsFeedsGetter : Worker { } } } +class ComicsGetter : Worker { + var limitDateTime = beforeDay(Date(),3) + constructor(context: Context, workerParams: WorkerParameters) : super(context, workerParams) { + } + + @SuppressLint("RestrictedApi") + override fun doWork(): Result { + rssSetTouchCount += 1 + val temp = arrayListOf() + val now = Date() + try { + val fmkoreaUrls = arrayListOf("https://www.fmkorea.com", +// "https://www.fmkorea.com/index.php?mid=best&page=2", +// "https://www.fmkorea.com/index.php?mid=best&page=3" + ) + fmkoreaUrls.forEach { Jsoup.connect(it).get().let { fmkorea -> +// BLog.LOGE("fmkorea >>> ${fmkorea.title()}") + fmkorea.getElementsByTag("li").forEach { fmkorea_li -> + if (fmkorea_li.getElementsByClass("title").text().length > 0 && fmkorea_li.getElementsByTag("a").size > 0 &&fmkorea_li.getElementsByTag("a").get(0).attr("href").length > 0) { +// BLog.LOGE("fmkorea_li >>> ${fmkorea_li}") + val title = fmkorea_li.getElementsByClass("title").text() + val tumb = "https://".plus( + fmkorea_li.getElementsByClass("thumb").attr("data-original") + ) + val pageUrl = "https://www.fmkorea.com".plus( + fmkorea_li.getElementsByTag("a").get(0).attr("href") + ) + val desc = fmkorea_li.getElementsByClass("category").text() + val date = fmkorea_li.getElementsByClass("regdate").text() + FmKorea(pageUrl, desc, date, title, tumb).apply { + if(desc?.contains("유머") == true|| desc?.contains("음악") == true|| desc?.contains("영화")== true || + desc?.contains("TV")== true || desc?.contains("미스터리")== true || desc?.contains("역사")== true) { + if (this.pubDate() > before30Min(now)) { + temp.add(this) + } + } + } + + } + } + } } + } catch (e : Exception) {e.printStackTrace()} + + return temp.forEach { synchronized(rssSet){ + rssSet.put(it.originPage(), it) + } }.run { + rssSetTouchCount -= 1 + Result.success() } + } +} +class ComicsGetter2 : Worker { + var limitDateTime = beforeDay(Date(),3) + constructor(context: Context, workerParams: WorkerParameters) : super(context, workerParams) { + + } + + @SuppressLint("RestrictedApi") + override fun doWork(): Result { + rssSetTouchCount += 1 + val temp = arrayListOf() + val now = Date() + try { + val dotaxUrls = arrayListOf("https://m.cafe.daum.net/dotax", +// "https://m.cafe.daum.net/dotax/_rec?page=2", +// "https://m.cafe.daum.net/dotax/_rec?page=3" + ) + dotaxUrls?.forEach { + Jsoup.connect(it)?.get()?.let { dotax -> + BLog.LOGE("dotax_li >>> ${dotax.title()}") + dotax.getElementsByTag("li").forEach { dotax_li -> + if (dotax_li.getElementsByTag("a").size > 0 && dotax_li.getElementsByClass("board_name") + .html().contains("웃긴") + ) { + val pageLink = dotax_li.getElementsByTag("a").get(0).attr("href") + val desc = dotax_li.getElementsByClass("board_name").text() + val dateTime = dotax_li.getElementsByClass("sr_only").text() + val title = dotax_li.getElementsByClass("txt_detail").text() + val thumbnail = dotax_li.getElementsByClass("article_thumb").text() + if (pageLink.length > 0 && desc.length > 0 && dateTime.length > 0 && title.length > 0) { + Dotax(pageLink, desc, dateTime, title, thumbnail).apply { + BLog.LOGE("dotax_li >>> ${Gson().toJson(this)}") + if(this.pubDate() > before30Min(now)) { + temp.add(this) + } + } + } + } + } + } + } + } catch (e : Exception) {e.printStackTrace()} + return temp.forEach { synchronized(rssSet){ + rssSet.put(it.originPage(), it) + } }.run { + rssSetTouchCount -= 1 + Result.success() } + } +} + +open class Dotax(var pageLink : String, + var desc : String, + var dateTime : String, + var title : String, + var thumbnail : String) : RssDataItem { + var updateDateTime = 0L + override fun title(): String { + return title + } + + override fun thumbnailUrl(): String { + return thumbnail + } + + override fun originPage(): String { + return "https://m.cafe.daum.net".plus(pageLink) + } + + override fun description(): String { + return desc + } + override fun pubDate(): Long { + var date = Date() + var dateTime = date.time + var before = 0 + if (updateDateTime == 0L) { + try { + var targetDate = this.dateTime ?: "" + if (targetDate?.length ?: 0 > 1) { + var dateDesc = targetDate + var isBefore = dateDesc.contains("전") + val dayString = dateDesc.replace("[^0-9]".toRegex(), "") + before = dayString.toInt() + if (dateDesc.contains("년")) { + before = 365 * before + dateTime = if (isBefore) beforeDay(date, before) else afterDay(date, before) + } else if (dateDesc.contains("월")) { + before = 30 * before + dateTime = if (isBefore) beforeDay(date, before) else afterDay(date, before) + } else if (dateDesc.contains("주")) { + before = 7 * before + dateTime = if (isBefore) beforeDay(date, before) else afterDay(date, before) + } else if (dateDesc.contains("일")) { + dateTime = if (isBefore) beforeDay(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("분")) { + dateTime = + if (isBefore) dateTime.minus(before.times(1000L * 60L)) else dateTime.plus( + before.times(1000L * 60L) + ) + } + else if (dateDesc.contains("초")) { + dateTime = + if (isBefore) dateTime.minus(before.times(1000L)) else dateTime.plus( + before.times(1000L) + ) + } + } + + } catch (e: Exception) { + + } finally { + updateDateTime = dateTime + } + } else { + dateTime = updateDateTime + } + + return dateTime + } + override fun category(): RssDataType { + return RssDataType.Dotax + } +} +data class FmKorea(var apageLink : String, + var adesc : String, + var adateTime : String, + var atitle : String, + var athumbnail : String) : Dotax(apageLink, adesc, adateTime, atitle, athumbnail) { + override fun originPage(): String { + return pageLink + } + override fun category(): RssDataType { + return RssDataType.FmKorae + } +} \ No newline at end of file diff --git a/app/src/main/kotlin/rasel/lunar/launcher/utils/RssList.kt b/app/src/main/kotlin/rasel/lunar/launcher/utils/RssList.kt index 9da47058..4d8bbd90 100644 --- a/app/src/main/kotlin/rasel/lunar/launcher/utils/RssList.kt +++ b/app/src/main/kotlin/rasel/lunar/launcher/utils/RssList.kt @@ -1,16 +1,15 @@ package rasel.lunar.launcher.utils -import android.widget.Toast import org.jsoup.nodes.Document -import rasel.lunar.launcher.LauncherActivity.Companion.TEST_PAG -import rasel.lunar.launcher.home.LauncherHome.Companion.listItem -import rasel.lunar.launcher.home.RssItem import java.net.URLEncoder -import java.text.SimpleDateFormat -import java.util.Date -import java.util.Locale object RssList { + + val TEST_PAG2 = "https://torrentsee246.com/topic/index?category1=129&category2=132" + val jGuruMain = "https://jav.guru/" + val jGuruRanks ="https://jav.guru/most-watched-rank/" + + val youtubeUrls = arrayListOf( "https://www.youtube.com/@zzanbro", "https://www.youtube.com/@sungsikyung", @@ -45,6 +44,7 @@ object RssList { "여행", "음반", "도끼", + "힙합", ) } diff --git a/app/src/main/res/drawable/daum.png b/app/src/main/res/drawable/daum.png new file mode 100644 index 0000000000000000000000000000000000000000..6caa4e1295bea395145ee75c815a1496a4441fb4 GIT binary patch literal 18632 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 KKbLh*2~7Zo!q9^N literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/fmk.png b/app/src/main/res/drawable/fmk.png new file mode 100644 index 0000000000000000000000000000000000000000..ab6863721d77763195d3073ebc39c50e536dd058 GIT binary patch literal 12514 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/reddit.png b/app/src/main/res/drawable/reddit.png new file mode 100644 index 0000000000000000000000000000000000000000..6c55dfacfb44aa27fffe2e319e1f38e1c11686d2 GIT binary patch literal 19995 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 B8eRYZ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/youtube.png b/app/src/main/res/drawable/youtube.png new file mode 100644 index 0000000000000000000000000000000000000000..2db89d2078c00e92d9cb4845cf76ddd005cc5ebe GIT binary patch literal 13626 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 nXI0zcrOTc1o!&9@p)F&Pxn3u{3H=TD&I!U_>d literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/app_drawer.xml b/app/src/main/res/layout/app_drawer.xml index 927e89d5..ed5d1fd4 100644 --- a/app/src/main/res/layout/app_drawer.xml +++ b/app/src/main/res/layout/app_drawer.xml @@ -82,6 +82,10 @@ android:src="@drawable/namuwiki" android:id="@+id/search_namuwiki" style="@style/SearchIcons"/> + + android:layout_height="wrap_content"/>