From d2a3e07205c3c9769bc5a7b42031c8884b5a25c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=8B=E3=81=A3=E3=81=93=E3=81=8B=E3=82=8A?= <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Wed, 15 Nov 2023 19:23:03 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20branch.io=E3=82=92=E7=94=A8=E3=81=84?= =?UTF-8?q?=E3=81=9F=E3=83=87=E3=82=A3=E3=83=BC=E3=83=97=E3=83=AA=E3=83=B3?= =?UTF-8?q?=E3=82=AF=E3=82=92=E3=83=91=E3=83=BC=E3=82=B9=E3=81=A7=E3=81=8D?= =?UTF-8?q?=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E4=BF=AE=E6=AD=A3=20(#13)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * (fix) branch.ioのディープリンクでうまく作動しないのを修正 * Update changelog * fix regex --- CHANGELOG.md | 4 ++++ built/iplugin.d.ts | 2 +- built/plugins/branchio-deeplinks.d.ts | 5 +++++ built/plugins/branchio-deeplinks.js | 12 ++++++++++++ built/plugins/index.js | 2 ++ src/iplugin.ts | 2 +- src/plugins/branchio-deeplinks.ts | 19 +++++++++++++++++++ src/plugins/index.ts | 2 ++ 8 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 built/plugins/branchio-deeplinks.d.ts create mode 100644 built/plugins/branchio-deeplinks.js create mode 100644 src/plugins/branchio-deeplinks.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 2565e03..07f2459 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 f5e6b9f..97f598c 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 0000000..ad10fa9 --- /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 0000000..397d37c --- /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 13de039..b325675 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 2aabf86..28108cc 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 0000000..db92d30 --- /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 b6deb53..07aefb7 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, ];