dms-scrape 0.4.4 → 0.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/index.js +70 -0
  2. package/package.json +9 -5
  3. package/.gitattributes +0 -2
  4. package/.vscode/launch.json +0 -18
  5. package/dms-scrape.d.ts +0 -1
  6. package/extractfrombrowser.js +0 -12
  7. package/index.mjs +0 -50
  8. package/lib/array2String.mjs +0 -5
  9. package/lib/determineCategory.mjs +0 -18
  10. package/lib/filterContent.mjs +0 -34
  11. package/lib/processHTML.mjs +0 -50
  12. package/lib/sources.mjs +0 -52
  13. package/sources/T1/CTEE.mjs +0 -32
  14. package/sources/T1/DIGITIMES.mjs +0 -23
  15. package/sources/T1/UDNMoney.mjs +0 -46
  16. package/sources/T2/CHINATIMES.mjs +0 -43
  17. package/sources/T2/LTN3C.mjs +0 -34
  18. package/sources/T2/LTNEC.mjs +0 -40
  19. package/sources/T2/NXTAPPLE.mjs +0 -30
  20. package/sources/T2/UDN.mjs +0 -26
  21. package/sources/T3/SETN.mjs +0 -35
  22. package/sources/T4/CNA.mjs +0 -33
  23. package/sources/T4/ETDAY.mjs +0 -39
  24. package/sources/T4/TAISOUNDS.mjs +0 -21
  25. package/sources/T5/CNYES.mjs +0 -25
  26. package/sources/T5/COMPOTECHASIA.mjs +0 -30
  27. package/sources/T5/COOL3C.mjs +0 -26
  28. package/sources/T5/EPRICE.mjs +0 -19
  29. package/sources/T5/INSIDE.mjs +0 -15
  30. package/sources/T5/KOCPC.mjs +0 -28
  31. package/sources/T5/MASHDIGI.mjs +0 -27
  32. package/sources/T5/SAYDIGI.mjs +0 -22
  33. package/sources/T5/SOGI.mjs +0 -46
  34. package/sources/T5/TECHBANG.mjs +0 -20
  35. package/sources/T5/TECHNEWS.mjs +0 -17
  36. package/sources/T5/TECHORANGE.mjs +0 -26
  37. package/sources/T5/XF.mjs +0 -28
  38. package/test/cnyestest.js +0 -814
  39. package/test/compotechtest.js +0 -561
  40. package/test/insidetest.js +0 -1399
  41. package/test/saydigitest.js +0 -1000
  42. package/test/techbangtest.js +0 -1109
  43. package/test/techrangetest.js +0 -3101
  44. package/test/tested/chinatest.js +0 -4761
  45. package/test/tested/cteetest.js +0 -1406
  46. package/test/tested/digitest.js +0 -1664
  47. package/test/tested/digitimes3.html +0 -2598
  48. package/test/tested/digitimes4.html +0 -2614
  49. package/test/tested/nextapple.js +0 -1546
  50. package/test/tested/setntest.js +0 -2728
  51. package/test.mjs +0 -108
@@ -1,21 +0,0 @@
1
- export function TAISOUNDS($) {
2
- const data = $.extract({
3
- date: [
4
- {
5
- selector: "div.publish",
6
- value: (el, key) => {
7
- const eachValue = $(el).text().trim();
8
- if (eachValue !== "") {
9
- return eachValue.slice(0, 10);
10
- }
11
- },
12
- },
13
- ],
14
-
15
- });
16
- data["title"] = $("div.news-box h1").text();
17
- data["source"] = "太報";
18
- data["author"] = $("a[href^='/more/reporternews']").text();
19
- data["content"] = $("div.news-box-text.border").html().split("\n").filter((item) => item.includes("<br>")).toString().split(/<\/?[^>]+>/).filter((item)=> item != '')
20
- return data;
21
- }
@@ -1,25 +0,0 @@
1
- export function CNYES($) {
2
- const data = $.extract({
3
- title: [{ selector: "title", value: (el) => $(el).text().trim() }],
4
- date: [
5
- {
6
- selector: "p:contains('2024'):first",
7
- value: (el) => $(el).text().split(" ")[1].split(" ")[0],
8
- },
9
- ],
10
- author: [
11
- {
12
- selector: "p:contains('2024'):first",
13
- value: (el) => $(el).text().split(" ")[0].replace(" ", ""),
14
- },
15
- ],
16
- content: [
17
- {
18
- selector: "main#article-container section p",
19
- value: (el) => $(el).text().trim(),
20
- },
21
- ],
22
- });
23
- data["source"] = "鉅亨網"
24
- return data;
25
- }
@@ -1,30 +0,0 @@
1
- export function COMPOTECHASIA($) {
2
- const data = $.extract({
3
- title: [
4
- {
5
- selector: "title",
6
- value: (el) => $(el).text().trim().replace("_COMPOTECH ASIA", ""),
7
- },
8
- ],
9
- date: [
10
- {
11
- selector: "span.deta",
12
- value: (el) => $(el).text().split(" ")[0]
13
- }
14
- ],
15
- author: [
16
- {
17
- selector: "span:contains('本文作者:') > a",
18
- value: (el) => $(el).text().trim()
19
- }
20
- ],
21
- content: [
22
- {
23
- selector: "div.article_wz_text div",
24
- value: (el) => $(el).text()
25
- }
26
- ]
27
- });
28
- data["source"] = "智慧電子解決方案設計平台"
29
- return data
30
- }
@@ -1,26 +0,0 @@
1
- export function COOL3C($) {
2
- let data = {};
3
- data["title"] = $("li.breadcrumb-item.active")
4
- .text()
5
- .trim()
6
- .replace("\n", "");
7
- data["date"] = $("div.created.slacken span")
8
- .eq(1)
9
- .text()
10
- .trim()
11
- .split(" ")[0]
12
- .replace(/\./g, "-");
13
- data["author"] = $("div.author a").text().trim();
14
-
15
- data["content"] = [];
16
- $("div.row.content div p").each(function () {
17
- const text = $(this).html().trim();
18
- if (text.startsWith("<img") || text.startsWith("▲")) {
19
- return;
20
- } else {
21
- data["content"].push(text.replace("undefined", "").trim());
22
- }
23
- });
24
- data["source"] = "Cool3c";
25
- return data;
26
- }
@@ -1,19 +0,0 @@
1
- export function EPRICE($) {
2
- const data = $.extract({
3
- headline: "h1.title",
4
- });
5
- data["date"] = $("span.date")
6
- .first()
7
- .text()
8
- .replace(/.*?(\d{4}-\d{2}-\d{2}).*/, "$1");
9
- data["author"] = $("a.nickname").first().attr("title");
10
-
11
- data["content"] = $("div.user-comment-block")
12
- .first()
13
- .html() // Get inner HTML of the div
14
- .split(/<br\s*\/?>\s*<br\s*\/?>/i) // Split by two consecutive <br> tags
15
- .map((line) => line.trim()) // Trim whitespace from each line
16
- .filter((line) => line.length > 0);
17
- data["source"] = "ePrice"
18
- return data;
19
- }
@@ -1,15 +0,0 @@
1
- export function INSIDE($) {
2
- const data = $.extract({
3
- title: [{ selector: "title", value: (el) => $(el).text().trim() }],
4
- author: "a.author.url.fn",
5
- date: [
6
- {
7
- selector: "li.post_date:first span",
8
- value: (el) => $(el).text().replace(/\//g, "-"),
9
- },
10
- ],
11
- content: [{ selector: "section.js-article-content-body p" }],
12
- });
13
- data["source"] = "Inside"
14
- return data;
15
- }
@@ -1,28 +0,0 @@
1
- export function KOCPC($) {
2
- let data = {};
3
-
4
- data["title"] = $("h1.jeg_post_title").text();
5
- data["date"] = $('div.jeg_meta_date > a')
6
- .text()
7
- .replace(/(\d{4}) 年 (\d{2}) 月 (\d{2}) 日/, "$1-$2-$3");
8
- data["source"] = "電腦王阿達";
9
- data["author"] = $("div.jeg_meta_author a").text();
10
- data["content"] = [];
11
- // data['category'] = $("meta")
12
- //Zi_ad_ar_iR
13
-
14
- $("div.Zi_ad_ar_iR p").each((index, element) => {
15
- if (
16
- !$(element).text().trim() == "" &&
17
- !$(element).text().startsWith("<img")
18
- ) {
19
- data["content"].push(
20
- $(element)
21
- .text()
22
- .trim()
23
- .replace(/<[^>]*>/g, "")
24
- );
25
- }
26
- });
27
- return data;
28
- }
@@ -1,27 +0,0 @@
1
- export function MASHDIGI($) {
2
- let data = {};
3
- const link = $('link[rel="canonical"]').attr('href')
4
- data["title"] = $("h1.entry-title").text().trim();
5
- data["date"] = $('[href="' + link + '"] > time.entry-date.published').text();
6
- data["author"] = $("div.entry-meta span.author.vcard")
7
- .text()
8
- .replace(" (Mash Yang)", "");
9
-
10
- data["content"] = [];
11
- $("div.bialty-container p").each(function () {
12
- const htmlContent = $(this).html().trim();
13
- const textContent = $(this).text().trim();
14
-
15
- if (
16
- htmlContent.includes("<img") ||
17
- textContent.startsWith("▲") ||
18
- textContent === ""
19
- ) {
20
- return;
21
- } else {
22
- data["content"].push(textContent.replace("undefined", "").trim());
23
- }
24
- });
25
- data["source"] = "Mashdigi";
26
- return data;
27
- }
@@ -1,22 +0,0 @@
1
- export function SAYDIGI($) {
2
- const data = $.extract({
3
- title: [{ selector: "title", value: (el) => $(el).text().trim() }],
4
- date: [
5
- {
6
- selector: "meta[property=article:modified_time]",
7
- value: (el) => $(el).attr("content").split("T")[0],
8
- },
9
- ],
10
- author: [
11
- { selector: "meta[name=author]", value: (el) => $(el).attr("content") },
12
- ],
13
- content: [
14
- {
15
- selector: "div.cttt > p",
16
- value: (el) => $(el).text().trim(),
17
- },
18
- ],
19
- });
20
- data["source"] = "點子生活"
21
- return data;
22
- }
@@ -1,46 +0,0 @@
1
- export function SOGI($) {
2
- const data = $.extract({
3
- title: "h1.h1",
4
- author: [
5
- {
6
- selector: "div.d-inline-block.mr-3",
7
- value: function (el, key) {
8
- let cleanedText = $(el)
9
- .text()
10
- .trim()
11
- .replace(/[\n\s]/g, "");
12
- if (cleanedText.includes("特約編輯")) {
13
- var match = cleanedText.match(/by(.*?)特約編輯/);
14
- } else if (cleanedText.includes("編輯")) {
15
- var match = cleanedText.match(/by(.*?)編輯/);
16
- } else {
17
- var match = null;
18
- }
19
- if (match) {
20
- let result = match[1]; // This will give you the text between "by" and "特約編輯"
21
- return result.trim(); // Trimming in case there are extra spaces
22
- } else {
23
- console.log("No match found");
24
- }
25
- },
26
- },
27
- ],
28
- });
29
-
30
- data["date"] = $("div.d-inline-block.mr-3")
31
- .first()
32
- .text()
33
- .replace("\n", "")
34
- .trim()
35
- .replace(/\//g, "-");
36
-
37
- data["content"] = $("div.editable.my-2")
38
- .html() // Get inner HTML of the div
39
- .split(/<br\s*\/?>\s*<br\s*\/?>/i) // Split by two consecutive <br> tags
40
- .map((line) => line.trim()) // Trim whitespace from each line
41
- .filter((line) => line.length > 0);
42
-
43
- data["source"] = "手機王"
44
-
45
- return data;
46
- }
@@ -1,20 +0,0 @@
1
- export function TECHBANG($) {
2
- const data = $.extract({
3
- title: [{ selector: "title", value: (el) => $(el).text().trim() }],
4
- date: [
5
- {
6
- selector: "meta[property=article:published_time]",
7
- value: (el) => $(el).attr("content").split("T")[0],
8
- },
9
- ],
10
- author: "a.nickname:first",
11
- content: [
12
- {
13
- selector: "div.article-content > p",
14
- value: (el) => $(el).text().trim(),
15
- },
16
- ],
17
- });
18
- data["source"] = "T客邦"
19
- return data;
20
- }
@@ -1,17 +0,0 @@
1
- export function TECHNEWS($) {
2
- let data = {};
3
- data["title"] = $("h1.entry-title").text();
4
- data["content"] = [];
5
- let dateParts = $("span.body:nth-of-type(4)")
6
- .text()
7
- .match(/(\d{4}) 年 (\d{2}) 月 (\d{2}) 日/);
8
- data["date"] = `${dateParts[1]}-${dateParts[2]}-${dateParts[3]}`;
9
- data["source"] = "科技新報";
10
- data["author"] = $("[rel=author]").text().replace(" ", "");
11
-
12
- $("div.indent p").each((i, element) => {
13
- data["content"].push($(element).text().trim());
14
- });
15
-
16
- return data;
17
- }
@@ -1,26 +0,0 @@
1
- export function TECHORANGE($) {
2
- const data = $.extract({
3
- title: [{ selector: "title", value: (el) => $(el).text().trim() }],
4
-
5
- date: [
6
- {
7
- selector: "meta[property=article:modified_time]",
8
- value: (el) => $(el).attr("content").split("T")[0],
9
- },
10
- ],
11
- author: [
12
- {
13
- selector: "meta[name=twitter:data1]",
14
- value: (el) => $(el).attr('content'),
15
- },
16
- ],
17
- content: [
18
- {
19
- selector: "div.elementor-widget-container > p",
20
- value: (el) => $(el).text().trim(),
21
- },
22
- ],
23
- });
24
- data["source"] = "科技報橘"
25
- return data;
26
- }
package/sources/T5/XF.mjs DELETED
@@ -1,28 +0,0 @@
1
- export function XF($) {
2
- let data = {};
3
- data["title"] = $("span#thread_subject").text();
4
-
5
- const input = $('em[id^="authorposton"]').text();
6
-
7
- // Regular expression to match the date part and capture the year, month, and day
8
- const regex = /發表於 (\d{4})-(\d{1,2})-(\d{1,2})/;
9
-
10
- // Replace the matched date with the desired format
11
- const formattedDate = input.replace(regex, (match, year, month, day) => {
12
- // Ensure month and day are zero-padded to two digits
13
- const paddedMonth = month.padStart(2, "0");
14
- const paddedDay = day.padStart(2, "0");
15
- return `${year}-${paddedMonth}-${paddedDay}`;
16
- });
17
- data["date"] = formattedDate.slice(0, 10);
18
- data["source"] = "XFastest";
19
- data["author"] = $("a[href^='space-uid']").last().text();
20
- $('td[id^="post"]').each((index, element) => {
21
- let content = $(element)
22
- .html()
23
- .split(/<\/?[^>]+>/)
24
- .map((item) => item.trim()); // Trim all elements
25
- data["content"] = content;
26
- });
27
- return data;
28
- }