Skip to content

Instantly share code, notes, and snippets.

@whatalnk
Last active October 30, 2018 12:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save whatalnk/9bd98fb7e1f3a334aa1ef5b75f9d6c72 to your computer and use it in GitHub Desktop.
Save whatalnk/9bd98fb7e1f3a334aa1ef5b75f9d6c72 to your computer and use it in GitHub Desktop.
Media Marker -> bookforward
# Media Marker から Bookforward へ
library("dplyr")
library("stringr")
library("lubridate")
library("readr")
library("conflicted")
conflicted::conflict_scout()
mediamarker <- read_csv(
"MediaMarkerExport_utf8.csv",
col_types = "?????????c????????????????")
# ## Bookforward
# * ISBN-10: ISBN
# * ISBN-13: ISBN
# * 入庫: 1 (入力不要と書かれているが,1にしないとインポートだけされて入庫されない)
# * 既読: `if_else(is.na(読了日), 0, 1)`
# * 所有: 1,
# * 読む予定: 0
# * 購入予定: 0
# * 今読んでる: `if_else(状態 == "読中", 1, 0)`
# * 電子書籍: 0
# * 新刊通知: 0
# * 評価: 0
# * レビュー: 0
# * タグ: タグを "\_\_" 区切りに変換
# * しおり: 0
# * 入庫日: 購入日
# * 変更日: 更新日(反映されずにインポート日時になるらしい)
# * 読了日: 読了日
# * タイトル: タイトル
# * 著者: 著者(スキップされる?)
mediamarker %>%
dplyr::filter(`カテゴリ` %in% c("キンドル", "本・雑誌", "洋書")) %>%
mutate(`入庫` = 1L,
`所有` = 1L,
`読む予定` = 0L,
`購入予定` = 0L,
`電子書籍` = NA_integer_,
`新刊通知` = 0L,
`評価` = 0L,
`レビュー` = NA_character_,
`しおり` = 0L,
`タグ` = str_trim(タグ),
`登録日` = parse_date_time(`登録日`, orders="Ymd HMS"),
`更新日` = parse_date_time(`更新日`, orders="Ymd HMS")
) %>%
select(ISBN_JAN = `ISBN/JAN`,
ASIN = `ASIN(アマゾン商品コード)`,
`入庫`, `所有`, `読む予定`,
`購入予定`, `状態`, `電子書籍`,
`新刊通知`, `評価`, `レビュー`, `タグ`, `しおり`,
`登録日`, `更新日`, `購入日`, `読了日`,
`タイトル`, `著者`, `公開・非公開`) %>%
mutate(`ISBN-10` = if_else(is.na(ISBN_JAN), ASIN, ISBN_JAN),
`既読` = if_else(is.na(読了日), 0L, 1L),
`今読んでる` = if_else(状態 == "読中", 1L, 0L),
`タグ` = str_replace_all(タグ, "\n", "__"),
`登録日` = format(`登録日`, "%Y/%m/%d"),
`変更日` = format(`更新日`, "%Y/%m/%d"),
`購入日` = format(`購入日`, "%Y/%m/%d"),
`読了日` = format(`読了日`, "%Y/%m/%d")) %>%
mutate(
`入庫日` = if_else(is.na(`購入日`), `登録日`, `購入日`),
`ISBN-13` = `ISBN-10`
) %>%
dplyr::filter(`公開・非公開` %in% c(0, NA)) %>%
select(`ISBN-10`, `ISBN-13`,
`入庫`, `既読`, `所有`,
`読む予定`, `購入予定`, `今読んでる`,
`電子書籍`, `新刊通知`,
`評価`, `レビュー`,
`タグ`, `しおり`,
`入庫日`,`変更日`,`読了日`,
`タイトル`, `著者`) -> bookforward
# ID あり なし
bookforward %>%
dplyr::filter(is.na(`ISBN-10`)) -> bookforward.no_isbn
bookforward %>%
dplyr::filter(!is.na(`ISBN-10`)) -> bookforward.with_isbn
# 雑誌除く
bookforward.with_isbn %>%
dplyr::filter(grepl("雑誌", `タグ`)) -> bookforward.with_isbn.journal
bookforward.with_isbn %>%
dplyr::filter(!grepl("雑誌", `タグ`)) -> bookforward.with_isbn.notjournal
# 書き出し
bookforward.with_isbn.notjournal %>%
write.csv(file = "bookforward.csv", na="", fileEncoding = "sjis", row.names = FALSE)
## 全件だと 504 だったので100件ずつに分割
bookforward.with_isbn.notjournal %>%
mutate(idx = (row_number() -1) %/% 100) %>%
nest(-idx) %>%
pwalk(.f=function(idx, data){
write.csv(data, file=str_glue("bookforward_{idx}.csv"), na="", fileEncoding="sjis", row.names=FALSE)
})
bookforward.with_isbn.journal %>%
write.csv(file = "bookforward_with_isbn_journal.csv", na="", fileEncoding = "sjis", row.names = FALSE)
bookforward.no_isbn %>%
write.csv(file = "bookforward_no_isbn.csv", na="", fileEncoding = "sjis", row.names = FALSE)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment