Greasy Fork

SkipAntennaSite

アンテナサイトがうざい

目前为 2016-01-28 提交的版本。查看 最新版本

// ==UserScript==
// @name        SkipAntennaSite
// @namespace   https://greasyfork.org/ja/scripts/16465-skipantennasite
// @description アンテナサイトがうざい
// @version     1.2
// @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://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://vipsister.blog72.fc2.com/*
// @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://afoafodayo.blog84.fc2.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://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://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://baseball.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://geinou.nantena.pw/*
// @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://rd.app-heaven.net/mm.php*
// @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://applinews24.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/*
// ==/UserScript==

var siteDefs = {
  // しぃアンテナ(*゚ー゚)
  '2ch-c.net': ['a.et_title',
                textContent(null, 'table.entry a')],

  // 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'],
  // にゅーもふ
  '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);
  },

  // best trend news
  'besttrendnews.net': ['div.entry[data-type="catchy"] a',
                        'div.select a'],

  // 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',

  //newschoice
  'news-choice.net': function() {
    var l = queryString('l');
    if (l && byClass('a[href="' + decodeURIComponent(l) + '"]'))
      return;
    byClasses('#article [data-type="catchy"] a',
              '.pickuptitle a');
  },

  // 2次元と3次元の画像ブログまとめ
  'img.favsite.jp': descendantClass('div a.stp', 'h2'),

  // わくてか
  'wk-tk.net': '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;

    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('.active a');
  },

  // のーアンテナ
  '2ch-n.net': '.active .feed_title a',

  // なんか憑かれた速報
  'nantuka.blog119.fc2.com': textContent('h3 > a', 'div.article a'),

  // ライフあんてな
  'lifeantenna.com': '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('.article .title_link a');
  },

  // j-antenna
  'www.j-antenna.com': 'a.pickup_entry_title',

  // とろたまヘッドライン
  'headline.mtfj.net': 'td.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"]',

  // ニュース星3つ!
  'news-three-stars.net': ['div[data-type="catchy"] a.entry-title', 'div[data-type="catchy"] .entry-title a', 'div.select a'],

  // まとめたった速報www
  'matometatta-news.net': ['div[data-type="catchy"] a.entry-title', 'div[data-type="catchy"] .entry-title a', 'div.pickuplink.title a'],

  // NEWS SELECT
  'news-select.net': 'li.selected a',

  // harikonotora
  'rss.harikonotora.net': textContent(null, 'div.headline a.kizi'),

  // にゅーすなう!
  'vipsister.blog72.fc2.com': 'div.selected a',
  // にゅーすなう!
  'newsnow-2ch.com': '#article [data-type="catchy"] a.entry-title',

  // 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',

  // アフォニュース
  'afoafodayo.blog84.fc2.com': 'div.selecttitle a',

  // アフォニュース
  'afo-news.com': ['#article [data-type="catchy"] .entry-title a',
                   '#article [data-type="catchy"] a.entry-title'],

  // マトメナ
  '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"]'),
                              'div.article-body-inner > a:last-child'],

  // エ・ロックオン
  'blogtsurugi.blog38.fc2.com': 'div.postmain a[title]',

  // この●●クソワロタwww
  'konowaro.net': function() {
    var l = queryString('l');
    if (l && byClass('a[href="' + decodeURIComponent(l) + '"]'))
      return;
    if (!byClass('#article [data-type="catchy"] a')
        && !byTextContent('div.title h2 a', 'div.selected a', targetStartsWithTitle))
      byClass('div.selected a');
  },

  // ギコあんてな
  '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': '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'),

  // 声優アンテナ~二次元まとめ~(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 match = window.location.pathname.match(/\/items\/view\/(\d+)/);
    if (match)
      byClass('a[href^="/items/click/' + match[1] + '"]');
  },
  '.antenam.biz': ref('.antenam.info'),
  '.antenam.jp': ref('.antenam.info'),
  '.atna.jp': 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)],

  // ウェブニュー
  'webnew.net': ['#article [data-type="catchy"] .tablecell-title a',
                 '#article [data-type="catchy"] .entry-title a',
                 '#article [data-type="catchy"] a.entry-title',
                 'p.link_item.active a'],

  // アンテナバンク
  'antennabank.com': '#article [data-type="catchy"] a.entry-title',

  // 芸能ニュース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'),

  // プロ野球速報
  'baseball.nantena.pw': 'div.mp-recommend-entry-1 a',

  // 鬼嫁日記〜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');
  },

  // 芸能ニュースヘッドライン
  'geinou.nantena.pw': 'div.mp-recommend-entry-1 div.mp-entry-title 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)"]'],

  // フットボール速報まとめ
  '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)],

  // まとめアプリChaconneシャコンヌ
  'rd.app-heaven.net': 'a.browserlink',

  // 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',

  // 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': 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;
      }
    }
  },

  // アプリNews24
  'applinews24.com': '.item_title_pickup > a',

  // 棒読みあんてな
  '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', 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'),

  // アプリNews24
  'applinews24.com': '.reco.addin > a',

  // 2chまとめアンテナ
  '.antenna-3.com': 'a[style="font-weight:700;color:#E27689"]',

  // 2chまとめのまとめアンテナ
  '2ch-mma.com': '#article [data-type="catchy"] a.entry-title',

  // まとめの杜(壱)
  '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': [descendantClass('.articles-lists a', '.lists-text p.current'),
                                '.articles-contents .article-contents-title a'],

  // いわしアンテナ >°))))彡
  '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'
};

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];

  if (!action) {
    var arr = location.pathname.split('/');
    for (var i = 1, len = arr.length; i < len && !action; i++) {
      host += '/' + arr[i];
      action = siteDefs[host];
    }
  }

  if (!action) {
    host = '';
    var arr = location.host.split('.');
    for (var 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 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('');
}

function openLink(target) {
  if (!target)
    return false;
  window.open(target, '_self').focus();
  //window.location.replace(target);
  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 if (titleQuery) {
    title = queryNode(titleQuery);
    if (!title)
      return null;
    title = title.textContent;
  }
  else
    title = document.title;

  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, 500, 1000];
  for (var i = 0; i < timeouts.length; i++)
    setTimeout(action, timeouts[i]);
}