// ==UserScript==
// @name SkipAntennaSite
// @namespace https://greasyfork.dpdns.org/ja/scripts/16465-skipantennasite
// @description アンテナサイトがうざい
// @version 1.23
// @license MIT License
// @grant none
// @include http://2ch-c.net/*
// @include http://get2ch.net/*
// @include http://the-3rd.net/*
// @include http://matomeantena.com/*
// @include http://moudamepo.com/*
// @include http://newmofu.doorblog.jp/*
// @include http://newota.blog.fc2.com/*
// @include http://newresu1.blog.fc2.com/*
// @include http://newyaku.blog.fc2.com/*
// @include http://newero1.blog.fc2.com/*
// @include http://blog-news.doorblog.jp/*
// @include http://nullpoantenna.com/*
// @include http://newpuru.doorblog.jp/*
// @include http://besttrendnews.net/*
// @include http://2ch.logpo.jp/*
// @include http://s.2ch.logpo.jp/*
// @include http://anaguro.yanen.org/*
// @include http://a.anipo.jp/*
// @include http://katuru.com/*
// @include http://news-choice.net/*
// @include http://img.favsite.jp/*
// @include http://wk-tk.net/*
// @include http://newser.cc/*
// @include http://kita-kore.com/*
// @include http://2channeler.com/*
// @include http://matomeja.jp/*
// @include http://shimamurakun.net/*
// @include http://kateich.net/*
// @include http://2ch-2.net/*
// @include http://2ch-n.net/*
// @include http://nantuka.blog119.fc2.com/*
// @include http://lifeantenna.com/*
// @include http://giko-news.com/*
// @include http://matome-surume.com/*
// @include http://blog.livedoor.jp/houkagoguide/*
// @include http://blog.livedoor.jp/ind_bikkuri/*
// @include http://blog.livedoor.jp/hioaysdnhjlk/*
// @include http://blog.livedoor.jp/warota_a_lot/*
// @include http://blog.livedoor.jp/kijyonotsudoi/*
// @include http://blog.livedoor.jp/magicalnews/*
// @include http://blog.livedoor.jp/gndai/*
// @include http://blog.livedoor.jp/tokusetsu_news/*
// @include http://blog.livedoor.jp/xexnews/*
// @include http://blog.livedoor.jp/navippu/*
// @include http://watch2ch.2chblog.jp/*
// @include http://2chfinder.com/*
// @include http://gurugurulog.com/*
// @include http://www.j-antenna.com/*
// @include http://headline.mtfj.net/*
// @include http://antennachan.com/*
// @include http://www.ne.jp/asahi/*
// @include http://matometatta-news.net/*
// @include http://2ch-matome.com/*
// @include http://tokkaban.com/*
// @include http://owata.chann.net/*
// @include http://newspickup.com/*
// @include http://2ch-m.net/*
// @include http://baseball-mag.net/*
// @include http://new-soku.net/*
// @include http://www.2ch-antenna.net/*
// @include http://gikotena.net/*
// @include http://matonet.info/*
// @include http://minkurumato.net/*
// @include http://news-three-stars.net/*
// @include http://news-select.net/*
// @include http://rss.harikonotora.net/*
// @include http://www.pantena.net/*
// @include http://matomeume.com/*
// @include http://matomesakura.com/*
// @include http://matome-ch.com/*
// @include http://0matome.com/*
// @include http://www.2chantena.info/*
// @include http://rotco.jp/*
// @include http://uhouho2ch.com/*
// @include http://matomena.jp/*
// @include http://nkijo.com/*
// @include http://2ch-antenna.com/*
// @include http://www.tukuruyoantena.com/*
// @include http://www.まとめニュース.com/*
// @include http://www.xn--o9j0bk8t7cqhlg.com/*
// @include http://2chmatomeru.info/*
// @include http://waniantenna.com/*
// @include http://gossip2.net/*
// @include http://kojikisokuhou.com/*
// @include http://multi-media.doorblog.jp/*
// @include http://blogtsurugi.blog38.fc2.com/*
// @include http://konowaro.net/*
// @include http://giko2ch.net/*
// @include http://dariusnews.blog11.fc2.com/*
// @include http://2ch-a.info/*
// @include http://www.matomech.com/*
// @include http://www.so9.jp/*
// @include http://matonew.doorblog.jp/*
// @include http://cawaii2ch.com/*
// @include http://killing-time.biz/*
// @include http://2ch-spot.com/*
// @include http://o-2ch.net/*
// @include http://jyouhouya3.net/*
// @include http://www.sechigara.net/*
// @include http://cyousokuvip.com/*
// @include http://*.warotamaker.com/*
// @include http://*.warotah.com/*
// @include http://seiyuu-antena.antena-nijimatome.com/*
// @include http://seiyuu.seiyuu-antenna.info/*
// @include http://seiyuu.antena-matome-2ch.com/*
// @include http://*.antenam.info/*
// @include http://*.antenam.biz/*
// @include http://*.antenam.jp/*
// @include http://*.atna.jp/*
// @include http://*.a-antenam.info/*
// @include http://voice.lady.jp/*
// @include http://koebuta.net/*
// @include http://girlsreader.com/*
// @include http://kuma-log.net/*
// @include http://a-matome.com/*
// @include http://antenna.gift/*
// @include http://matomatome.com/*
// @include http://www.antennash.com/*
// @include http://antenna-ga.com/*
// @include http://lifech.2-d.jp/*
// @include http://katei-matome.com/*
// @include http://news-pod.net/*
// @include http://2chnavi.net/*
// @include http://2ch.anything-navi.net/*
// @include http://twobeko.com/*
// @include http://girls-antena.2chblog.jp/*
// @include http://*.readers.jp/*
// @include http://webnew.net/*
// @include http://geinou2news.blog.fc2.com/*
// @include http://matomea.net/*
// @include http://newsoku.jp/*
// @include http://*.nantena.pw/*
// @include http://oniyomediary.com/*
// @include http://1000mg.sblo.jp/*
// @include http://netaatoz.blog21.fc2.com/*
// @include http://2ch-matome.net/*
// @include http://koisoku.net/*
// @include http://buromato.com/*
// @include http://nyan.eggtree.net/*
// @include http://ii-antenna.net/*
// @include http://matome-alpha.com/*
// @include http://fxmtm.net/*
// @include http://merry-news.com/*
// @include http://clipch.com/*
// @include http://aube0.com/*
// @include http://xnews.jp/*
// @include http://nanj-of-us.main.jp/*
// @include http://nanj-matome.com/*
// @include http://yomyo.jp/*
// @include http://365dys.com/*
// @include http://sta-navi.net/*
// @include http://moyashi.me/*
// @include http://sp.2chmap.com/*
// @include http://2chmap.com/*
// @include http://antenna.shinobi.jp/*
// @include http://trend-pr.com/*
// @include http://uchitome.com/*
// @include http://vipper774.blog115.fc2.com/*
// @include http://2ch-matomato.com/*
// @include http://nanj.matome-ch.com/*
// @include http://afo-news.com/*
// @include http://nanjallstars.net/*
// @include http://nanj.an-matome.com/*
// @include http://antennabank.com/*
// @include http://newsnow-2ch.com/*
// @include http://mh12.info/*
// @include http://killmej.com/*
// @include http://mt-antenna.info/*
// @include http://thebaseball.xyz/*
// @include http://proyakyuantenna.com/*
// @include http://bouyomi.jp/*
// @include http://digital-mixnews.com/*
// @include http://news.cnects.net/*
// @include http://athena.sakuratan.com/*
// @include http://digital-soccer.net/*
// @include http://2chmatome-news.com/*
// @include http://nanjheadline.com/*
// @include http://alfalfalfa.com/*
// @include http://yajiuma-antena.com/*
// @include http://owt.io/*
// @include http://kyuusai2nd.net/*
// @include http://kanasoku.info/*
// @include http://rd.app-heaven.net/*
// @include http://applinews24.com/*
// @include http://*.antenna-3.com/*
// @include http://2ch-mma.com/*
// @include http://matomenomori.net/*
// @include http://newsquo.net/*
// @include http://egone.org/*
// @include http://hapiyaku.com/*
// @include http://yuukoku.net/*
// @include http://isekaitraffic.livedoor.biz/*
// @include http://www.lifeappli-antenna.com/*
// @include http://iwashi.biz/*
// @include http://www.news1000000.com/*
// @include http://ga-t.net/*
// @include http://www.hiroburo.com/*
// @include http://newtroc.net/*
// @include http://watashe.blog135.fc2.com/*
// @include http://hemine.co/*
// @include http://esite100.com/*
// @include http://imakita.cowhow.net/*
// @include http://plasma-antenna.com/*
// @include http://www.newposu.com/*
// @include http://kijyo-antena.com/*
// @include http://kdkjch.com/*
// @include http://dietantenna.net/*
// @include http://nanteko.com/*
// @include http://sepian.org/*
// @include http://antenasu.net/*
// @include http://rss-seo.click/*
// @include http://kaigai-antena.com/*
// @include http://2chmm.com/*
// @include http://handero.net/*
// @include http://blue-a.org/*
// @include http://marugoto-antenna.com/*
// @include http://poka-n.net/*
// @include http://vipick.net/*
// @include http://news-channel.doorblog.jp/*
// @include http://trtd.info/*
// @include http://antennapan.info/*
// @include http://*.ozmaker.net/*
// @include http://b-news.doorblog.jp/*
// @include http://honey-tiger.ldblog.jp/*
// @include http://matome-crawler.com/*
// @include http://shimasoku.com/*
// @include http://news-matome.com/*
// @include http*://pun6.com/*
// @include http://antenow.com/*
// @include http://bokuantena.com/*
// @include http://mitena.net/*
// @include http://ii-net-ii.com/*
// @include http://*.kaeru.me/*
// @include http://*.nantoka-antenna.com/*
// @include http://arumira.com/*
// @include http://gayaruantenna.com/*
// @include http://nanjmin.net/*
// @include http://kanone.biz/*
// @include http://*.fantena.net/*
// @include http://past2chmatome.blog55.fc2.com/*
// @include http://pllp.info/*
// @include http://newtopics.info/*
// @include http://rankin9.com/*
// @include http://news109.com/*
// @include http://red-an.com/*
// @include http://gossipantenna.com/*
// @include http://hapikichi.com/*
// @include http://indexmatome.com/*
// @include http://newslogfc2.blog.fc2.com/*
// @include http://pikupikku.ldblog.jp/*
// @include http://matomeofmatomes.net/*
// @include http://funger-antena.info/*
// @include http://world-best-news.doorblog.jp/*
// @include http://www.en-ran.com/*
// @include http://*.antenna-2chan.info/*
// @include http://otadantenna.com/*
// @include http://hello-2ch.net/*
// @include http://an48.net/*
// @include http://news.favoch.com/*
// @include http://bokuwata-ch.com/*
// @include http://antch.net/*
// @include http://owata-net.com/*
// @include http://*.owata-net.com/*
// @include http://*.kachoufugetsu.info/*
// @include http://ijigen.me/*
// @include http://musasabiantenna.com/*
// @include http://www.2ch-a.net/*
// @include http://lab-matome.com/*
// @include http://lovesoku.com/*
// @include http://yorozu-yasan.com/*
// @include http://antenna-site.net/*
// @include http://smart.antenna-site.net/*
// @include http://nijigen.antennanijigen.info/*
// @include http://timely.blog.jp/*
// @include http://lily-app.net/*
// @include http://kitimama.net/*
// @include http://www.2chmatome2.jp/*
// @include http://lifema.net/*
// @include http://2ch-matome.link/*
// @include http://2ch-mi.net/*
// @include http://webnew.blog.jp/*
// @include http://blog.livedoor.jp/akio_live1/*
// @include http://2ch-matomato.me/*
// @include http://musicantenna.wpblog.jp/*
// @include http://watoson2.link/*
// @include http://newhub.xyz/*
// @include http://spohub.xyz/*
// @include http://otahub.xyz/*
// @include http://yakuhub.xyz/*
// @include http://kichihub.xyz/*
// @include http://gossiphub.xyz/*
// @include http://お借りしますお.xyz/*
// @include http://稼ぐちゃんねる.xyz/*
// @include http://tqc00031.xyz/*
// @include http://wantena.net/*
// @include http://ikimonomatometyou.blog40.fc2.com/*
// @include http://*.chantenna.net/*
// @include http://*.matomeplus.net/*
// ==/UserScript==
// jshint scripturl: true
var siteDefs = {
// しぃアンテナ(*゚ー゚)
'2ch-c.net': ['a.et_title',
textContent(null, 'table.entry a[target="_blank"]')],
// 2GET
'get2ch.net': ['li.pickup a',
'a.list-group-item[style="color:#F55;font-weight:bold;"]'],
// The 3rd
'the-3rd.net': ['a.ui-link[style^="color:#F33"]',
descendantClass('div#l_col a', 'span[style^="color:"]')],
// ワロタあんてな
'matomeantena.com': [replaceFeedClick('.current a.feed-click'),
replaceFeedClick('.active-feed a.feed-click'),
'.rss_link > a'],
// にゅーれす
'newresu1.blog.fc2.com': ['.title_link a', 'li.pickup a', '#pickupnews .title_link_a', 'ul.List_Box > li .title_link_a'],
// にゅーもふ
'newmofu.doorblog.jp': ref('newresu1.blog.fc2.com'),
// にゅーおた
'newota.blog.fc2.com': ref('newresu1.blog.fc2.com'),
// にゅーやく
'newyaku.blog.fc2.com': ref('newresu1.blog.fc2.com'),
// にゅーえろ
'newero1.blog.fc2.com': ref('newresu1.blog.fc2.com'),
// だめぽアンテナ
'moudamepo.com': ['li.ui-btn-up-e a.ui-link-inherit',
descendantClass('a.ui-link-inherit', 'span[style="color:#ff0000;"]'),
'.headline_pkup a', '.hl_pkup a'],
// ぶろにゅー
// UAをPCにする
'blog-news.doorblog.jp': function() {
var t = queryString('t');
if (t) {
t = decodeURIComponent(t);
if (byDescendantTextContent(function(){return t;}, 'li a', 'span.a-title', targetStartsWithTitle))
return;
}
byClass('a.title_link');
},
// ぬるぽあんてな
'nullpoantenna.com': [replaceFeedClick('li.current a.feed-click'),
replaceFeedClick('li.active-feed a.feed-click')],
// にゅーぷる
// リンク先が間違っているときは飛ばない
'newpuru.doorblog.jp': function(){
var url = queryString('url');
if (url)
url = reverse(decodeURIComponent(url));
else {
var match = window.location.href.match(/#url=(.+)/);
if (!match)
return;
url = match[1];
}
openLink(url);
},
// BestTrendNews
'besttrendnews.net': '#article [data-type="catchy"] .entry-title a',
// ニュース星3つ!
'news-three-stars.net': ref('besttrendnews.net'),
// まとめたった速報
'matometatta-news.net': ref('besttrendnews.net'),
// アフォニュース
'afo-news.com': ref('besttrendnews.net'),
// NEWS CHOICE
'news-choice.net': ref('besttrendnews.net'),
// にゅーすなう!
'newsnow-2ch.com': ref('besttrendnews.net'),
// このワロ
'konowaro.net': ref('besttrendnews.net'),
// ウェブニュー
'webnew.net': ref('besttrendnews.net'),
// アンテナバンク
'antennabank.com': ref('besttrendnews.net'),
// 2chまとめのまとめアンテナ
'2ch-mma.com': ref('besttrendnews.net'),
// LogPo!2ch
// mobile版は対応不可
//'2ch.logpo.jp': '.caption a',
// 2015-02-19: リニューアルしたらしいが
'2ch.logpo.jp': 'div.PickArticle a',
's.2ch.logpo.jp': 'h2.ArticleLink a',
// アナグロあんてな
'anaguro.yanen.org': ['td.title a.title', 'div[style="padding:4px 2px;background-color:#ffffff;"] a[target="_blank"]'],
// アンテナ速報
'a.anipo.jp': '#tbody tr[style^="background-color: rgb(255, 176, 187)"] a[title]',
// 勝つるあんてな
'katuru.com': '.rss_center_div a',
// 2次元と3次元の画像ブログまとめ
'img.favsite.jp': descendantClass('div a.stp', 'h2'),
// わくてか
'wk-tk.net': function() {
var l = queryString('l');
if (l && openLink(decodeURIComponent(l)))
return;
byClass('div.selected a');
},
// News人
'newser.cc': 'tr.target a',
// キタコレ
// 'a.link-red' or 'a.link-pink'?
'kita-kore.com': ['.article.active a',
textContent(null, 'div.list[style^="display: block"] a', titleStartsWithTarget)],
// ねらーアンテナ
'2channeler.com': function() {
var qs = getParameters();
var n = qs.n, d = qs.d;
if (n && d && byClass("a.title[onmouseover^=\"thumb_on('" + n + "','" + d + "'\"]"))
return;
if (n && byClass('a.title[href^="http://2channeler.com/out.cgi?n=' + n + '&"]'))
return;
var targets = queryNodes('div#thumb_box > div');
for (var i = 0, len = targets.length; i < len; i++)
if (targets[i].querySelector('div label').textContent.trim() == 'Pickup') {
var target = targets[i].querySelector('a.ui-link');
if (target && openLink(target.getAttribute('href')))
return;
}
byClasses('tr.line4 a', 'tr.line3 a');
},
// matomeja
'matomeja.jp': 'div.active .entry-title a',
// しまむらアンテナ
'shimamurakun.net': 'div#main-item a',
// 家庭ちゃんねる
'kateich.net': 'li.linktitle a',
// つーアンテナ
'2ch-2.net': function() {
// ページを移動するときにうざいポップアップを出さない
var e = queryNode('.active .entry-title');
if (e)
e.className = '';
byClass('.entry-item.active a');
},
// のーアンテナ
'2ch-n.net': ['.main-column .feed-list .entry-item.active .entry-title a',
'.active .feed_title a'],
// なんか憑かれた速報
'nantuka.blog119.fc2.com': textContent('h3 > a', 'div.article a'),
// ライフあんてな
// UAをPCにする
'lifeantenna.com': ['.entry-item.active .entry-title a',
'tr.active .feed_title a'],
// ギコにゅー
'giko-news.com': ['.article.active a', '#article-contents a.link-red', '#article-list-body li.selected a'],
// するめアンテナ
'matome-surume.com': 'tr.active .feed_title a',
// 放課後ガイドライン
'blog.livedoor.jp/houkagoguide': [textContent('h2.entry-title > a', 'div.article-body-more a'),
textContent(null, 'div#article-contents a', titleStartsWithTarget)],
// キットカスタネット
'blog.livedoor.jp/ind_bikkuri': descendantClass('div.article-body a', 'span[style^="color:"]'),
// わろたあっろと
'blog.livedoor.jp/warota_a_lot': 'article#Article > h2 > div > div:not([class]) > a',
// ニュースJAPAN
'blog.livedoor.jp/hioaysdnhjlk': '.title_link a',
// NEWS DIJEST
'blog.livedoor.jp/gndai': textContent(null, '.article-body a', titleStartsWithTarget),
// 鬼女の集い
'blog.livedoor.jp/kijyonotsudoi': descendantClass('div.article-body a', 'span[style^="color: rgb(255, 0, 0)"]'),
// まじかるニュース
'blog.livedoor.jp/magicalnews': textContent('.article-title', 'div.article-body p a', titleStartsWithTarget),
// 特設ニュースちゃんねる
'blog.livedoor.jp/tokusetsu_news': '#title_site a',
// XEX NEWS
'blog.livedoor.jp/xexnews': textContent('.article-title', 'div.article-body p a', titleStartsWithTarget),
// watch@2チャンネル
'watch2ch.2chblog.jp': descendantClass('div.article-body a', 'span.pickup_link'),
// 2chファインダー
'2chfinder.com': ['li.single a', 'ul.single a'],
// ぐるぐるログ
// UAをPCにする
'gurugurulog.com': function() {
var n = queryString('n');
if (n)
byClass('.article .cat-kiji-title.kiji_n-' + n + ' a');
else
byClass('.title_link a');
},
// j-antenna
'www.j-antenna.com': ['.pickup_entry_title a', 'a.pickup_entry_title'],
// とろたまヘッドライン
'headline.mtfj.net': ['td.bold a', 'div.rss_article_bold a'],
// アンテナちゃん
'antennachan.com': 'div#rline_pu div.netalink a',
// 朝目新聞
'www.ne.jp/asahi': 'a.feedtitle',
// 2chまとめヘッドライン
'2ch-matome.com': [descendantClass('a.main_content_link', 'p.pickup_article'),
descendantClass('a.mainContentLink', 'span.red')],
// 特価板
'tokkaban.com': 'li.current a',
// オワタあんてな
'owata.chann.net': ['.pickup a.article-link',
'div.active .choice a'],
// NEWS PICK UP
'newspickup.com': 'p.active a',
// まとめアンテナ(´∀`)
'2ch-m.net': textContent(null, 'tr.entry a', titleStartsWithTarget),
// BaseBall MAG
'baseball-mag.net': descendantClass('article#content a', 'div.title[style^="color:"]'),
// ニュー速
'new-soku.net': 'a.target_article',
// 2chアンテナ
'www.2ch-antenna.net': 'a._txt_red',
// ギコあんてな!
'gikotena.net': ['.pickup .site_content_title a',
'a.label_list_content_title'],
// まとねっと
'matonet.info': 'a.pickup',
// みんくるアンテナ( ゚Д゚)
'minkurumato.net': 'td.feed_title a[style="color:red"]',
// NEWS SELECT
'news-select.net': ['.article.active a',
'li.selected a'],
// harikonotora
'rss.harikonotora.net': textContent(null, 'div.headline a.kizi'),
// P!アンテナ
'www.pantena.net': 'article#main-entry a',
// ニュース速報まとめ梅
'matomeume.com': ['div.kijis5 a', 'div.kjran3 a'],
// ニュース速報まとめ桜
'matomesakura.com': ['div.kijis5 a', 'div.kjran3 a'],
// 2chまとめちゃんねる
'matome-ch.com': textContent(null, 'div.entrys_title a', titleStartsWithTarget),
// おまとめ
'0matome.com': 'div.pickup a',
// 2chまとめ
'www.2chantena.info': textContent(null, 'div.entry-title a', titleStartsWithTarget),
// Rotco
'rotco.jp': 'td.articleTitle a[style^="color:"]',
// ウホウホあんてな
'uhouho2ch.com': 'li.pickup a',
// マトメナ
'matomena.jp': 'div.linked_article a',
// 日刊鬼女通信
'nkijo.com': 'a.Bp2ATitleKiji',
// 2ちゃんてな
'2ch-antenna.com': 'td.article_title a[style^="color"]',
// つくるよあんてな
'www.tukuruyoantena.com': 'table.entrylist a[style^="color"]',
// まとめニュース速報
'www.まとめニュース.com': 'div.article_box a[style^="color"]',
'www.xn--o9j0bk8t7cqhlg.com': 'div.article_box a[style^="color"]',
// 2ちゃんねるまとめるまとめ
'2chmatomeru.info': 'tr[style^="background-color"] td.tdLink a',
// ワニアンテナ
'waniantenna.com': 'a.story-title-link.red',
// GOSSIP CHANNEL
'gossip2.net': ['.mainArea .main .topArticle .txtCell h2 a',
'div.art-title-sp > div > a',
'div.art-rank > div > a:first-child',
'div.art-rank > div > a:nth-child(2)',
function() {
var id = queryString('id');
if (id && id.length > 3)
byClass('div.art-anchor[data-article-num="' + id.substring(3) + '"] a');
}],
// 乞食速報
'kojikisokuhou.com': 'div.body > ul.entries > li.entry > span > a',
// マルチメディアNEWS
'multi-media.doorblog.jp': [
textContent('h1.article-title', 'div#article-contents a[target="_blank"]'),
textContent('h1.article-title', 'div.article-body div.article-body-inner a[target="_blank"]'),
descendantClass('div#article-contents > b:last-child > a', 'span[style="color: rgb(255, 0, 0);"]'),
descendantClass('div.article-body > div.article-body-inner > b:last-child > a', 'span[style="color: rgb(255, 0, 0);"]')
],
// エ・ロックオン
'blogtsurugi.blog38.fc2.com': 'div.postmain a[title]',
// ギコあんてな
'giko2ch.net': 'a.post_link.pickup',
// MEGA NEWS LAUNCHER
'dariusnews.blog11.fc2.com': textContent(null, 'li a', titleStartsWithTarget),
// 2chまとめ放送局
'2ch-a.info': 'tr.danger a',
// まとめちゃんねる
'www.matomech.com': textContent(null, 'td.articleListTableTitle a', titleStartsWithTarget),
// 【速報】アンテナ(*・ω・)ノ゙
'www.so9.jp': 'article#rsskizi a',
// まとにゅー!
'matonew.doorblog.jp': 'div.p_link a',
// 奥様アンテナ
'cawaii2ch.com': textContent(null, 'div.entry a', titleEndsWithTarget),
// 暇つぶしアンテナ
'killing-time.biz': 'a.titlematch',
// 2chまとめSPOT
'2ch-spot.com': function() {
var f_id = queryString('f_id');
if (!f_id || !byClass('a.future-entry[data-entry-id="' + f_id + '"]'))
byClass('a.future-entry[style*="display: block"]');
},
// おにちゃんねる
'o-2ch.net': 'td.article.red a',
// 情報屋さん。
'jyouhouya3.net': [checkExists('meta[name="keywords"]'),
'a.link_ra'],
// せちがら速報
'www.sechigara.net': [checkExists('div.t_h'),
'div.article-body-inner > a',
descendantClass('div.article-body > a', 'b > span[style^="color: rgb(255, 0, 0)"]')],
// 超速V話題のまとめちゃん
'cyousokuvip.com': [checkExists('div.t_h'),
descendantClass('div.article-body-inner > a', 'span[style^="color: rgb(255, 0, 0)"]'),
descendantClass('div.article-body > a', 'span[style^="color: rgb(255, 0, 0)"]')],
// ウチのトメさまがいちばんカワイイ
'uchitome.com': [checkExists('div.t_h'),
descendantClass('div.article div.main > a', 'span[style^="color: rgb(255, 0, 0)"]'),
descendantClass('div.article-body > a', 'span[style^="color: rgb(255, 0, 0)"]')],
// ワロタめーかー
'.warotamaker.com': replaceFeedClick('li.active-feed a.feed-click'),
// ワロタめーかーH
'.warotah.com': ref('.warotamaker.com'),
// 声優アンテナ~二次元まとめ~(feed)
'seiyuu-antena.antena-nijimatome.com/feed': ['td.feed_title a[style="color:red"]', 'div.feed_title a[style="color:red"]'],
// 声優アンテナ~二次元まとめ~(article)
'seiyuu-antena.antena-nijimatome.com/abs': ['div#articles > div.source > a[target="_blank"]', 'div#articles > a[target="_blank"]'],
// 二次元アンテナ速報
'seiyuu.seiyuu-antenna.info/feed': ref('seiyuu-antena.antena-nijimatome.com/feed'),
'seiyuu.seiyuu-antenna.info/abs': ref('seiyuu-antena.antena-nijimatome.com/abs'),
// 声優アンテナ~まとめ~
'seiyuu.antena-matome-2ch.com': 'a.rclick[style="color:red"]',
// アンテナメーカー
'.antenam.info': function() {
if (byClass('span.target_item a'))
return;
var path = window.location.pathname;
var match;
if ((match = path.match(/\/items\/view\/(\d+)/)))
byClass('a[href^="/items/click/' + match[1] + '"]');
else if ((match = path.match(/\/items\/search\/title:(.+)/)))
byTextContent(function(){return decodeURIComponent(match[1]);}, '.item_title_list a.blog_post');
},
'.antenam.biz': ref('.antenam.info'),
'.antenam.jp': ref('.antenam.info'),
'.atna.jp': ref('.antenam.info'),
'.a-antenam.info': ref('.antenam.info'),
// 【声女】2ch声優速報まとめアンテナ
'voice.lady.jp': 'div.post > a + a',
// 声豚あんてな
'koebuta.net': 'div.pickup a',
// Girls Reader
'girlsreader.com': 'h2#single_h2 > a',
// クマーあんてな
'kuma-log.net': 'td.article a.rss',
// キチママまとめアンテナ
'a-matome.com': function() {
// urlencodeされている場合は未確認
var match = window.location.search.match(/\?RSS=\d\d\d\d-\d\d-\d\d([^&]+)/);
if (match)
byClass('a[href^="./re.php?URL=' + match[1] + '&"]');
},
// アンテナギフト(・∀・)
'antenna.gift': 'tr.targetItem a[id]',
// matomatome
'matomatome.com': ['ul#current a.topictitle', 'div.title a.ui-link'],
// アンテナシェア
// ターゲットが複数ある場合は飛ばないようにした
'www.antennash.com': [textContent(null, 'div.cmain a', targetStartsWithTitle),
descendantClass('a', 'span[style*="#1596C1;"]', true)],
// あんてなガッ!!
'antenna-ga.com': descendantClass('ul#new-repo-list a', 'strong'),
// ほのぼのライフあんてな
'lifech.2-d.jp': 'li.mainitem a',
// 家庭生活まとめのまとめ
'katei-matome.com': 'li.item a.featureEntry',
// 結婚生活 - NewsPod
'news-pod.net': descendantClass('div#commentlist a', 'span.name[style="color:#E33"]'),
// 2chnavi
'2chnavi.net': [textContent('div.content_header_title', 'a.entry_title', titleStartsWithTarget),
descendantTextContent('div.content_header .title_text', 'a.entrylistrow_body', 'div.entrylistrow_title', titleStartsWithTarget)],
// チラアンテナ(つд・ )
'2ch.anything-navi.net': descendantClass('a[target="_blank"]', 'font[color="RED"]'),
// つべこアンテナ
'twobeko.com': 'li.rss_light a',
// ガールズアンテナ
'girls-antena.2chblog.jp': 'a.Bp2ATitleKiji',
// readers.jp
'.readers.jp': ['.target_item a', descendantTextContent(null, 'a.ui-link-inherit', 'h3', titleStartsWithTarget)],
// 芸能ニュース2ch報道
'geinou2news.blog.fc2.com': [checkExists('div.entry_body div.t_b'),
checkExists('div.ently_body div.t_b'),
'div.entry_body a[target="_blank"]',
'div.ently_body a[target="_blank"]'],
// まとめあ
'matomea.net': descendantClass('a.rss_link', 'span.pickup'),
// ニュー速アンテナ
'newsoku.jp': descendantClass('ul#pickup-list a', 'span.red'),
// なんJまとめアンテナ
'.nantena.pw': '.mp-recommend-entry-1 .mp-entry-title a',
// *攻略まとめアンテナ
'.matomeplus.net': ref('.nantena.pw'),
// *まとめ攻略アンテナ
'.chantenna.net': ref('.nantena.pw'),
// 鬼嫁日記〜2ch生活まとめ〜
'oniyomediary.com': [checkExists('.article-body .t_b'),
descendantClass('div.article-body a', 'span[style^="color: rgb(255, 0, 0)"]')],
// センミリG(仮)
'1000mg.sblo.jp': textContent('h3 .title', 'div.text a'),
// にゅーすAtoZ
'netaatoz.blog21.fc2.com': 'div.selected a',
// VIPあんてな
'2ch-matome.net': ['div.entries a.title[style^="color:red"]',
'.entry_title a[style^="color:red"]'],
// 恋速~恋愛速報2chまとめ~
'koisoku.net': 'p.Itemtitle a',
// ぶろまと
'buromato.com': '#mainentry .entry_title a',
// にゃんてな!
'nyan.eggtree.net': function(){
var id = queryString('a');
if (id)
byClass('li.article[id="' + id + '"] a');
},
// いーあんてな(#゚w゚)
'ii-antenna.net': descendantClass('a.e', 'div.t[style="color:#F22;"]'),
// まとめアンテナα
'matome-alpha.com': ['.pickup_entry a',
'.entry_title_eid a[style^="color: rgb(255, 0, 0)"]',
'.entry_list a[style^="color: rgb(255, 0, 0)"]'],
// フットボール速報まとめ
'fxmtm.net': 'a.topic',
// メリーニュース
'merry-news.com': 'tr.active .feed_title a',
// クリップちゃんねる
'clipch.com': 'div.article-body div.source a',
// おもしろニュース
'aube0.com': 'div.Single div.Singlebody p.Itemtitle a',
// XNews
'xnews.jp': function() {
var target = queryNode('h1#main-topic + div#main-content-search');
if (target) {
target = target.querySelector('h1#main-content-search-title a');
if (target)
openLink(target.getAttribute('href'));
}
},
// NANJ of US
'nanj-of-us.main.jp': '.r_entry a',
// なんJまとめアンテナ
'nanj-matome.com': ['a.flink',
textContent(null, 'h3 a', titleEndsWithTarget)],
// YomYo
'yomyo.jp': function() {
if (!byClass('a.btn-app-dl', 'data-link'))
byClass('.blog--list.layout--highlight a');
},
// ちゃんねる365
'365dys.com': ['div.bar.link + table.article .title a',
'div.bar.link + table.article .entry a'],
// STANAVI
'sta-navi.net': [descendantClass('.rss_pc_td a', 'div.rss_pc_body[style="color:deeppink;"]'),
descendantClass('.rss_sp_td a', 'div.rss_sp_body[style="color:deeppink;"]')],
// もやしアンテナ
'moyashi.me': descendantClass('table.table a', 'font[color="#fc3939"]'),
// 2ちゃんマップ
// とりあえず最初のやつ
'sp.2chmap.com': 'ul#List a',
'2chmap.com': 'table.list a',
// 忍者あんてな(β)
'antenna.shinobi.jp': ['h2.showcase-title a',
descendantClass('.c-showcase a', '.showcase-title')],
// TREND NEWS24
'trend-pr.com': 'div.article > a',
// V速NEWS
'vipper774.blog115.fc2.com': 'li.selected a',
// 2chまとまと
'2ch-matomato.com': ['.layout--highlight a', '.blog--highlight a'],
// なんJまとめちゃんねる
'nanj.matome-ch.com': textContent(null, 'div.entry_title a', titleStartsWithTarget),
// なんJオールスターズ
'nanjallstars.net': [textContent(null, 'div.entry_title a', titleEndsWithTarget),
textContent(null, 'div.entry_title a', titleStartsWithTarget)],
// プロやきう・なんJまとめアンテナ
'nanj.an-matome.com': function() {
var rss = queryString('RSS');
if (rss && rss.length > 10) {
var url = decodeURIComponent(rss.substring(10));
if (byClass('a[href^="./re.php?URL=' + url + '"]') ||
byClass('a[href="' + url + '"]'))
return;
}
},
// もくぬふいんふぉ
'mh12.info': '#main .linkblockspe .rsslink a',
// キルjアンテナ
'killmej.com': '#pickup_area a',
// MeeTreeアンテナ
'mt-antenna.info': 'div.article_inner.pick a',
// THE BASEBALL
'thebaseball.xyz': '#tabs-1 ul li:first-child a',
// プロ野球アンテナ
'proyakyuantenna.com': ['a.article_each_1',
function() {
var targets = queryNodes('.article-wrap');
for (var i = 0, len = targets.length; i < len; i++) {
if (targets[i].querySelector('.article-access')) {
var match = targets[i].onclick.toString().match(/window\.open\('(.*)'\)/);
if (match)
return openLink(match[1]);
return false;
}
}
}],
// 棒読みあんてな
'bouyomi.jp': 'a[style="color:red"]',
// デジタルニュースミックス
'digital-mixnews.com': textContent('.article-title', '.pickup-news a',
function(target, title) {
return titleEndsWithTarget(target.replace(' ', ' '), title.replace(' ', ' '));
}),
// コネクツニュース
'news.cnects.net': '#news-main .btn a',
// アテナあんてな
'athena.sakuratan.com': '#hot_article .top a',
// DIGITAL-SOCCER.NET
'digital-soccer.net': 'a.news_title[style^="color:red"]',
// !ANTENNA?
'2chmatome-news.com': 'a#pickup',
// なんJ Headline
'nanjheadline.com': '#detail_title a',
// アルファルファモザイク
'alfalfalfa.com': descendantTextContent(null, 'a', 'span.sidebody', titleStartsWithTarget),
// やじうまあんてな
'yajiuma-antena.com': '.red a',
// オワタあんてな
'owt.io': '.post-content a',
// ○○的ニュースをお伝え(以下略
// (究極最終兵器2ndWeapon)
'kyuusai2nd.net': textContent(null, 'a[target="_blank"]', titleStartsWithTarget),
// カナ速
//'kanasoku.info': function() {
// if (!queryNode('div.body span.nnn'))
// byClass('div.body div.tt a');
//},
// まとめアンテナChaconne.
'rd.app-heaven.net': [descendantClass('#app_info a', '.btn-primary'),
'a.browserlink'],
// アプリNews24
'applinews24.com': ['.reco.addin > a',
'.item_title_pickup > a'],
// 2chまとめアンテナ
'.antenna-3.com': 'a[style="font-weight:700;color:#E27689"]',
// まとめの杜(壱)
'matomenomori.net': 'a#top_caption_a',
// ニュー速クオリティ@アンテナ
'newsquo.net': '.entry_title a[style="color:#ff0000;"]',
// everything is gone
'egone.org': textContent(null, 'div.nn a', titleStartsWithTarget),
// はぴやく
'hapiyaku.com': '.danger a',
// 憂国あんてな
'yuukoku.net': [descendantClass('a.ui-link-inherit', 'span.rl1'),
'.pickup a.hl_title1'],
// 異世界とらふぃっく!
'isekaitraffic.livedoor.biz' : 'a.Bp2ATitleKiji',
// ライフアプリアンテナ
'www.lifeappli-antenna.com': ['.articles-contents a.articles-contents-jumpbtn',
descendantClass('.articles-lists a', '.lists-text p.current'),
'.articles-contents .article-contents-title a',
function() {
[typeof(allowurl) == 'function' && String(allowurl),
typeof(openbtn) == 'function' && String(openbtn)].forEach(function (s) {
if (s) {
var re = /document\.getElementById\("target"\)\.href = '(.+)';/g;
var m;
while ((m = re.exec(s)))
if (openLink(m[1]))
return true;
}
});
}],
// 2chまとめのまとめMM
'www.2chmatome2.jp': ref('www.lifeappli-antenna.com'),
// いわしアンテナ >°))))彡
'iwashi.biz': descendantClass('.article a', 'font[style^="background-color:#FFCCCC"]'),
// ニュース$ミリオネア
'www.news1000000.com': '#archive_list a.archive_links.title_archive',
// ガッてな
'ga-t.net': ['.sparticle.red a', '.article.red a'],
// ひろぶろ
'www.hiroburo.com': '.article-body span[style="color: rgb(255, 0, 0);"]+a',
// にゅ~とろアンテナ
'newtroc.net': '#main-contents .antena-content .linkcontent a',
// 私女だけどw
'watashe.blog135.fc2.com': textContent(null, 'div.body a', titleStartsWithTarget),
// ヘミ猫あんてな
'hemine.co': '.selected .entry-title a',
// 良いサイト100選
'esite100.com': ['#mainentry a',
descendantClass('.entry_title_pic a', 'b[style="color:#ff0000;"]')],
// 今北広報
'imakita.cowhow.net': descendantClass('.entryTitle a', 'em'),
// プラズマアンテナ
'plasma-antenna.com': '#articles .feed_title a[style="color:red"]',
// にゅーぽす
'www.newposu.com': '.pickup-list .specify a',
// KIJYO ANTENA
'kijyo-antena.com': descendantClass('.title a', 'font[color="#ff0000"]'),
// 気団・鬼女ちゃんねる
'kdkjch.com': descendantClass('.entry_title_all a', 'p.pagetitle'),
// ダイエットあんてな
'dietantenna.net': ref('kdkjch.com'),
// /(^o^)\ナンテコッタイ
'nanteko.com': 'a.pickup_title',
// セピアンテナ
'sepian.org': '.single_box article a',
// アンテナっす
'antenasu.net': 'a[style="font-weight:700;color:#E27689"]',
// RS2 ANTENNA
'rss-seo.click': descendantClass('.single-post-detail > a', '.single-post-blanklink'),
// 海外アンテナ
'kaigai-antena.com': '.pick_line a',
// 2chまとめのまとめ
// よくわからないので転送ページだけを対象にする。
'2chmm.com/c': '.wrapper a.post',
// はんでろan
'handero.net': '.news-link.target a',
// ブルーアンテナ
'blue-a.org': descendantClass('.arrow_red a', 'span[style="color:#ff0000;"]'),
// まるごとアンテナ
'marugoto-antenna.com': [textContent(null, '.pickup a', titleStartsWithTarget),
descendantClass('nav a', 'font[color="red"]')],
// ポカーンあんてな
'poka-n.net': 'a.cc[style="font-size:24px;color:red;font-weight:bold;"]',
// vipick.net
'vipick.net': '.active .title a',
// NEWS CHANNEL
'news-channel.doorblog.jp': [descendantClass('.articles li a', 'span[style="color: red;"]'),
descendantClass('.articles li a', 'font[color="RED"]')],
// とらとどあんてな
'trtd.info': 'article .mainclass a',
// あんてなパン
'antennapan.info': '#article-title a.content-link',
// オズメーカー
'.ozmaker.net': ['.danger a', descendantClass('a.list-group-item', '.text-active')],
// びニュー!
'b-news.doorblog.jp': 'a.archive_links.title_red',
// ハニトラフニトラ
'honey-tiger.ldblog.jp': ['.cat-kiji-title a',
function() {
var qs = getParameters();
var c = qs.c, n = qs.n;
if (c && n)
byClass('.' + c + '.kiji_n-' + n + ' a');
}],
// まとめクロラ
'matome-crawler.com': descendantClass('li.entry', 'span[style^="color:#F33;"]'),
// しま速
'shimasoku.com': descendantClass('.contents a', 'span[style="color:red;"]'),
// まとめてニュース
'news-matome.com': '.notice_kiji_kobetu .kiji_title a',
// ツイキチ
'pun6.com': '#mainKiji a.kijiClickMain',
// アンテなう!
'antenow.com': 'h4.feedtb2 a',
// ぼくあんてな
'bokuantena.com': 'a#pickup',
// みてなアンテナ
'mitena.net': ['.entry-titlet a',
'.content.single .post .sequel a'],
// イイネット(・∀・)イイ!!
'ii-net-ii.com': 'a.pickupentry',
// カエル.me
'.kaeru.me': ['.title a[data-pickup]',
'li a[data-pickup]'],
// ナントカアンテナ
'.nantoka-antenna.com': descendantClass('a.entry_anchor', '.entry_title[style$="rgb(255, 204, 204);"]'),
// ギコにゅー(,,゚Д゚)
'blog.livedoor.jp/navippu': '.selected a',
// あるみら!
'arumira.com': textContent(function(){return documentTitle().replace(/^あるみら! - /, '');},
'.rss_category a', targetEndsWithTitle),
// ガヤるアンテナ( ・∀・)ノ
'gayaruantenna.com': '#mainentry a',
// J民あんてな
'nanjmin.net': ['.pickup a.hl_title1',
descendantClass('a.ui-link-inherit', 'span[style="color:red;"]')],
// キャノンアンテナ
'kanone.biz': ['.feed_pickup a.title_link',
'.feed_pickup a.rss_link'],
// ファンテナ
'.fantena.net': function() {
var match = window.location.pathname.match(/^\/(\d+)$/);
if (match)
byClass('a.rssid' + match[1]);
},
// 近頃のまとめブログ
'past2chmatome.blog55.fc2.com': textContent(null, '.e-text a', titleStartsWithTarget),
// クレイジーアンテナ
'pllp.info': [descendantClass('#headline_block a', 'font[color="red"]'),
descendantClass('a.ui-link-inherit', 'font[color="red"]')],
// まとめのあんてな
'newtopics.info': textContent(function(){return documentTitle().replace(/ \| まとめのあんてな$/, '');},
'.content_item_link a.link_a', titleEndsWithTarget),
// まとめにゅーアンテナ
'rankin9.com': function() {
var target = querySelector(nextElementSibling(parentNode(queryNode('.list_title_entry a.check'))), '.tuduki a');
return target && openLink(target.getAttribute('href'));
},
// にゅーす特報。
'news109.com': textContent(function(){return documentTitle().replace(' ', '');},
'.article-body a', titleStartsWithTarget),
// レッドアンテナ
'red-an.com': function() {
var u = queryString('u');
if (u)
openLink(reverse(decodeURIComponent(u)));
},
// GossipAntenna
'gossipantenna.com': textContent(null, 'a.content_title', titleStartsWithTarget),
// はぴきち
'hapikichi.com': '.danger a',
// indexmatome.com
'indexmatome.com': '#sort > ul > li > a[itemprop="url"]',
// NewsLog
'newslogfc2.blog.fc2.com': 'li.selected a',
// ぴっくんあんてな
'pikupikku.ldblog.jp': descendantClass('.title a', 'font.fbg1'),
// まとめのまとめニュース
'matomeofmatomes.net': textContent(null, 'a.newarticle', titleEndsWithTarget),
// (っ`ω´c) ふんがーアンテナ
'funger-antena.info': '.top_option .kiji_link a',
// World Best News
'world-best-news.doorblog.jp': descendantClass('.articles li a', 'font[color="RED"]'),
// あんらんアンテナ(@_@)
'www.en-ran.com': '.alert.alert-success a',
// *まとめアンテナ
'.antenna-2chan.info': [descendantClass('td a', 'font[color="#ff0000"]'),
descendantClass('a.ui-link-inherit', 'span[style="color:#ff0000;"]')],
// オタク男子アンテナ
'otadantenna.com': textContent(null, '.ant-content-title a'),
// はろてな(*^-^)/
'hello-2ch.net': '.hidden-xs a[style="color:red;"]',
// AKB NEWS 48
'an48.net': 'a.entry[style^="color:#F55;"]',
// Favo★にゅー
'news.favoch.com': '#main .active .feed_title a',
// 僕の私のまとめちゃんねる
'bokuwata-ch.com': descendantClass('a', '.specified'),
// アンテナch
// UAをPCにする
'antch.net': textContent(null, '.feed a', titleStartsWithTarget),
// オワタあんてな
'owata-net.com': '.active .title a',
'.owata-net.com': ref('owata-net.com'),
// 情報アンテナ
'.kachoufugetsu.info': '#mainentry .entry_title a',
// 異次元目
'ijigen.me': 'main article.cardinal > h1 > a',
// ムササビあんてな
'musasabiantenna.com': ['#mailpickup .entry_title_pic a',
'#mainentry .entry_title_pic a'],
// 高澤淳介アンテナ_(:3」∠)_
'www.2ch-a.net': 'strong a.title',
// 2chまとめラボ
'lab-matome.com': '#mainentry a',
// ラブライブ!速報
'lovesoku.com': ['li#select_rss a', 'li.select_rss a'],
// よろず屋さん
'yorozu-yasan.com': '.entry_title_link a[name="title"]+a',
// あんてなねっと
'antenna-site.net': '.archive a.kiji_link',
'smart.antenna-site.net': ref('antenna-site.net'),
// 二次元まとめアンテナ
'nijigen.antennanijigen.info': descendantClass('a[target="_blank"]', 'font[color="#ff0000"]'),
// Timely
'timely.blog.jp': 'a.Bp2ATitleKiji',
// Lily
'lily-app.net': '.article-title a',
// キチママアンテナ
'kitimama.net': function() {
var rss = queryString('rss');
if (rss)
openLink(decodeURIComponent(rss));
},
// ライフまとめアンテナ
'lifema.net': 'a.active',
// ウリエルあんてな
'2ch-matome.link': 'h2.main-title a',
// みーアンテナ(´∀`)
'2ch-mi.net': '#mainentry a',
// ウェブニュー@アンテナ
'webnew.blog.jp': 'a.Bp2ATitleKiji',
// 日本視覚文化研究会
'blog.livedoor.jp/akio_live1': [textContent('.article-header .article-title', '#article-contents a', targetEndsWithTitle),
textContent('h3.title', '.main a', targetEndsWithTitle)],
// 2chまとまと
'2ch-matomato.me': ['#article-main .btn a', '#news-main .btn a'],
// にゅ~Hub
'newhub.xyz': ['.feedzy-rss .rss_item2 .title a',
'.feedzy-rss .rss_item .title2 a'],
// すぽ~Hub
'spohub.xyz': ref('newhub.xyz'),
// ヲタHub
'otahub.xyz': ref('newhub.xyz'),
// やくHub
'yakuhub.xyz': ref('newhub.xyz'),
// キチHub
'kichihub.xyz': ref('newhub.xyz'),
// ごしっぷHub
'gossiphub.xyz': ref('newhub.xyz'),
// お借りしますお
'お借りしますお.xyz': ref('newhub.xyz'),
// 稼ぐちゃんねる
'稼ぐちゃんねる.xyz': ref('newhub.xyz'),
// おんがくあんてな
'musicantenna.wpblog.jp': ref('newhub.xyz'),
// まとめアンテナトレンドニュース
'watoson2.link': ref('newhub.xyz'),
// 芸能ニュースなび
'tqc00031.xyz': ref('newhub.xyz'),
// WANTENA
'wantena.net': '#top-blogroll-upper .left dd h3 a',
// なまものまとめ
'ikimonomatometyou.blog40.fc2.com': [textContent(null, '.ently_text a', titleStartsWithTarget),
textContent(null, '.entry_body a', titleStartsWithTarget)]
};
function toAction(action) {
if (!action)
return null;
var type = typeof action;
if (type == 'function')
return action;
if (type == 'string')
return function() {byClass(action);};
if (isArray(action))
return function() {
for (var i = 0, len = action.length; i < len; i++) {
var fn = toAction(action[i]);
if (fn && fn())
return true;
}
return false;
};
return null;
}
function getAction() {
var host = location.host;
var action = siteDefs[host];
var arr, i, len;
if (!action) {
arr = location.pathname.split('/');
for (i = 1, len = arr.length; i < len && !action; i++) {
host += '/' + arr[i];
action = siteDefs[host];
}
}
if (!action) {
host = '';
arr = location.host.split('.');
for (i = arr.length - 1; i >= 0 && !action; i--) {
host = '.' + arr[i] + host;
action = siteDefs[host];
}
}
return toAction(action);
}
function queryNode(selector) {
return document.querySelector(selector);
}
function queryNodes(selector) {
return document.querySelectorAll(selector);
}
function parentNode(e) {
return e && e.parentNode;
}
function nextElementSibling(e) {
if (!e)
return null;
if (e.nextElementSibling)
return e.nextElementSibling;
do
e = e.nextSibling;
while (e && e.nodeType !== 1);
return e;
}
function documentTitle() {
var title = queryNode('title');
return title ? title.textContent : '';
}
function querySelector(e, selector) {
return e && e.querySelector(selector);
}
function checkExists(selector) {
return function() {return queryNode(selector);};
}
function ref(site) {
return function() {
var action = toAction(siteDefs[site]);
return action && action();
};
}
// querystringを取得する。
function getParameters() {
var r = {};
var p = window.location.search.substring(1).split('&');
for (var i = 0; i < p.length; i++) {
var e = p[i].split('=');
r[e[0]] = e[1];
}
return r;
}
function queryString(name) {
return getParameters()[name];
}
function isArray(obj) {
return Object.prototype.toString.call(obj) === '[object Array]';
}
function reverse(s) {
return s.split('').reverse().join('');
}
var targetFound = false;
function openLink(target) {
if (!targetFound) {
if (!target || startsWith(target, 'https://play.google.com/') || startsWith(target, 'javascript' + ':'))
return false;
targetFound = true;
window.open(target, '_self').focus();
}
return true;
}
// ターゲットを直接特定できるサイト
function byClass(targetQuery, ref) {
var target = queryNode(targetQuery);
if (target)
return openLink(target.getAttribute(ref || 'href'));
return false;
}
// ターゲットの配列で特定できるサイト
function byClasses() {
for (var i = 0, len = arguments.length; i < len; i++)
if (byClass(arguments[i]))
return true;
return false;
}
function classes() {
var args = arguments;
return function() {return byClasses.apply(null, args);};
}
// ターゲットの子孫から特定できるサイト
function byDescendantClass(targetQuery, descendantQuery, singleOnly) {
var targets = queryNodes(targetQuery);
var found = null;
for (var i = 0, len = targets.length; i < len; i++)
if (targets[i].querySelector(descendantQuery)) {
if (singleOnly) {
if (found)
return false;
found = targets[i];
}
else if (openLink(targets[i].getAttribute('href')))
return true;
}
return found && openLink(found.getAttribute('href'));
}
function descendantClass(targetQuery, descendantQuery, singleOnly) {
return function() {return byDescendantClass(targetQuery, descendantQuery, singleOnly);};
}
function startsWith(str, prefix) {
return str.lastIndexOf(prefix, 0) === 0;
}
function endsWith(str, suffix) {
return str.indexOf(suffix, str.length - suffix.length) !== -1;
}
// titleがtarget+anyのとき
function titleStartsWithTarget(target, title) {
return startsWith(title, target);
}
// titleがany+targetのとき
function titleEndsWithTarget(target, title) {
return endsWith(title, target);
}
// targetがtitle+anyのとき
function targetStartsWithTitle(target, title) {
return startsWith(target, title);
}
// targetがany+titleのとき
function targetEndsWithTitle(target, title) {
return endsWith(target, title);
}
function initMatcher(matcher) {
return matcher ? matcher : function(target, title) {return target == title;};
}
// タイトルを取得する。
// titleQueryがfunction: 関数が返す文字列
// titleQueryがnull: ドキュメントのタイトル
// titleQueryがCSSセレクタ: セレクタに一致するノードの内容
function getTitle(titleQuery) {
var title;
if (typeof titleQuery == 'function')
title = titleQuery();
else {
title = queryNode(titleQuery || 'title');
if (!title)
return null;
title = title.textContent;
}
if (!title)
return null;
title = title.trim();
if (!title.length)
return null;
return title;
}
// ターゲットをタイトル文字列から特定できるサイト
function byTextContent(titleQuery, targetQuery, matcher) {
matcher = initMatcher(matcher);
var title = getTitle(titleQuery);
if (!title)
return false;
var targets = queryNodes(targetQuery);
for (var i = 0, len = targets.length; i < len; i++) {
var text = targets[i].getAttribute('title');
if (text && matcher(text.trim(), title) && openLink(targets[i].getAttribute('href')))
return true;
text = targets[i].textContent;
if (text && matcher(text.trim(), title) && openLink(targets[i].getAttribute('href')))
return true;
}
return false;
}
function textContent(titleQuery, targetQuery, matcher) {
return function() {return byTextContent(titleQuery, targetQuery, matcher);};
}
// ターゲットの子孫のテキストとタイトル文字列から特定できるサイト
function byDescendantTextContent(titleQuery, targetQuery, descendantQuery, matcher) {
matcher = initMatcher(matcher);
var title = getTitle(titleQuery);
if (!title)
return false;
var targets = queryNodes(targetQuery);
for (var i = 0, len = targets.length; i < len; i++) {
var descendant = targets[i].querySelector(descendantQuery);
if (descendant) {
var text = descendant.textContent;
if (text && matcher(text.trim(), title) && openLink(targets[i].getAttribute('href')))
return true;
}
}
return false;
}
function descendantTextContent(titleQuery, targetQuery, descendantQuery, matcher) {
return function() {return byDescendantTextContent(titleQuery, targetQuery, descendantQuery, matcher);};
}
// リンクをリプレースするサイト
function byReplaceHref(targetQuery, oldValue, newValue) {
var target = queryNode(targetQuery);
if (target)
return openLink(target.getAttribute('href').replace(oldValue, newValue));
return false;
}
// リンクの'/feed/'を'/feed-click/'にリプレースするサイト
function byReplaceFeedClick(targetQuery) {
return byReplaceHref(targetQuery, '/feed/', '/feed-click/');
}
function replaceFeedClick(targetQuery) {
return function() {return byReplaceFeedClick(targetQuery);};
}
var action = getAction();
if (action) {
var timeouts = [500, 1000, 2000];
for (var i = 0; i < timeouts.length; i++)
setTimeout(action, timeouts[i]);
}