にたまごほうれん草アーカイブ

はてなダイアリーで書いてた「にたまごほうれん草」という日記のアーカイブです。現在は「にたまごほうれん草ブログ」を運営中です。

ニコニコ動画ダウンロードAPI:「この動画を登録しているマイリスト」取得機能

動画IDを指定して、その動画を登録しているマイリストの一覧を取得することができます。

nv = Nicovideo.new(account['mail'], account['password']) # Nicovideoオブジェクトの生成
openlist = nv.openlist(video_id)  # OpenListオブジェクトの取得

1ページで取得可能なマイリストの最大個数は10個なので、全てを取得したい場合は以下のnextメソッドなどを使ってループにより順次取得するようにします。

メソッド

  • mylists:マイリストを配列で返します(最大10個)
  • total_size:登録マイリスト総数を返します
  • has_next?:次のマイリストがあるかどうかを返します(boolean)
  • has_prev?:前のマイリストがあるかどうかを返します(boolean)
  • next:次のマイリスト10個を取得します
  • prev:前のマイリスト10個を取得します
  • pagenum=:指定したページのマイリストを取得します

サンプル

引数に動画のIDを指定して、その動画を登録しているマイリストを全て表示します。

#! /usr/bin/env ruby -Ku
require 'rubygems'
require 'nicovideo'
require 'yaml'

exit if ARGV.size != 1
video_id = ARGV.shift

account = YAML.load_file(ENV['HOME'] + '/.nicovideo/account.yml')
nv = Nicovideo.new(account['mail'], account['password']).login

ol = nv.openlist(video_id)
if ol.total_size > 0
  while (true)
    ol.mylists.each {|ml|
      puts ml.title + ':' + ml.url
    }
    break unless ol.has_next?

    sleep 1
    ol.next
  end
end

そしてマイリストからまた動画IDをとってきて…とループすればマイリストや掘り出し物動画がざっくざく?!