peco --initial-indexオプション
percolに実装されていていた, --initial-indexオプションを@hirose31さんが
実装されたのでそれを使う例を適当に作成してみた.indexは percolと
同じ 0ベースです.
コード
#!/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