peco --initial-indexオプション

percolに実装されていていた, --initial-indexオプションを@さんが
実装されたのでそれを使う例を適当に作成してみた.indexは percolと
同じ 0ベースです.

コード

次のような rubyスクリプトを書く

#!/usr/bin/env ruby

require 'open-uri'
require 'nokogiri'
require 'uri'

rank = ARGV.shift
if rank.nil?
  abort "Usage: #{$0} rank"
end

index = ((rank.to_i - 1) / 20) + 1
url = "http://www.dmm.co.jp/digital/videoa/-/ranking/=/term=monthly/type=actress/page=#{index}/"

doc = Nokogiri::HTML(open(url))
doc.css('td.bd-b').each do |e|
  r = e.css('span.rank').text
  page = e.css('a')[0].attr('href')
  name = e.css('div.data > p > a').text
  printf "%3d: %s\0https://www.dmm.co.jp%s\n", r, name, page
end


以下のようなシェルスクリプトを書く.

#!/bin/sh

set -e

rank=$1
if [ "_$rank" = "_" ]; then
    echo "Usage: $0 rank"
    exit 1
fi

open_command=
noinput_option=
os=$(uname)
if [ "_$os" = "_Darwin" ]; then
    open_command=open
else
    open_command=xdg-open
    noinput_option=-r
fi

peco_index=$(( ($rank % 20 == 0) ? 19 : (($rank % 20) - 1) ))
\dmm-actress-ranking.rb ${rank} | \peco --null --initial-index=${peco_index} | \xargs $noinput_option $open_command

実行

引数で指定した場所に初期位置を置くことができます. ついでに --nullオプションで
URLを付与して, 指定した女優のページをブラウザで開くことができます.