豆瓣备份

备粮、备荒

// ==UserScript==
// @icon            https://img3.doubanio.com/favicon.ico
// @name            豆瓣备份
// @namespace      https://www.douban.com/people/57965364/
// @author          57965364
// @description     备粮、备荒
// @match           https://*.douban.com/*
// @version         0.0.1
// @require https://greasyfork.org/scripts/387261-douban-photo-lib/code/douban_photo_Lib.js?version=715521
// @require https://unpkg.com/dexie@latest/dist/dexie.js
// @require https://greasyfork.org/scripts/387262-douban-note-lib/code/douban_note_Lib.js?version=715522
// @require https://greasyfork.org/scripts/387124-filesaver-lib/code/FileSaver_Lib.js?version=715484
// @require https://greasyfork.org/scripts/387126-html-docx-lib/code/html_docx_Lib.js?version=714522
// @require https://greasyfork.org/scripts/387267-douban-book-lib/code/douban_book_Lib.js?version=715562
// @require https://greasyfork.org/scripts/387268-douban-movie-lib/code/douban_movie_Lib.js?version=715564
// @require https://greasyfork.org/scripts/387271-douban-music-lib/code/douban_music_Lib.js?version=715570
// @grant           GM_addStyle
// @grant        GM_download
// @grant        GM_xmlhttpRequest
// ==/UserScript==
(function () {
	'use strict';

	var ul = document.getElementsByClassName('global-nav-items')[0].getElementsByTagName("ul")[0];
	var newli = document.createElement('li');

	var mLink = document.createElement('a');
	mLink.setAttribute('target', '_blank');
	mLink.setAttribute('class', 'bn-more');
	mLink.setAttribute('rel', 'off');
	var mSpan1 = document.createElement('span');
	var text1 = document.createTextNode("备份");
	mSpan1.appendChild(text1);
	var mSpan2 = document.createElement('span');
	mSpan2.setAttribute('class', 'arrow');
	mLink.appendChild(mSpan1);
	mLink.appendChild(mSpan2);
	newli.appendChild(mLink);

	var mDiv = document.createElement('div');
	mDiv.setAttribute("class", "more-items");
	var mtable = document.createElement('table');
	mtable.setAttribute("cellpadding", "0");
	mtable.setAttribute("cellspacing", "0");
	mtable.setAttribute("id", "backup_table");
	var mtbody = document.createElement("tbody");
	var mTitles = ['日记', '照片', '读书', '电影', '音乐'];
	for (var i = 0; i < mTitles.length; i++) {
		var R = document.createElement("tr");
		R.setAttribute("id", i);
		var C = document.createElement("td");
		var tempATag = document.createElement('a');
		tempATag.appendChild(document.createTextNode(mTitles[i]));
		tempATag.style.color = '#3d3d3d';
		C.appendChild(tempATag);
		R.appendChild(C);
		mtbody.appendChild(R);
	}
	mtable.appendChild(mtbody);
	mDiv.appendChild(mtable);
	newli.appendChild(mDiv);

	ul.appendChild(newli);

	addRowHandlers();

	function addRowHandlers() {
		var table = document.getElementById("backup_table");
		var rows = table.getElementsByTagName("tr");
		for (i = 0; i < rows.length; i++) {
			var currentRow = table.rows[i];
			var createClickHandler = function (row) {
				return function () {
					var id = row.getAttribute("id");
					console.log(unsafeWindow._GLOBAL_NAV.USER_ID);
					if (unsafeWindow._GLOBAL_NAV.USER_ID != null) {
						if (id == 0) {
							if (window.location.host.startsWith("www.douban.com")) {
								downloadNotes(unsafeWindow._GLOBAL_NAV.USER_ID, saveAs, htmlDocx);
							} else {
								alert("去www.douban.com下载");
							}
						} else if (id == 1) {
							if (window.location.host.startsWith("www.douban.com")) {
								const db = new Dexie("豆瓣相册详情");
								db.version(1).stores({
									items: `++id, album, pid, date, desc`
								});
								downloadPhotos(unsafeWindow._GLOBAL_NAV.USER_ID, db);
							} else {
								alert("去www.douban.com下载");
							}
						} else if (id == 2) {
							if (window.location.host.startsWith("book.douban.com")) {
								const db_read_collection = new Dexie("豆瓣读书(已读)");
								db_read_collection.version(1).stores({
									items: `++id, title, pub, rating, date, tags, link, comment`
								});
								const db_read_wish = new Dexie("豆瓣读书(想读");
								db_read_wish.version(1).stores({
									items: `++id, title, pub, rating, date, tags, link, comment`
								});
								const db_read_do = new Dexie("豆瓣读书(在读)");
								db_read_do.version(1).stores({
									items: `++id, title, pub, rating, date, tags, link, comment`
								});
								downloadBooks(unsafeWindow._GLOBAL_NAV.USER_ID, db_read_collection,
									db_read_wish, db_read_do, saveAs, htmlDocx);
							} else {
								alert("去book.douban.com下载");
							}
						} else if (id == 3) {
							if (window.location.host.startsWith("movie.douban.com")) {
								const db_movie_collection = new Dexie("豆瓣电影(看过)");
								db_movie_collection.version(1).stores({
									items: `++id, title, intro, rating, date, tags, link, comment`
								});
								const db_movie_wish = new Dexie("豆瓣电影(想看)");
								db_movie_wish.version(1).stores({
									items: `++id, title, intro, rating, date, tags, link, comment`
								});
								const db_movie_do = new Dexie("豆瓣电影(在读)");
								db_movie_do.version(1).stores({
									items: `++id, title, intro, rating, date, tags, link, comment`
								});
								downloadMovie(unsafeWindow._GLOBAL_NAV.USER_ID, db_movie_collection,
									db_movie_wish, db_movie_do, saveAs, htmlDocx);
							} else {
								alert("movie.douban.com下载");
							}
						} else if (id == 4) {
							if (window.location.host.startsWith("music.douban.com")) {
								const db_music_collection = new Dexie("豆瓣音乐(已听)");
								db_music_collection.version(1).stores({
									items: `++id, title, intro, rating, date, tags, link,comment`
								});
								const db_music_wish = new Dexie("豆瓣音乐(想听)");
								db_music_wish.version(1).stores({
									items: `++id, title, intro, rating, date, tags, link, comment`
								});
								const db_music_do = new Dexie("豆瓣音乐(在听)");
								db_music_do.version(1).stores({
									items: `++id, title, intro, rating, date, tags, link, comment`
								});
								downloadMusic(unsafeWindow._GLOBAL_NAV.USER_ID, db_music_collection,
									db_music_wish, db_music_do, saveAs, htmlDocx);
							} else {
								alert("music.douban.com下载");
							}
						}
					} else {
						alert("麻烦先登陆一下");
					}
				};
			};
			currentRow.onclick = createClickHandler(currentRow);
		}
	}

})();