Google रीडर डेटा की बचत

Google रीडर की समापन तिथि जितनी अधिक होगी, उतना ही जरूरी है कि सदस्यता को न केवल एक समान सेवा में स्थानांतरित किया जाए, बल्कि कई अन्य रिकॉर्ड भी सहेजे जाएं।

हब ( यहां और यहां ) सहित उन समाधानों को मुख्य रूप से दो कारणों से फिट नहीं किया गया: डेटाबेस को बचाने और धीमी गति का कोई तरीका नहीं है। मुझे अपनी बाइक - ग्रैचअप को असेंबल करना था, जो कि
grbackup -e fake@gmail.com -p password -ba -o mongodb://localhost:27017 -w 20 

20 मिनट में स्थानीय मानगोडीबी डेटाबेस में 102 सदस्यता से 328250 रिकॉर्ड बचाए।

मुख्य विशेषताएं:


उपलब्ध प्रकार के स्टोरेज एक्सटेंशन (प्लगइन्स) द्वारा निर्धारित किए जाते हैं और प्रकार के ( -o, --output ) विकल्प का उपयोग करके सेट किए जाते हैं : uri प्रकार
लेखन के समय, निम्नलिखित एक्सटेंशन उपलब्ध हैं:

उबंटू (64) और विन 7 (64) पर परीक्षण किया गया।
सुझावों और टिप्पणियों की एक पुस्तक यहां पाई जा सकती है
नीचे उपयोगिता का विस्तृत वर्णन है।

स्थापना

 pip install grbackup 

या
 easy_install grbackup 

या
 pip install git+git://github.com/wistful/grbackup.git 

कमांड लाइन विकल्प

प्राधिकरण

grbackup दो कार्यों का समर्थन करता है:

एक कार्रवाई चार डेटा प्रकारों में से एक पर की जा सकती है:

अतिरिक्त विकल्प:

सभी विकल्प, साथ ही प्लगइन्स का वर्णन, -h, --help विकल्प का उपयोग करके देखा जा सकता है:
 grbackup -h 

पिछले आदेश का उत्पादन
 Usage: grbackup [options] [args] Examples: list subscriptions: grbackup -e email@gmail.com -p password -ls list topics: grbackup -e email@gmail.com -p password -lt http://feed.com list starred: grbackup -e email@gmail.com -p password -lx list all items: grbackup -e email@gmail.com -p password -la backup subscriptions: grbackup -e email@gmail.com -p password -bs -o json:/tmp/subscriptions.json backup topics: grbackup -e email@gmail.com -p password -bt http://myfeed.com -o json:/tmp/myfeed.json backup starred into MongoDB: grbackup -e email@gmail.com -p password -bx -o mongodb://localhost:27017 backup all items into Redis: grbackup -e email@gmail.com -p password -ba -o redis://localhost:6379/3 Available plugins: mongodb: save items into MongoDB output scheme: mongodb://[username:password@]hostN[:portN]]][/[db][?opts]] output examples: mongodb://localhost:27017 mongodb://user:pwd@localhost,localhost:27018/?replicaSet=grbackup json: save items into file output scheme: json:/path/to/file.json output examples: json:/home/grbackup/grbackup.json json:/tmp/grbackup/grbackup.json redis: save items into Redis output scheme: redis://username:password@host[:port]/dbindex output examples: redis://localhost:6379/3 redis://user:password@localhost:6379/0 Options: Auth Options: -e EMAIL, --email=EMAIL gmail account -p PWD, --password=PWD account password Command Options: -b, --backup backup items -l, --list list items Scope Options: -a, --all processing all items -s, --subscriptions processing subscriptions only -t, --topics processing topics only -x, --starred processing starred topics only MongoDB Options: --mongodb-db=MONGODB_DB the name of the database[default: greader] --mongodb-scol=MONGODB_SUBSCRIPTIONS collection name for subscriptions[default: subscriptions] --mongodb-tcol=MONGODB_TOPICS collection name for topics[default: topics] --mongodb-tstar=MONGODB_STARRED collection name for starred items[default: starred] --mongodb-w=MONGODB_W <int> Write operations will block until they have been replicated to the specified number [default: 1] --mongodb-j block until write operations have been committed to the journal [default: False] Redis Options: --redis-scol-prefix=REDIS_SUBS subscriptions key prefix[default: subscription] --redis-tcol-prefix=REDIS_TOPICS topics key prefix[default: topic] --redis-xcol-prefix=REDIS_STARRED starred key prefix[default: starred] Other Options: -w WORKERS, --workers=WORKERS number of workers [default: 1] -o OUTPUT, --output=OUTPUT output uri -n COUNT, --count=COUNT the number of topics that can be read at once [default: 200] -c CODING, --coding=CODING output coding [default: utf8] -v, --verbose verbose output -h, --help 


के उपयोग

सदस्यता की सूची:
 grbackup -e email@gmail.com -p password -ls 

विशिष्ट सदस्यता के लिए प्रविष्टियों की सूची:
  grbackup -e email@gmail.com -p password -lt http://habrahabr.ru/rss/hub/python/ 

सभी चिह्नित प्रविष्टियों की सूची:
 grbackup -e email@gmail.com -p password -lx 

सभी प्रविष्टियों की सूची:
 grbackup -e email@gmail.com -p password -la 

फ़ाइल को सदस्यता के लिए बचत:
  grbackup -e email@gmail.com -p password -bs -o json:/tmp/subscriptions.json 

किसी विशिष्ट सदस्यता के सभी रिकॉर्ड्स को एक जोंस फाइल में सहेजना:
 grbackup -e email@gmail.com -p password -bt http://habrahabr.ru/rss/hub/python/ -o json:/tmp/python.json 

MongoDB में सभी चिह्नित प्रविष्टियों को सहेजना:
 grbackup -e email@gmail.com -p password -bx -o mongodb://localhost:27017 

20 धागे का उपयोग करते हुए रेडिस में सभी रिकॉर्ड की बचत:
 grbackup -e email@gmail.com -p password -ba -o redis://localhost:6379/3 -w 20 

प्लग-इन

JSON

सामान्य यूआरआई प्रारूप: json: /path/to/file.json
बहुपरत समर्थन: हाँ
उपयोग उदाहरण:
 grbackup -e email@gmail.com -p password -ba -o json:/home/grbackup/grbackup.json 

वस्तुओं की सूची के रूप में प्रविष्टियाँ एक अलग फ़ाइल में सहेजी जाती हैं।
तीन प्रकार की वस्तुएँ हैं:


MongoDB

सामान्य URI प्रारूप: mongodb: // [उपयोगकर्ता नाम: पासवर्ड @] hostN [: portN]]] [/ [db] [! Opts]?
बहुपरत समर्थन: हाँ
उपयोग उदाहरण:
 grbackup -e email@gmail.com -p password -ba -o mongodb://localhost:27017 -w 20 

प्रविष्टियाँ तीन संग्रह में रखी गई हैं: सदस्यता , विषय , तारांकित
संग्रह के नाम बदले जा सकते हैं।

Redis

सामान्य URI प्रारूप: redis: // उपयोगकर्ता नाम: पासवर्ड @ होस्ट [: port] / dbindex
बहुपरत समर्थन: हाँ
उपयोग उदाहरण:
 grbackup -e email@gmail.com -p password -ba -o redis://user:password@localhost:6379/0 -w 20 

रिकॉर्ड के भंडारण के लिए हैश डेटा प्रकार का उपयोग किया जाता है
कुंजियाँ तीन प्रकार की हो सकती हैं: "सदस्यता: record_id" , "तारांकित: record_id" , "विषय: record_id" , जहाँ record_id रिकॉर्ड के लिए एक विशिष्ट पहचानकर्ता है।
प्रमुख उपसर्गों को बदला जा सकता है।

खुद का प्लगइन

मॉड्यूल को grb_plugins पैकेज में होना चाहिए, मॉड्यूल का नाम मायने नहीं रखता।
मॉड्यूल संरचना:

फ़ाइल में रिकॉर्ड सहेजने के लिए लॉगिंग का उपयोग करके उदाहरण प्लगइन
 #!/usr/bin/env python # coding=utf-8 from optparse import OptionGroup import logging plugin_type = "myplugin" support_threads = True description = """save items using logging output scheme: myplugin:/path/to/logfile.log output examples: myplugin:/tmp/storage.log """ def add_option_group(parser): # Plugin Options myplugin_group = OptionGroup(parser, "myplugin Options") myplugin_group.add_option("--myplugin-format", dest="format", type="str", default="%(asctime)s %(message)s", help="record format" "[default: %default]") myplugin_group.add_option("--myplugin-datefmt", dest="datefmt", type="str", default="%m/%d/%Y %I:%M:%S %p", help="date format" "[default: %default]") parser.add_option_group(myplugin_group) class WriteMyPlugin(object): def __init__(self, logger): self.logger = logger def put_subscription(self, subscription): subscription_url = subscription['id'][5:] self.logger.warning("write subscription: %s", subscription_url) def put_all(self, subscription, topic): subscription_url = subscription['id'][5:] self.put_subscription(subscription) self.put_topic(subscription_url, topic) def put_starred(self, topic): self.logger.warning("write starred: %s", topic.get('title', '')) def put_topic(self, subscription_url, topic): self.logger.warning("write topic: %s %s", subscription_url, topic.get('title', '')) class writer(object): def __init__(self, opt): path = opt.output[opt.output.index(":") + 1:] self._logger = logging.getLogger("myplugin") handler = logging.FileHandler(path) handler.setFormatter(logging.Formatter(opt.format, opt.datefmt)) self._logger.addHandler(handler) def __enter__(self): return WriteMyPlugin(self._logger) def __exit__(self, *exc_info): pass 

Source: https://habr.com/ru/post/In182712/


All Articles