diff --git a/CHANGELOG.md b/CHANGELOG.md index 2565e037..07f24593 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +4.x.x (Unreleased) / 2023-09-xx +------------------ +* branch.ioを用いたディープリンク(spotify.link)などでパースに失敗する問題を修正 + 4.0.2 / 2023-04-20 ------------------ * YouTubeをフルスクリーンにできない問題を修正 diff --git a/built/iplugin.d.ts b/built/iplugin.d.ts index f5e6b9f6..97f598c4 100644 --- a/built/iplugin.d.ts +++ b/built/iplugin.d.ts @@ -3,5 +3,5 @@ import type { URL } from 'node:url'; import Summary from './summary.js'; export interface IPlugin { test: (url: URL) => boolean; - summarize: (url: URL, lang?: string) => Promise; + summarize: (url: URL, lang?: string) => Promise; } diff --git a/built/plugins/branchio-deeplinks.d.ts b/built/plugins/branchio-deeplinks.d.ts new file mode 100644 index 00000000..ad10fa94 --- /dev/null +++ b/built/plugins/branchio-deeplinks.d.ts @@ -0,0 +1,5 @@ +/// +import { URL } from 'node:url'; +import Summary from '../summary.js'; +export declare function test(url: URL): boolean; +export declare function summarize(url: URL, lang?: string | null): Promise; diff --git a/built/plugins/branchio-deeplinks.js b/built/plugins/branchio-deeplinks.js new file mode 100644 index 00000000..397d37c7 --- /dev/null +++ b/built/plugins/branchio-deeplinks.js @@ -0,0 +1,12 @@ +import general from '../general.js'; +export function test(url) { + // Branch.io を使用したディープリンクにマッチ + return /^[a-zA-Z0-9]+\.app\.link$/.test(url.hostname) || + url.hostname === 'spotify.link'; +} +export async function summarize(url, lang = null) { + // https://help.branch.io/using-branch/docs/creating-a-deep-link#redirections + // Web版に強制リダイレクトすることでbranch.ioの独自ページが開くのを防ぐ + url.searchParams.append('$web_only', 'true'); + return await general(url, lang); +} diff --git a/built/plugins/index.js b/built/plugins/index.js index 13de0395..b325675b 100644 --- a/built/plugins/index.js +++ b/built/plugins/index.js @@ -1,6 +1,8 @@ import * as amazon from './amazon.js'; import * as wikipedia from './wikipedia.js'; +import * as branchIoDeeplinks from './branchio-deeplinks.js'; export const plugins = [ amazon, wikipedia, + branchIoDeeplinks, ]; diff --git a/src/iplugin.ts b/src/iplugin.ts index 2aabf86b..28108cc3 100644 --- a/src/iplugin.ts +++ b/src/iplugin.ts @@ -3,5 +3,5 @@ import Summary from './summary.js'; export interface IPlugin { test: (url: URL) => boolean; - summarize: (url: URL, lang?: string) => Promise; + summarize: (url: URL, lang?: string) => Promise; } diff --git a/src/plugins/branchio-deeplinks.ts b/src/plugins/branchio-deeplinks.ts new file mode 100644 index 00000000..db92d30f --- /dev/null +++ b/src/plugins/branchio-deeplinks.ts @@ -0,0 +1,19 @@ +import { URL } from 'node:url'; +import { scpaping } from '../utils/got.js'; +import general from '../general.js'; +import Summary from '../summary.js'; + +export function test(url: URL): boolean { + // Branch.io を使用したディープリンクにマッチ + return /^[a-zA-Z0-9]+\.app\.link$/.test(url.hostname) || + url.hostname === 'spotify.link'; +} + +export async function summarize(url: URL, lang: string | null = null): Promise { + + // https://help.branch.io/using-branch/docs/creating-a-deep-link#redirections + // Web版に強制リダイレクトすることでbranch.ioの独自ページが開くのを防ぐ + url.searchParams.append('$web_only', 'true'); + + return await general(url, lang); +} diff --git a/src/plugins/index.ts b/src/plugins/index.ts index b6deb53b..07aefb79 100644 --- a/src/plugins/index.ts +++ b/src/plugins/index.ts @@ -1,8 +1,10 @@ import { IPlugin } from '@/iplugin.js'; import * as amazon from './amazon.js'; import * as wikipedia from './wikipedia.js'; +import * as branchIoDeeplinks from './branchio-deeplinks.js'; export const plugins: IPlugin[] = [ amazon, wikipedia, + branchIoDeeplinks, ];