package main import ( "strings" "net/url" "fmt" ) func getid(u string) (string, error) { parse, err := url.Parse(u) if err != nil { return "", err } params, err := url.ParseQuery(parse.RawQuery) if err != nil { return "", err } id, ok := params["id"] if !ok || len(id) == 0 { return "", fmt.Errorf("IDを見つけられませんでした。") } return id[0], nil } /* 記事かの確認 */ func isarticle(u string) bool { chk := strings.Split(u, "=") return len(chk) > 2 && (chk[0] == "/view_news.pl?id" || chk[0] == "/view_news.pl?from" || chk[0] == "/view_news.pl?media_id" || chk[0] == "/view_news.pl?stkt") } /* 部分圏かの確認 */ func issubcat(u string) bool { chk := strings.Split(u, "=") return len(chk) > 1 && (chk[0] == "/list_news_category.pl?id" || chk[0] == "/list_news_category.pl?page" || chk[0] == "/list_news_category.pl?sort" || chk[0] == "/list_news_category.pl?type" || chk[0] == "/list_news_category.pl?sub_category_id") && strings.Contains(u, "type=bn") } /* 部分かの確認 */ func iscategory(u string) bool { chk := strings.Split(u, "=") return len(chk) > 1 && (chk[0] == "/list_news_category.pl?id" || chk[0] == "/list_news_category.pl?sub_category_id" || chk[0] == "/list_news_category?from") && !strings.Contains(u, "type=bn") } /* 出版社かの確認 */ func ispublish(u string) bool { chk := strings.Split(u, "=") return len(chk) > 1 && (chk[0] == "/list_news_media.pl?id" || chk[0] == "/list_news_media.pl?page") } /* つぶやきかの確認 */ func istubayaki(u string) bool { chk := strings.Split(u, "=") return len(chk) > 1 && (chk[0] == "/list_quote.pl?id" || chk[0] == "/list_quote.pl?type" || chk[0] == "/list_quote.pl?sort" || chk[0] == "/list_quote.pl?news_id") && strings.Contains(u, "type=voice") && (strings.Contains(u, "sort=post_time") || strings.Contains(u, "sort=feedback_count")) }