Documentation
¶
Overview ¶
Example ¶
package main
import (
"fmt"
"log"
kokkaiapi "github.com/yyyoichi/kokkai-api"
)
func main() {
// 国会回次209の科学技術に関する議事録を「会議単位簡易出力」で最大3件ずつ、再帰的に取得する。
p := kokkaiapi.NewParam()
p.Any("科学技術")
p.RecordPacking("json")
p.SessionFrom(209)
p.SessionTo(209)
p.MaximumRecords(3)
// exp return 7 records
for result, err := range kokkaiapi.IterKaniResult(p) {
if err != nil {
log.Fatal(err)
}
fmt.Println("numberOfReturn", result.NumberOfReturn)
}
}
Output: numberOfReturn 3 numberOfReturn 3 numberOfReturn 1
Index ¶
- Constants
- Variables
- func ConstructURI(baseURI string, p Param) string
- func GetResult[T result](p Param, r Request[T]) (T, error)
- func IterHatsugenResult(p Param) iter.Seq2[*HatsugenResult, error]
- func IterKaigiResult(p Param) iter.Seq2[*KaigiResult, error]
- func IterKaniResult(p Param) iter.Seq2[*KaniResult, error]
- func IterResult[T result](p Param, r Request[T]) iter.Seq2[T, error]
- type Client
- type Generator
- type HatsugenResult
- type KaigiResult
- type KaniResult
- type Param
- func (p *Param) Any(val string)
- func (p *Param) Closing(val bool)
- func (p *Param) ContentsAndIndex(val bool)
- func (p *Param) From(val string)
- func (p *Param) IssueFrom(val int)
- func (p *Param) IssueID(val string)
- func (p *Param) IssueTo(val int)
- func (p *Param) MaximumRecords(val int)
- func (p *Param) NameOfHouse(val string)
- func (p *Param) NameOfMeeting(val string)
- func (p *Param) RecordPacking(val string)
- func (p *Param) ResetStartRecord(val int)
- func (p *Param) SearchRange(val string)
- func (p *Param) SessionFrom(val int)
- func (p *Param) SessionTo(val int)
- func (p *Param) Speaker(val string)
- func (p *Param) SpeakerGroup(val string)
- func (p *Param) SpeakerPosition(val string)
- func (p *Param) SpeakerRole(val string)
- func (p *Param) SpeechID(val string)
- func (p *Param) SpeechNumber(val int)
- func (p *Param) StartRecord(val int)
- func (p *Param) SupplementAndAppendix(val bool)
- func (p *Param) Until(val string)
- type Request
Examples ¶
Constants ¶
const ( KaniURI = "https://kokkai.ndl.go.jp/api/meeting_list" KaigiURI = "https://kokkai.ndl.go.jp/api/meeting" HatsugenURI = "https://kokkai.ndl.go.jp/api/speech" )
Variables ¶
var ( // 「会議単位簡易出力」を取得するクライアント KaniClient = Client[*KaniResult]{ HttpClient: http.DefaultClient, Interval: defaultInterval, NewResultFunc: func() *KaniResult { return new(KaniResult) }, } // 「会議単位出力」を取得するクライアント KaigiClient = Client[*KaigiResult]{ HttpClient: http.DefaultClient, Interval: defaultInterval, NewResultFunc: func() *KaigiResult { return new(KaigiResult) }, } // 「発言単位出力」を取得するクライアント HatsugenClient = Client[*HatsugenResult]{ HttpClient: http.DefaultClient, Interval: defaultInterval, NewResultFunc: func() *HatsugenResult { return new(HatsugenResult) }, } )
var ( ErrRequestFailed = errors.New("http request failed") ErrNonOKResponse = errors.New("non-OK HTTP status") ErrParsingResponse = errors.New("failed to parse response") )
var ( //「会議単位簡易出力」を取得するリクエスト構造体 DefaultKaniRequest = Request[*KaniResult]{ Client: KaniClient, Generator: KaniURI, } //「会議単位出力」を取得するリクエスト構造体 DefaultKaigiRequest = Request[*KaigiResult]{ Client: KaigiClient, Generator: KaigiURI, } //「発言単位出力」を取得するリクエスト構造体 DefaultHatsugenRequest = Request[*HatsugenResult]{ Client: HatsugenClient, Generator: HatsugenURI, } )
Functions ¶
func ConstructURI ¶
func GetResult ¶
任意のリクエスト構造体から議事録を取得する。
Example ¶
package main
import (
"fmt"
"log"
kokkaiapi "github.com/yyyoichi/kokkai-api"
)
func main() {
// 国会回次209の科学技術に関する議事録を「会議単位簡易出力」で一度だけ取得する。
p := kokkaiapi.NewParam()
p.Any("科学技術")
p.RecordPacking("json")
p.SessionFrom(209)
p.SessionTo(209)
p.MaximumRecords(10)
// exp return 7 records
for result, err := range kokkaiapi.IterKaniResult(p) {
if err != nil {
log.Fatal(err)
}
fmt.Println("numberOfReturn", result.NumberOfReturn)
}
}
Output: numberOfReturn 7
func IterHatsugenResult ¶
func IterHatsugenResult(p Param) iter.Seq2[*HatsugenResult, error]
「発言単位出力」で議事録を再帰的に取得します。
引数に最初の検索条件を指定します。
func IterKaigiResult ¶
func IterKaigiResult(p Param) iter.Seq2[*KaigiResult, error]
「会議単位出力」で議事録を再帰的に取得します。
引数に最初の検索条件を指定します。
func IterKaniResult ¶
func IterKaniResult(p Param) iter.Seq2[*KaniResult, error]
「会議単位簡易出力」で議事録を再帰的に取得します。
引数に最初の検索条件を指定します。
func IterResult ¶
任意のリクエスト構造体から再帰的に議事録を取得します。
Example ¶
package main
import (
"fmt"
"log"
"net/http"
"time"
kokkaiapi "github.com/yyyoichi/kokkai-api"
)
func main() {
// httpクライアントに任意の構造体を利用して、議事録を取得する。
request := kokkaiapi.DefaultHatsugenRequest
// `Get(uri string) (*http.Response, error)` メソッドを持つ構造体が必要。
request.Client.HttpClient = &http.Client{
// custom http client
Timeout: time.Duration(1 * time.Second),
}
p := kokkaiapi.NewParam()
p.Any("鬼滅の刃")
p.RecordPacking("json")
p.SessionFrom(209) // 議事録は存在しない。
p.SessionTo(209) // 210には議事録があったりする。
p.MaximumRecords(3)
// return no record
for result, err := range kokkaiapi.IterResult(p, request) {
if err != nil {
log.Fatal(err)
}
fmt.Println("numberOfReturn", result.NumberOfReturn)
}
}
Output: numberOfReturn 0
Types ¶
type Client ¶
type Client[T result] struct {
// httpリクエストを実行する構造体。
//
// 下記の、`httpClient`を満たす構造体が必要。
//
// type httpClient interface {
// Get(string) (*http.Response, error)
// }
//
HttpClient httpClient
// APIにアクセスするインターバル。
//
// [国会会議録検索システム 検索用APIの仕様](https://kokkai.ndl.go.jp/api.html)では、アクセスの間隔に数秒間を置くことが推奨されている。
//
// デフォルトで1秒間としている。
Interval time.Duration
// レスポンス構造体を初期化する関数。
NewResultFunc func() T
}
国会議事録APIにリクエストを行う構造体。
type HatsugenResult ¶
type HatsugenResult struct {
Message string `json:"message"` // エラーメッセージ
Details []string `json:"details"` // エラーメッセージの詳細(※検索条件の入力誤りの場合のみ、※検索条件の入力誤りが複数ある場合のみ)
NumberOfRecords int `json:"numberOfRecords"` // 総結果件数
NumberOfReturn int `json:"numberOfReturn"` // 返戻件数
StartRecord int `json:"startRecord"` // 開始位置
NextRecordPosition int `json:"nextRecordPosition"` // 次開始位置
SpeechRecord []struct {
SpeechID string `json:"speechID"` // 発言ID
IssueID string `json:"issueID"` // 会議録ID
ImageKind string `json:"imageKind"` // イメージ種別(会議録・目次・索引・附録・追録)
SearchObject int `json:"searchObject"` // 検索対象箇所(議事冒頭・本文)
Session int `json:"session"` // 国会回次
NameOfHouse string `json:"nameOfHouse"` // 院名
NameOfMeeting string `json:"nameOfMeeting"` // 会議名
Issue string `json:"issue"` // 号数
Date string `json:"date"` // 開催日付
Closing string `json:"closing"` // 閉会中フラグ
SpeechOrder int `json:"speechOrder"` // 発言番号
Speaker string `json:"speaker"` // 発言者名
SpeakerYomi string `json:"speakerYomi"` // 発言者よみ
SpeakerGroup string `json:"speakerGroup"` // 発言者所属会派
SpeakerPosition string `json:"speakerPosition"` // 発言者肩書き
SpeakerRole string `json:"speakerRole"` // 発言者役割
Speech string `json:"speech"` // 発言
StartPage int `json:"startPage"` // 発言が掲載されている開始ページ
SpeechURL string `json:"speechURL"` // 発言URL
SeetingURL string `json:"meetingURL"` // 会議録テキスト表示画面のURL
PdfURL string `json:"pdfURL"` // 会議録PDF表示画面のURL(※存在する場合のみ)
} `json:"speechRecord"` // 発言情報
}
発言単位出力
type KaigiResult ¶
type KaigiResult struct {
Message string `json:"message"` // エラーメッセージ
Details []string `json:"details"` // エラーメッセージの詳細(※検索条件の入力誤りの場合のみ、※検索条件の入力誤りが複数ある場合のみ)
NumberOfRecords int `json:"numberOfRecords"` // 総結果件数
NumberOfReturn int `json:"numberOfReturn"` // 返戻件数
StartRecord int `json:"startRecord"` // 開始位置
NextRecordPosition int `json:"nextRecordPosition"` // 次開始位置
MeetingRecord []struct {
IssueID string `json:"issueID"` // 会議録ID
ImageKind string `json:"imageKind"` // イメージ種別(会議録・目次・索引・附録・追録)
SearchObject int `json:"searchObject"` // 検索対象箇所(議事冒頭・本文)
Session int `json:"session"` // 国会回次
NameOfHouse string `json:"nameOfHouse"` // 院名
NameOfMeeting string `json:"nameOfMeeting"` // 会議名
Issue string `json:"issue"` // 号数
Date string `json:"date"` // 開催日付
Closing string `json:"closing"` // 閉会中フラグ
SpeechRecord []struct {
SpeechID string `json:"speechID"` // 発言ID
SpeechOrder int `json:"speechOrder"` // 発言番号
Speaker string `json:"speaker"` // 発言者名
SpeakerYomi string `json:"speakerYomi"` // 発言者よみ
SpeakerGroup string `json:"speakerGroup"` // 発言者所属会派
SpeakerPosition string `json:"speakerPosition"` // 発言者肩書き
SpeakerRole string `json:"speakerRole"` // 発言者役割
Speech string `json:"speech"` // 発言
StartPage int `json:"startPage"` // 発言が掲載されている開始ページ
CreateTime string `json:"createTime"` // レコード登録日時
UpdateTime string `json:"updateTime"` // レコード更新日時
SpeechURL string `json:"speechURL"` // 発言URL
} `json:"speechRecord"` // 発言情報
MeetingURL string `json:"meetingURL"` // 会議録テキスト表示画面のURL ,
PdfURL string `json:"pdfURL"` // 会議録PDF表示画面のURL(※存在する場合のみ) ,
} `json:"meetingRecord"` // 会議録情報
}
会議単位出力
type KaniResult ¶
type KaniResult struct {
Message string `json:"message"` // エラーメッセージ
Details []string `json:"details"` // エラーメッセージの詳細(※検索条件の入力誤りの場合のみ、※検索条件の入力誤りが複数ある場合のみ)
NumberOfRecords int `json:"numberOfRecords"` // 総結果件数
NumberOfReturn int `json:"numberOfReturn"` // 返戻件数
StartRecord int `json:"startRecord"` // 開始位置
NextRecordPosition int `json:"nextRecordPosition"` // 次開始位置
MeetingRecord []struct {
IssueID string `json:"issueID"` // 会議録ID
ImageKind string `json:"imageKind"` // イメージ種別(会議録・目次・索引・附録・追録)
SearchObject int `json:"searchObject"` // 検索対象箇所(議事冒頭・本文)
Session int `json:"session"` // 国会回次
NameOfHouse string `json:"nameOfHouse"` // 院名
NameOfMeeting string `json:"nameOfMeeting"` // 会議名
Issue string `json:"issue"` // 号数
Date string `json:"date"` // 開催日付
Closing string `json:"closing"` // 閉会中フラグ
SpeechRecord []struct {
SpeechOrder int `json:"speechOrder"` // 発言番号
Speaker string `json:"speaker"` // 発言者名
SpeechURL string `json:"speechURL"` // 発言URL
} `json:"speechRecord"`
MeetingURL string `json:"meetingURL"` // 会議録テキスト表示画面のURL ,
PdfURL string `json:"pdfURL"` // 会議録PDF表示画面のURL(※存在する場合のみ) ,
} `json:"meetingRecord"`
}
会議単位簡易出力
type Param ¶
type Param struct {
// contains filtered or unexported fields
}
検索条件
- {検索条件}は「パラメータ名=値」の形式で指定し、UTF-8でURLエンコードしてください。
- 複数のパラメータで検索する場合には、半角の&(U+0026)で接続してください。
- 検索条件部分は全体で2000バイトが上限です。
- 院名、会議名、検索語、発言者名、開会日付/始点、開会日付/終点、発言番号、発言者肩書き、発言者所属会派、発言者役割、発言ID、冊子ID、国会回次From、国会回次To、号数From、号数Toのいずれも指定がなかった場合には、エラーになります。
func (*Param) Any ¶
検索語 発言内容等に含まれる言葉を指定可能。部分一致検索。半角スペース(U+0020)を区切り文字として複数指定した場合は、指定した語のAND検索となる。 省略可(省略時は検索条件に含めない)。
func (*Param) Closing ¶
閉会中指定 検索対象を閉会中の会議録に限定するか否かを「true」「false」で指定可能。 省略可(省略時は「false」(限定しない)が指定されたものとして検索する)。
func (*Param) ContentsAndIndex ¶
目次・索引指定 検索対象を目次・索引に限定するか否かを「true」「false」で指定可能。 省略可(省略時は「false」(限定しない)が指定されたものとして検索する)。
func (*Param) From ¶
開会日付/始点 検索対象とする会議の開催日の始点を「YYYY-MM-DD」の形式で指定可能。 省略可(省略時は「0000-01-01」が指定されたものとして検索する)。
func (*Param) IssueFrom ¶
号数From 検索対象とする号数の始まり(開始号)を3桁までの整数で指定可能(目次・索引・附録・追録は0号扱い)。号数Toと組み合わせて指定した場合には範囲指定検索、号数From単独で指定した場合は当該の回次のみを完全一致検索。 省略可(省略時は検索条件に含めない)。
func (*Param) IssueID ¶
会議録ID 会議録(冊子)を一意に識別するIDとして、会議録テキスト表示画面の「会議録テキストURLを表示」リンクで表示される21桁の英数字で指定可能(例:「100105254X00119470520」)。完全一致検索。 省略可(省略時は検索条件に含めない)。書式が適切でない場合にはエラーになる。
func (*Param) IssueTo ¶
号数To 検索対象とする号数の終わり(終了号)を3桁までの整数で指定可能(目次・索引・附録・追録は0号扱い)。号数Fromと組み合わせて指定した場合には範囲指定検索、号数To単独で指定した場合は当該の回次のみを完全一致検索。 省略可(省略時は検索条件に含めない)。
func (*Param) MaximumRecords ¶
一回の最大取得件数 一回のリクエストで取得できるレコード数を、会議単位簡易出力、発言単位出力の場合は「1~100」、会議単位出力の場合は「1~10」の範囲で指定可能。 省略時のデフォルト値は、会議単位簡易出力、発言単位出力の場合は「30」、会議単位出力の場合は「3」
func (*Param) NameOfHouse ¶
院名 院名として「衆議院」「参議院」「両院」「両院協議会」のいずれかを指定可能。「両院」と「両院協議会」の結果は同じ。 省略可(省略時は検索条件に含めない)。また、指定可能な値以外を指定した場合も、検索条件に含めない。
func (*Param) NameOfMeeting ¶
会議名 本会議、委員会等の会議名(ひらがな可)を指定可能。部分一致検索。半角スペース(U+0020)を区切り文字として複数指定した場合は、指定した語のOR検索となる。 省略可(省略時は検索条件に含めない)。
func (*Param) RecordPacking ¶
応答形式 検索リクエストに対する応答ファイルの形式として、「xml」「json」のいずれかを指定可能。 省略可(省略時は「xml」が指定されたものとして検索する)。
func (*Param) SearchRange ¶
議事冒頭・本文指定 検索語(パラメータ名:any)を指定して検索する際の検索対象箇所を「冒頭」「本文」「冒頭・本文」のいずれかで指定可能。 省略可(省略時は「冒頭・本文」が指定されたものとして検索する)。検索語を指定しなかった時は検索条件には含めない。
func (*Param) SessionFrom ¶
国会回次From 検索対象とする国会回次の始まり(開始回)を3桁までの自然数で指定可能。国会回次Toと組み合わせて指定した場合には範囲指定検索、国会回次From単独で指定した場合は当該の回次のみを完全一致検索。 省略可(省略時は検索条件に含めない)。
func (*Param) SessionTo ¶
国会回次To 検索対象とする国会回次の終わり(終了回)を3桁までの自然数で指定可能。国会回次Fromと組み合わせて指定した場合には範囲指定検索、国会回次To単独で指定した場合は当該の回次のみを完全一致検索。 省略可(省略時は検索条件に含めない)。
func (*Param) Speaker ¶
発言者名 発言者名(議員名はひらがな可)を指定可能。部分一致検索。半角スペース(U+0020)を区切り文字として複数指定した場合は、指定した語のOR検索となる。 省略可(省略時は検索条件に含めない)。
func (*Param) SpeakerGroup ¶
発言者所属会派 発言者の所属会派を指定可能。部分一致検索(なお、登録されているデータは正式名称のみ)。 省略可(省略時は検索条件に含めない)。
func (*Param) SpeakerPosition ¶
発言者肩書き 発言者の肩書きを指定可能。部分一致検索。 省略可(省略時は検索条件に含めない)。
func (*Param) SpeakerRole ¶
発言者役割 発言者の役割として「証人」「参考人」「公述人」のいずれかを指定可能。 省略可(省略時は検索条件に含めない)。指定可能な値以外を指定した場合はエラーになる。
func (*Param) SpeechID ¶
発言ID 発言を一意に識別するIDとして、「会議録ID(パラメータ名:issueID。21桁の英数字)_発言番号(会議録テキスト表示画面で表示されている各発言に付されている、先頭に0を埋めて3桁にした数字。4桁の場合は4桁の数字)」の書式で指定可能(例:「100105254X00119470520_000」)。完全一致検索。 省略可(省略時は検索条件に含めない)。書式が適切でない場合にはエラーになる。
func (*Param) SpeechNumber ¶
発言番号 発言番号を0以上の整数(例:発言番号10の場合は「speechNumber=10」)で指定可能。完全一致検索。 省略可(省略時は検索条件に含めない)。
func (*Param) StartRecord ¶
開始位置 検索結果の取得開始位置を「1~検索件数」の範囲で指定可能。 省略時のデフォルト値は「1」
func (*Param) SupplementAndAppendix ¶
追録・附録指定 検索対象を追録・附録に限定するか否かを「true」「false」で指定可能。 省略可(省略時は「false」(限定しない)が指定されたものとして検索する)。