Skip to content

Commit 681032d

Browse files
author
win
committed
twitter-scrapper updated with publish.twitter.com
1 parent f8ac3ce commit 681032d

File tree

8 files changed

+28
-19
lines changed

8 files changed

+28
-19
lines changed

lib/index.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/index.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/rules/Instagram/ScrapInstagram.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { ReactTinyLinkType } from '../../ReactTinyLinkTypes';
2-
declare const _default: (url: string, data: any) => Promise<{
2+
declare const _default: (url: string, data: any, defaultMedia: any) => Promise<{
33
title: any;
44
content: string;
55
url: string;
Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
import { ReactTinyLinkType } from '../../ReactTinyLinkTypes'
2+
import { isEmpty } from '../utils'
23

3-
export default async (url: string, data) => {
4+
export default async (url: string, data, defaultMedia) => {
45
const scrappedData = JSON.parse(data)
56
return {
67
title: scrappedData.title,
78
content: url,
89
url: url,
910
description: scrappedData.title,
1011
video: null,
11-
image: [scrappedData.thumbnail_url],
12+
image: !defaultMedia
13+
? [scrappedData.thumbnail_url]
14+
: [scrappedData.thumbnail_url, defaultMedia].filter(i => !isEmpty(i)),
1215
type: ReactTinyLinkType.TYPE_IMAGE, // MIME Type
1316
}
1417
}

src/rules/Twitter/ScrapTwitter.d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { ReactTinyLinkType } from '../../ReactTinyLinkTypes';
2-
declare const _default: (url: any, htmlDoc: any, defaultMedia: any) => Promise<{
3-
title: any;
2+
declare const _default: (url: any, data: any, htmlDoc: any, defaultMedia: any) => Promise<{
3+
title: string;
44
description: any;
55
url: any;
66
video: string[];

src/rules/Twitter/ScrapTwitter.ts

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11
import { ReactTinyLinkType } from '../../ReactTinyLinkTypes'
22
import { isEmpty, getAttrOfDocElement, fixRelativeUrls, getBaseUrl } from '../utils'
33

4-
export default async (url, htmlDoc, defaultMedia) => {
4+
export default async (url, data, htmlDoc, defaultMedia) => {
5+
const scrappedData = JSON.parse(data)
6+
const htmlElement = document.createElement(`html`)
7+
htmlElement.innerHTML = scrappedData.html
8+
59
let baseUrl = getBaseUrl(htmlDoc, url)
610

711
const image = [
812
getAttrOfDocElement(htmlDoc, "meta[property='og:image']", 'content'),
913
getAttrOfDocElement(htmlDoc, "meta[property='og:image:user_generated']", 'content'),
14+
'https://help.twitter.com/content/dam/help-twitter/twitter-logo.png',
1015
]
1116
.filter(i => !isEmpty(i))
1217
.map(i => fixRelativeUrls(baseUrl, i))
@@ -17,16 +22,14 @@ export default async (url, htmlDoc, defaultMedia) => {
1722
]
1823
.filter(i => !isEmpty(i))
1924
.map(i => fixRelativeUrls(baseUrl, i))
20-
25+
2126
return {
22-
title: getAttrOfDocElement(htmlDoc, "meta[property='og:title']", 'content'),
23-
description: getAttrOfDocElement(htmlDoc, "meta[property='og:description']", 'content'),
27+
title: htmlElement.querySelector('p').textContent,
28+
description: scrappedData.author_name,
2429
url: getAttrOfDocElement(htmlDoc, "meta[property='og:url']", 'content'),
2530
video: video,
26-
image: !defaultMedia
27-
? image
28-
: [...image, defaultMedia].filter(i => !isEmpty(i)),
31+
image: !defaultMedia ? image : [...image, defaultMedia].filter(i => !isEmpty(i)),
2932
type: ReactTinyLinkType.TYPE_TWITTER, // MIME Type
30-
publisher: ["Twitter"]
33+
publisher: ['Twitter'],
3134
}
3235
}

src/rules/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,15 @@ export default async (url: string, httpClient, defaultMedia: string[]) => {
3232
} else if (isImage(mimeType)) {
3333
return await ScrapImage(url, defaultMedia)
3434
} else if (isInstagramUrl(url)) {
35-
return await ScrapInstagram(url, data)
35+
return await ScrapInstagram(url, data, defaultMedia)
3636
} else if (isYoutubeUrl(url)) {
3737
return await ScrapYoutube(url, htmlDoc, defaultMedia)
3838
} else if (isAmazonUrl(url)) {
3939
return await ScrapAmazon(url, htmlDoc, defaultMedia)
4040
} else if (isBoardGameGeekUrl(url)) {
4141
return await ScrapBoardGameGeek(url, htmlDoc, defaultMedia)
4242
} else if (isTwitterUrl(url)) {
43-
return await ScrapTwitter(url, htmlDoc, defaultMedia)
43+
return await ScrapTwitter(url, data, htmlDoc, defaultMedia)
4444
} else {
4545
return await ScrapDefault(url, htmlDoc, defaultMedia)
4646
}

src/useMountFetch.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { makeCancelable } from './utils'
66

77
// Types
88
import { IReactTinyLinkData } from './ReactTinyLinkTypes'
9-
import { isInstagramUrl } from './rules/utils'
9+
import { isInstagramUrl, isTwitterUrl } from './rules/utils'
1010

1111
/** current state of the fetch */
1212
export interface IState<T, E> {
@@ -76,6 +76,9 @@ export function useMountFetch(
7676
if (isInstagramUrl(url)) {
7777
const modifiedInstaUrl = `https://api.instagram.com/oembed/?url=${url}`
7878
client = fetch(proxyUrl ? `${proxyUrl}/${modifiedInstaUrl}` : modifiedInstaUrl, { headers })
79+
} else if (isTwitterUrl(url)) {
80+
const modifiedInstaUrl = `https://publish.twitter.com/oembed?url=${url}`
81+
client = fetch(proxyUrl ? `${proxyUrl}/${modifiedInstaUrl}` : modifiedInstaUrl, { headers })
7982
} else {
8083
client = fetch(proxyUrl ? `${proxyUrl}/${url}` : url, { headers })
8184
}

0 commit comments

Comments
 (0)