wedata

Database: ことせかいWebページ読み込み用情報

ことせかい という読み上げアプリで利用するデータです。
Webで読める小説を取り込むために、文書の場所や次のページへのlinkなどをさすxpathを記述します。
幾つかの項目はAutopagerizeとほぼ同じ意味です。

ことせかい については以下のURLを参照してください。
http://limura.github.io/NovelSpeaker/


以下、個々の属性についての概ねの方針を書いておきます。

url
対象のURLしてヒットする正規表現を書きます。

pageElement
読み上げ対象となる文字列が含まれるエレメントを取り出すxpathを書きます。複数hitするようなxpathを書いた場合、その全てが取り出されます。

nextLink
次のページに続く場合のaタグを指定するxpathを書きます。複数hitするものを書いた場合、最初のエレメントだけが採用されます。
Autopagerize側では必須属性になっていますが、こちらでは必須ではありません。つまり、Autopagerizeは(その目的から)1ページに全てが入っているサイトは登録されていませんので、そのようなサイトはこちらに登録する必要があります。また、Autopagerize側で主題が違う記事へのnextLinkが指定されているものについて、こちら側のデータベースにnextLinkが無い状態で登録することによって、主題が違う記事を読み込まないようにする事もできなくもありません。

title
本棚に登録される時の名前として採用される文字列を含むエレメントを取り出すためのxpathを書きます。

subtitle
(2017/12/18: 将来的に利用するための項目です)小説の個々の章にあたるサブタイトルを抽出できるエレメントを取り出すためのxpathを書きます。

author
作者名として採用される文字列を含むエレメントを指定するxpathを書きます。

firstPageLink
小説のタイトルページ(本文は含まない)がある場合、そのタイトルページから本文のページに遷移するためのaタグを指定します。複数hitするものを書いた場合、最初のエレメントだけが採用されます。
注意:firstPageLink にヒットした場合、そのURLを読み直して評価をし直すため、無限に firstPageLink の読み込み先を読んで場合があります。そのようにならないように firstPageLink の xpath を指定してください。

tag
その小説等に関する文字列タグが列挙されているエレメントがある場合は指定します。将来的に小説の検索などに使われるタグとして利用されるつもりのものになります。幾つかターゲットを書いてみたところ、どうやら Aレコード でタグへのlinkになっているものが多いようで、その場合は内部にスペースがあるタグなども見受けられましたため、Aレコードのようなエレメント毎に一つのタグとして取り込めないかな?と思っています。ということでできればAレコードそのものを取り出すように(a/text() のような XPath を書いてテキストだけにしないように)して頂ければ幸いです。

isNeedHeadless
JavaScriptが動作した後に本文部分(pageElement)が生成される場合には何らかの値("true"が推奨)を入れます。"false" や "False", "nil", "0", ""(何も入れない) の場合には単にGETリクエストで取得された値について評価して良いという意味になります。

nextButton
isNeedHeadless が有効になっている場合、ここで指定される要素の最初の物を次へのリンクとみなして .click() が実行されます。なお、この要素については xpath ではなく CSS selector で表記します(できればxpathにしたいのですが……)。なお、nextLink よりも nextButton の方が先に評価されます(nextButton と nextLink が両方共に存在する場合は nextButton が優先されます)。

firstPageButton
isNeedHeadless が有効になっている場合、ここで指定される要素の最初の物を最初の本文へのリンクとみなして .click() が実行されます。なお、この要素については xpath ではなく CSS selector で表記します(できればxpathにしたいのですが……)。なお、firstPageLink よりも firstPageButton の方が先に評価されます(firstPageButton と firstPageLink が両方共に存在する場合は firstPageButton が優先されます)。

forceClickButton
(実験的機能なので将来的に変更される可能性があります)isNeedHeadless が有効になっている場合、ここで指定される要素が存在した場合はその要素に対して .click() が実行された後、改めて内容を評価し直します。特定のボタンを押さないと先に進めない場合などに利用します。

waitSecondInHeadless
isNeedHeadless が有効になっている場合、ページが読み込まれたと思われる後、さらにここで指定される数値で指定される秒数待った後にinnerHTMLを評価します。

injectStyle
pageElement で取り出した後のHTMLに対して強制的に適用するstyleを記述します。これは、pageElementで取り出した後のHTMLにはstyleが適用されない(パスが違うのでstyleが適用されないであるとか、pageElementで取り出されたHTMLにはstyleが無いであるとか、styleは別のファイルになっているのでGETリクエスト一回では取り出せないであるといったときに、white-space:pre-wrap; で指定されるようなコンテンツが入っているとHTMLからStringに変換した時に改行周りとかが省略されてしまって悲しいことになるという問題を回避するための物になります。(例えば、pageElement として <div class="content xxx yyy">...</div> が取り出されるのがわかっている場合、"div.content{white-space:pre-wrap;}" といったような値を指定する事を期待しています。

exampleUrl
対象のURLを書きます。後で動作確認などをする時に利用します。複数書く場合は半角スペースで区切ってください。

memo
何らかのメモ書きを残すべきと思った場合は書いておいてください。日本語でOKです。


また、次のページや最初のページを判定するための要素がいくつかあるのでそれらの優先順位を別途書き記しておきます。
優先される順序は

1. forceClickButton
2. nextButton
3. firstPageButton
4. nextLink
5. firstPageLink

の順(数字が若い方が優先)になります。

なお、ことせかい の動作としては、このデータベースとAutopagerizeのデータベースの両方を使ってデータを読み込むように作られています。
動作としては対象のURLについて、まずこちらのデータベースにあるものが優先され、こちらのデータベースに載っていないURLのものについてはAutopagerizeのデータベースを参照することになります。
ですので、Autopagerize側で定義されている情報で十分なものの場合は改めてこちら側のデータベースに登録する必要は無いかもしれません。

Last Update: 2024-03-19T12:54:14+09:00 History

Item List