मैं अजगर में आईबुक में एक एपब अपलोडर बनाने की कोशिश कर रहा हूं। पुस्तक की जानकारी निकालने के लिए मुझे एक पायथन lib की आवश्यकता है। अपने आप को इसे लागू करने से पहले मुझे आश्चर्य है कि अगर कोई पहले से ही बनाई गई पाइथन lib को जानता है तो यह करता है।पायथन लाइब्रेरी 'एपब' जानकारी निकालने के लिए
उत्तर
एक .epub फ़ाइल एक ज़िप-एन्कोडेड फ़ाइल है जिसमें मेटा-आईएनएफ निर्देशिका है, जिसमें कंटेनर.एक्सएमएल नाम की एक फ़ाइल है, जो आमतौर पर Content.opf नामक दूसरी फ़ाइल को इंगित करती है, जो अन्य सभी फ़ाइलों को अनुक्रमणित करती है जो ई-बुक (सारांश http://www.jedisaber.com/eBooks/tutorial.asp पर आधारित; http://www.idpf.org/2007/opf/opf2.0/download/ पर पूर्ण spec)
निम्न पायथन कोड मूल रूप से एक .epub फ़ाइल से मेटा-जानकारी निकाल देगा और इसे एक dict के रूप में वापस कर देगा।
import zipfile
from lxml import etree
def get_epub_info(fname):
ns = {
'n':'urn:oasis:names:tc:opendocument:xmlns:container',
'pkg':'http://www.idpf.org/2007/opf',
'dc':'http://purl.org/dc/elements/1.1/'
}
# prepare to read from the .epub file
zip = zipfile.ZipFile(fname)
# find the contents metafile
txt = zip.read('META-INF/container.xml')
tree = etree.fromstring(txt)
cfname = tree.xpath('n:rootfiles/n:rootfile/@full-path',namespaces=ns)[0]
# grab the metadata block from the contents metafile
cf = zip.read(cfname)
tree = etree.fromstring(cf)
p = tree.xpath('/pkg:package/pkg:metadata',namespaces=ns)[0]
# repackage the data
res = {}
for s in ['title','language','creator','date','identifier']:
res[s] = p.xpath('dc:%s/text()'%(s),namespaces=ns)[0]
return res
नमूना उत्पादन:
{
'date': '2009-12-26T17:03:31',
'identifier': '25f96ff0-7004-4bb0-b1f2-d511ca4b2756',
'creator': 'John Grisham',
'language': 'UND',
'title': 'Ford County'
}
उदाहरण के लिए epub-tools जैसा कुछ है? लेकिन यह लगभग epub
प्रारूप (विभिन्न संभावित स्रोतों से) के बारे में है, जैसा कि epubtools (समान वर्तनी, विभिन्न परियोजना) है। पढ़ने के लिए, मैं साथी परियोजना threepress, ब्राउज़र पर एपब किताबें दिखाने के लिए एक Django ऐप आज़माउंगा - उस कोड को नहीं देखा है, लेकिन मुझे कल्पना है कि पुस्तक को दिखाने के लिए यह निश्चित रूप से पहले होना चाहिए इसे पढ़ने में सक्षम ;-)।
एपब-टूल्स और एपबेटोल्स एपब जनरेटर प्रतीत होते हैं। – xiamx
@xiamx, हाँ, "ज्यादातर लिखने के बारे में" जैसा कि मैंने कहा - तो, क्या आपने थ्रेसप्रेस कोड की कोशिश की है? –
बाहर epub module चेक। यह एक आसान विकल्प की तरह दिखता है।
मैं कुछ इसी तरह की तलाश करने के बाद यहां घायल हुआ और श्री बोथवेल के कोड स्निपेट द्वारा अपनी परियोजना शुरू करने के लिए प्रेरित था। यदि कोई दिलचस्पी लेता है ... http://epubzilla.odeegan.com/
काफी उपयोगी आप लिंक करते हैं – embert
मैं इस प्रश्न को खोलने के लिए मतदान कर रहा हूं, क्योंकि ऐसा लगता है कि पूछने के समय, आवश्यक कार्यक्षमता को लागू करने के लिए कोई पुस्तकालय नहीं था, और मुझे लगता है कि स्वीकृत उत्तर में मूल्यवान कोड है । –
टिप्पणी आपके लिए नहीं है, लेकिन लोगों के लिए सवाल बंद करने के लिए मतदान करने के लिए। उत्तर को अस्वीकार करने का कोई कारण नहीं है, खासकर जब यह आपकी समस्या का समाधान करता है। –
समापन का मतलब हटाना नहीं है, उत्तर केवल लिंक को ही आकर्षित कर रहा है और शायद भविष्य में स्पैम को आकर्षित कर रहा है। – bummi