Skip to content

Commit 825a477

Browse files
committed
added changes for user agents
1 parent 28e1ed5 commit 825a477

4 files changed

Lines changed: 53 additions & 32 deletions

File tree

OGParser/src/main/java/com/kedia/ogparser/JsoupNetworkCall.kt

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
package com.kedia.ogparser
22

3+
import android.util.Log
34
import kotlinx.coroutines.Dispatchers
45
import kotlinx.coroutines.launch
56
import org.jsoup.Jsoup
67

78
class JsoupNetworkCall {
89

910
private val REFERRER = "http://www.google.com"
10-
private val TIMEOUT = 10000
11+
private val TIMEOUT = 100000
1112
private val DOC_SELECT_QUERY = "meta[property^=og:]"
1213
private val OPEN_GRAPH_KEY = "content"
1314
private val PROPERTY = "property"
@@ -32,7 +33,6 @@ class JsoupNetworkCall {
3233
.execute()
3334

3435
val doc = response.parse()
35-
3636
val ogTags = doc.select(DOC_SELECT_QUERY)
3737
when {
3838
ogTags.size > 0 ->
@@ -64,10 +64,6 @@ class JsoupNetworkCall {
6464
}
6565
} catch (e: Exception) {
6666
e.printStackTrace()
67-
// launch(Dispatchers.Main) {
68-
// listener.onError(e.localizedMessage)
69-
// }
70-
// return@withContext null
7167
return null
7268
}
7369

OGParser/src/main/java/com/kedia/ogparser/OpenGraphParser.kt

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,30 @@
11
package com.kedia.ogparser
22

33
import android.content.Context
4+
import android.util.Log
45
import kotlinx.coroutines.*
5-
import org.jsoup.Jsoup
66
import kotlin.coroutines.CoroutineContext
77

88

99
class OpenGraphParser(
1010
private val listener: OpenGraphCallback,
1111
private var showNullOnEmpty: Boolean = false,
12-
private val context: Context? = null
12+
context: Context? = null
1313
) {
1414

1515
private val sharedPrefs: SharedPrefs? = context?.let { SharedPrefs(it) }
1616

1717
private var url: String = ""
1818

19-
private val AGENTS = mutableListOf<String>("Mozilla", "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)")
20-
private val AGENT = "Mozilla"
21-
// private val AGENT = "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)"
22-
private val REFERRER = "http://www.google.com"
23-
private val TIMEOUT = 10000
24-
private val DOC_SELECT_QUERY = "meta[property^=og:]"
25-
private val OPEN_GRAPH_KEY = "content"
26-
private val PROPERTY = "property"
27-
private val OG_IMAGE = "og:image"
28-
private val OG_DESCRIPTION = "og:description"
29-
private val OG_URL = "og:url"
30-
private val OG_TITLE = "og:title"
31-
private val OG_SITE_NAME = "og:site_name"
32-
private val OG_TYPE = "og:type"
33-
19+
private val AGENTS = mutableListOf(
20+
"facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)",
21+
"Mozilla",
22+
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36",
23+
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36",
24+
"WhatsApp/2.19.81 A",
25+
"facebookexternalhit/1.1",
26+
"facebookcatalog/1.0"
27+
)
3428
private val jsoupNetworkCall = JsoupNetworkCall()
3529

3630
private var openGraphResult: OpenGraphResult? = null
@@ -67,7 +61,8 @@ class OpenGraphParser(
6761
openGraphResult = jsoupNetworkCall.callUrl(url, it)
6862
val isResultNull = checkNullParserResult(openGraphResult)
6963
if (!isResultNull) {
70-
return@forEach
64+
openGraphResult?.let { sharedPrefs?.setOpenGraphResult(it, url) }
65+
return@withContext openGraphResult
7166
}
7267
}
7368

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package com.kedia.ogparser
22

33
fun checkNullParserResult(openGraphResult: OpenGraphResult?): Boolean {
4-
return (openGraphResult!!.title.isNullOrEmpty() ||
5-
openGraphResult!!.title.equals("null")) &&
6-
(openGraphResult!!.description.isNullOrEmpty() ||
7-
openGraphResult!!.description.equals(
4+
return (openGraphResult?.title.isNullOrEmpty() ||
5+
openGraphResult?.title.equals("null")) &&
6+
(openGraphResult?.description.isNullOrEmpty() ||
7+
openGraphResult?.description.equals(
88
"null"
99
))
1010
}
Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,43 @@
11
package com.kedia.opengraphpreview
22

3-
import androidx.appcompat.app.AppCompatActivity
43
import android.os.Bundle
5-
import android.os.Looper
64
import android.util.Log
5+
import androidx.appcompat.app.AppCompatActivity
76
import com.kedia.ogparser.OpenGraphCallback
87
import com.kedia.ogparser.OpenGraphParser
98
import com.kedia.ogparser.OpenGraphResult
109
import kotlinx.android.synthetic.main.activity_main.*
1110

1211
class MainActivity : AppCompatActivity(), OpenGraphCallback {
12+
13+
private val openGraphParser by lazy { OpenGraphParser(this, showNullOnEmpty = true) }
14+
15+
private val LINKS_TO_TEST = mutableListOf(
16+
"https://www.linkedin.com/posts/madhusmita-padhy_machinelearning-datascience-activity-6886390508722163712-yhQ0",
17+
"https://www.youtube.com/watch?v=n3zsoX7bRlc",
18+
"https://twitter.com/levelsio/status/1481942293108359168",
19+
"https://stackoverflow.com/questions/44515769/conda-is-not-recognized-as-internal-or-external-command",
20+
"https://github.com/Priyansh-Kedia/OpenGraphParser",
21+
"https://chat.whatsapp.com/DdWAKRkt2VfAmd4OS47y7P",
22+
"https://www.reddit.com/r/MachineLearning/comments/s3mjqf/deep_learning_interviews_hundreds_of_fully_solved/?utm_medium=android_app&utm_source=share",
23+
"https://instagram.com/fcbarcelona?utm_medium=copy_link",
24+
"https://www.facebook.com/groups/777946865955982/permalink/1385110621906267/",
25+
"https://mobile.twitter.com/Twitter?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor"
26+
)
27+
1328
override fun onCreate(savedInstanceState: Bundle?) {
1429
super.onCreate(savedInstanceState)
1530
setContentView(R.layout.activity_main)
1631

17-
val openGraphParser = OpenGraphParser(this, showNullOnEmpty = true)
18-
openGraphParser.parse("https://twitter.com/levelsio/status/1481942293108359168")
32+
openGraphParser.parse(LINKS_TO_TEST.first())
33+
LINKS_TO_TEST.removeFirstOrNull()
34+
35+
// for (link in LINKS_TO_TEST) {
36+
// Handler().postDelayed({
37+
// openGraphParser.parse(link)
38+
// }, 2000)
39+
// Log.e("TAG!!!!", "called parse")
40+
// }
1941

2042
button.setOnClickListener {
2143
openGraphParser.parse(tview.text.toString())
@@ -25,10 +47,18 @@ class MainActivity : AppCompatActivity(), OpenGraphCallback {
2547
override fun onPostResponse(openGraphResult: OpenGraphResult) {
2648
Log.e("TAG!!!!", "response $openGraphResult")
2749
tview.setText(openGraphResult.toString())
50+
if (LINKS_TO_TEST.isNotEmpty()) {
51+
openGraphParser.parse(LINKS_TO_TEST.first())
52+
LINKS_TO_TEST.removeFirstOrNull()
53+
}
2854
}
2955

3056
override fun onError(error: String) {
3157
Log.e("TAG!!!!", "$error")
3258
// tview.text = error
59+
if (LINKS_TO_TEST.isNotEmpty()) {
60+
openGraphParser.parse(LINKS_TO_TEST.first())
61+
LINKS_TO_TEST.removeFirstOrNull()
62+
}
3363
}
3464
}

0 commit comments

Comments
 (0)