# Bookmeter Scraper [![Build Status](https://travis-ci.org/kymmt90/bookmeter_scraper.svg?branch=master)](https://travis-ci.org/kymmt90/bookmeter_scraper) [![Gem Version](https://badge.fury.io/rb/bookmeter_scraper.svg)](https://badge.fury.io/rb/bookmeter_scraper) A library for scraping [Bookmeter](http://bookmeter.com). Japanese README is [here](https://github.com/kymmt90/bookmeter_scraper/blob/master/README.ja.md). ## Installation Add this line to your application's Gemfile: ```ruby gem 'bookmeter_scraper' ``` And then execute: $ bundle Or install it yourself as: $ gem install bookmeter_scraper ## Usage Add this line to your code before using this library: ```ruby require 'bookmeter_scraper' ``` ### Log in You need to log in Bookmeter to get books and followings / followers information by `Bookmeter.log_in` or `Bookmeter#log_in`. There are 3 ways to input authentication information: 1. Passing as arguments 2. Writing out to `config.yml` 3. Configuring in a block #### 1. Passing as arguments You can log in Bookmeter by passing mail address and password to `Bookmeter.log_in`: ```ruby bookmeter = BookmeterScraper::Bookmeter.log_in('example@example.com', 'your_password') bookmeter.logged_in? # true ``` `Bookmeter#log_in` is also available: ```ruby bookmeter = BookmeterScraper::Bookmeter.new bookmeter.log_in('example@example.com', 'password') ``` #### 2. Writing out to `config.yml` Create `config.yml` as followings and save it to the same directory as your Ruby script: ```yml mail: example@example.com password: your_password ``` Now you can log in Bookmeter by calling `Bookmeter.log_in` or `Bookmeter#log_in` with no arguments: ```ruby bookmeter = BookmeterScraper::Bookmeter.log_in bookmeter.logged_in? # true ``` #### 3. Configuring in a block You can configure mail address and password in a block. ```ruby bookmeter = BookmeterScraper::Bookmeter.log_in do |configuration| configuration.mail = 'example@example.com' configuration.password = 'password' end bookmeter.logged_in? # true ``` `Bookmeter#log_in` is also available: ```ruby bookmeter = BookmeterScraper::Bookmeter.new bookmeter.log_in do |configuration| configuration.mail = 'example@example.com' configuration.password = 'password' end ``` ### Get books information You can get books information: - read books - reading books - tsundoku (stockpile) - wish list You need to log in Bookmeter in advance to get these information. #### Read books You can get read books information by `Bookmeter#read_books`: ```ruby books = bookmeter.read_books # get read books of the logged in user bookmeter.read_books('01010101') # get read books of a user specified by ID ``` Books infomation is an array of `Book` which has these attributes: - `name` - `read_dates` - `uri` - `image_uri` `read_dates` is an array of finished reading dates (first finished date and reread dates): ```ruby books[0].name books[0].read_dates books[0].uri books[0].image_uri ``` To specify year-month for read books, you can use `Bookmeter#read_books_in`: ```ruby books = bookmeter.read_books_in(2016, 1) # get read books of the logged in user in 2016-01 books = bookmeter.read_books_in(2016, 1, '01010101') # get read books of a user in 2016-01 ``` #### Reading books / Tsundoku / Wish list You can get other books information: - `Bookmeter#reading_books` - `Bookmeter#tsundoku` - `Bookmeter#wish_list` ```ruby books = bookmeter.reading_books books[0].name books[0].read_dates # this array is empty bookmeter.tsundoku bookmeter.wish_list ``` ### Get followings users / followers information You can get following users (followings) and followers information by `Bookmeter#followings` and `Bookmeter#followers`: ```ruby following_users = bookmeter.followings followers = bookmeter.followers ``` You need to log in Bookmeter in advance to get these information. Users information is an array of `Struct` which has following attributes: - `name` - `id` - `uri` ```ruby following_users[0].name following_users[0].id following_users[0].uri followers[0].name followers[0].id followers[0].uri ``` #### Notice **`Bookmeter#followings` and `Bookmeter#followers` have not supported paginated followings / followers pages yet.** ### Get user profile You can get a user profile by `Bookmeter#profile`: ```ruby bookmeter = BookmeterScraper::Bookmeter.new user_id = '000000' profile = bookmeter.profile(user_id) # You can specify arbitrary user ID ``` You do not need to log in to get user profiles. Profile information is `Struct` which has these attributes: ```ruby profile.name profile.gender profile.age profile.blood_type profile.job profile.address profile.url profile.description profile.first_day profile.elapsed_days profile.read_books_count profile.read_pages_count profile.reviews_count profile.bookshelfs_count ``` ## Contributing Bug reports and pull requests are welcome on GitHub at https://github.com/kymmt90/bookmeter_scraper. ## License The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).