banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix Auto backup Chrome bookmark  XML
  [Article]   Auto backup Chrome bookmark 27/03/2013 09:48:38 (+0700) | #1 | 274432
[Avatar]
Ikut3
Elite Member

[Minus]    0    [Plus]
Joined: 24/09/2007 23:47:03
Messages: 1429
Location: Nhà hát lớn
Offline
[Profile] [PM] [Yahoo!]
Hi

Mình làm việc với trình duyệt web suốt ngày nên file Bookmark cũng ngày một tăng to.
Vấn đề là sau khi chuyển qua Chrome thì file BookMark của Chrome đi theo 1 chuẩn riêng, không còn là HTML ở dạng thô như FireFox nữa. Nên Mình nghĩ ít nhiều mọi người sẽ thấy phiền toái khi suốt ngày chăm chăm đi lo backup bằng cách Export to HTML.

Giải pháp này sẽ giải quyết tất cả những vấn đề này bằng 1 cách hoàn toàn tự động.

1. Ở Linux, file bookmark của Chrome được lưu tại đường dẫn

Code:
/home/[username]/.config/google-chrome/Default/


Tại đường dẫn này bạn sẽ thấy 1 file BookMark & BookMark.Bak. Ok! Quên cái file BookMark.Bak đi

2. Xử lí cái BookMark hiện tại ra HTML file thông qua code python của bdesham
Code:
#!/usr/bin/python

# py-chrome-bookmarks
# 
# A script to convert Google Chrome's bookmarks file to the standard HTML-ish
# format.
#
# (c) Benjamin Esham, 2011.  See the accompanying README for this file's
# license and other information.

import json, sys, os, re

script_version = "1.1"

# html escaping code from http://wiki.python.org/moin/EscapingHtml

html_escape_table = {
	"&": "&",
	'"': """,
	"'": "'",
	">": ">",
	"<": "<",
	}

def html_escape(text):
	return ''.join(html_escape_table.get(c,c) for c in text)

def sanitize(string):
	res = ''
	string = html_escape(string)

	for i in range(len(string)):
		if ord(string[i]) > 127:
			res += '&#x%x;' % ord(string[i])
		else:
			res += string[i]

	return res

def html_for_node(node):
	if 'url' in node:
		return html_for_url_node(node)
	elif 'children' in node:
		return html_for_parent_node(node)
	else:
		return ''

def html_for_url_node(node):
	if not re.match("javascript:", node['url']):
		return '<dt><a href="%s">%s</a>\n' % (sanitize(node['url']), sanitize(node['name']))
	else:
		return ''

def html_for_parent_node(node):
	return '<dt><h3>%s</h3>\n<dl><p>%s</dl><p>\n' % (sanitize(node['name']),
			''.join([html_for_node(n) for n in node['children']]))

def version_text():
	old_out = sys.stdout
	sys.stdout = sys.stderr

	print "py-chrome-bookmarks", script_version
	print "(c) 2011, Benjamin Esham"
	print "https://github.com/bdesham/py-chrome-bookmarks"

	sys.stdout = old_out

def help_text():
	version_text()

	old_out = sys.stdout
	sys.stdout = sys.stderr

	print
	print "usage: python py-chrome-bookmarks input-file output-file"
	print "  input-file is the Chrome bookmarks file"
	print "  output-file is the destination for the generated HTML bookmarks file"

	sys.stdout = old_out

# check for help or version requests

if "-v" in sys.argv or "--version" in sys.argv:
	version_text()
	exit()

if len(sys.argv) != 3 or "-h" in sys.argv or "--help" in sys.argv:
	help_text()
	exit()

# the actual code here...

in_file = os.path.expanduser(sys.argv[1])
out_file = os.path.expanduser(sys.argv[2])

try:
	f = open(in_file, 'r')
except IOError, e:
	print >> sys.stderr, "py-chrome-bookmarks: error opening the input file."
	print >> sys.stderr, e
	exit()

j = json.loads(f.read())
f.close()

try:
	out = open(out_file, 'w')
except IOError, e:
	print >> sys.stderr, "py-chrome-bookmarks: error opening the output file."
	print >> sys.stderr, e
	exit()

out.write("""<!DOCTYPE NETSCAPE-Bookmark-file-1>

<meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />
<title>Bookmarks</title>
<h1>Bookmarks</h1>

<dl><p>

<dl>%(bookmark_bar)s</dl>

<dl>%(other)s</dl>
"""
	% {'bookmark_bar': html_for_node(j['roots']['bookmark_bar']),
		'other': html_for_node(j['roots']['other'])})

out.close()


3. Cách sử dụng

Code:
python convert.py Bookmarks /home/user/Dropbox/Bookmarks20132703.html


convert.py là tên của mã nguồn Python do mình tự phịa
4.Script hoá toàn bộ

Code:
#!/bin/bash
date=`date +%F-%H-%M-%S`
/usr/bin/python /home/user/convert.py /home/user/.config/google-chrome/Default/ /home/user/Dropbox/bookmarks-$date.html


5.Crontab

Code:
0-59 * * * * sh /home/user/backupbookmarks.sh


Finish!

@Bài viết tham khảo cách viết script của anh QuanTa :-D
[Up] [Print Copy]
  [Article]   Auto backup Chrome bookmark 31/03/2013 10:16:25 (+0700) | #2 | 274549
stuki
Member

[Minus]    0    [Plus]
Joined: 20/10/2008 23:24:39
Messages: 24
Offline
[Profile] [PM]
Cho em hỏi chút xíu ở bước 5 - đặt Crontab

Code:
0-59 * * * * sh /home/user/backupbookmarks.sh


Có nghĩa là sẽ chạy Script 1 phút 1 lần hả anh ? Backup vậy tần suất hơi cao không anh ?

Cám ơn.
[Up] [Print Copy]
  [Article]   Auto backup Chrome bookmark 05/04/2013 11:09:57 (+0700) | #3 | 274707
datkhmt
Member

[Minus]    0    [Plus]
Joined: 13/05/2010 02:06:44
Messages: 19
Offline
[Profile] [PM]
Backup bằng chrome sao anh ko dùng gmail, log vào thì nó tự lưu cả history cùng nhiều thứ khắc nữa mà
[Up] [Print Copy]
  [Article]   Auto backup Chrome bookmark 07/04/2013 00:04:53 (+0700) | #4 | 274749
[Avatar]
dexxa
Member

[Minus]    0    [Plus]
Joined: 01/07/2006 20:35:01
Messages: 121
Offline
[Profile] [PM]
Chắc ông bạn tôi bị bệnh nghề nghiệp nên muốn stealth tất cả những thông tin của mình đối với các dịch Vụ và tiện ích của google. Thử nghĩ xem Google có phân tích tất cả những thông tin bookmark của người dùng ko. Và làm vậy thì họ dc gì ? Nó có ảnh hưởng thế nào với tính privacy của cá nhân người dùng smilie
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|