mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Merge from trunk
This commit is contained in:
commit
014d9300a8
11
recipes/derin_dusunce.recipe
Normal file
11
recipes/derin_dusunce.recipe
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
|
class BasicUserRecipe1324913694(BasicNewsRecipe):
|
||||||
|
title = u'Derin Dusunce'
|
||||||
|
language = 'tr'
|
||||||
|
__author__ = 'asalet_r'
|
||||||
|
oldest_article = 7
|
||||||
|
max_articles_per_feed = 20
|
||||||
|
auto_cleanup = True
|
||||||
|
|
||||||
|
feeds = [(u'Derin D\xfc\u015f\xfcnce', u'http://www.derindusunce.org/feed/')]
|
12
recipes/dunya_bizim.recipe
Normal file
12
recipes/dunya_bizim.recipe
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
|
class BasicUserRecipe1324736687(BasicNewsRecipe):
|
||||||
|
title = u'D\xfcnya Bizim'
|
||||||
|
language = 'tr'
|
||||||
|
__author__ = 'asalet_r'
|
||||||
|
|
||||||
|
oldest_article = 7
|
||||||
|
max_articles_per_feed = 10
|
||||||
|
auto_cleanup = True
|
||||||
|
|
||||||
|
feeds = [(u'Aktif \u0130mamlar', u'http://dunyabizim.com/servisler/rss.php?kategoriID=31'), (u'Ayr\u0131nt\u0131 Defteri', u'http://dunyabizim.com/servisler/rss.php?kategoriID=58'), (u'Baba Kitaplar', u'http://dunyabizim.com/servisler/rss.php?kategoriID=4'), (u'Bu da Oldu', u'http://dunyabizim.com/servisler/rss.php?kategoriID=32'), (u'\xc7-al\u0131nt\u0131 Yaz\u0131lar', u'http://dunyabizim.com/servisler/rss.php?kategoriID=33'), (u'Dar\xfclmedya', u'http://dunyabizim.com/servisler/rss.php?kategoriID=49'), (u'Gidenler', u'http://dunyabizim.com/servisler/rss.php?kategoriID=59'), (u'G\xfczel Mekanlar', u'http://dunyabizim.com/servisler/rss.php?kategoriID=43'), (u'\u0130yi Haberler', u'http://dunyabizim.com/servisler/rss.php?kategoriID=18'), (u'\u0130yi M\xfczikler', u'http://dunyabizim.com/servisler/rss.php?kategoriID=2'), (u'Kalite Dergiler', u'http://dunyabizim.com/servisler/rss.php?kategoriID=3'), (u'Konu\u015fa Konu\u015fa', u'http://dunyabizim.com/servisler/rss.php?kategoriID=24'), (u'M\xfcstesta G\xfczeller', u'http://dunyabizim.com/servisler/rss.php?kategoriID=65'), (u'O \u015eimdi Nerede?', u'http://dunyabizim.com/servisler/rss.php?kategoriID=52'), (u'Olsa Ke\u015fke', u'http://dunyabizim.com/servisler/rss.php?kategoriID=34'), (u'Orada Ne Oldu?', u'http://dunyabizim.com/servisler/rss.php?kategoriID=38'), (u'\xd6nemli Adamlar', u'http://dunyabizim.com/servisler/rss.php?kategoriID=1'), (u'Polemik', u'http://dunyabizim.com/servisler/rss.php?kategoriID=39'), (u'Sinema', u'http://dunyabizim.com/servisler/rss.php?kategoriID=23'), (u'Yalan Haber', u'http://dunyabizim.com/servisler/rss.php?kategoriID=40'), (u'Yeni \u015eeyler', u'http://dunyabizim.com/servisler/rss.php?kategoriID=57'), (u'Zekeriya Sofras\u0131', u'http://dunyabizim.com/servisler/rss.php?kategoriID=60')]
|
12
recipes/dunya_bulteni.recipe
Normal file
12
recipes/dunya_bulteni.recipe
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
|
class BasicUserRecipe1321194347(BasicNewsRecipe):
|
||||||
|
title = u'D\xfcnya B\xfclteni'
|
||||||
|
language = 'tr'
|
||||||
|
__author__ = 'asalet_r'
|
||||||
|
|
||||||
|
oldest_article = 7
|
||||||
|
max_articles_per_feed = 50
|
||||||
|
auto_cleanup = True
|
||||||
|
|
||||||
|
feeds = [(u'Tarih Dosyas\u0131', u'http://www.dunyabulteni.net/servisler/rss.php?kategoriID=157'), (u'R\xf6portaj', u'http://www.dunyabulteni.net/servisler/rss.php?kategoriID=153'), (u'Makale-Yorum', u'http://www.dunyabulteni.net/servisler/rss.php?kategoriID=174'), (u'K\xfclt\xfcr-Sanat', u'http://www.dunyabulteni.net/servisler/rss.php?kategoriID=66'), (u'Hayat\u0131n \u0130\xe7inden', u'http://www.dunyabulteni.net/servisler/rss.php?kategoriID=200'), (u'Haber Analiz', u'http://www.dunyabulteni.net/servisler/rss.php?kategoriID=123'), (u'Gezi-\u0130zlenim', u'http://www.dunyabulteni.net/servisler/rss.php?kategoriID=90'), (u'Aile Sa\u011fl\u0131k E\u011fitim', u'http://www.dunyabulteni.net/servisler/rss.php?kategoriID=75')]
|
11
recipes/haksoz.recipe
Normal file
11
recipes/haksoz.recipe
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
|
class BasicUserRecipe1324739199(BasicNewsRecipe):
|
||||||
|
title = u'Haks\xf6z'
|
||||||
|
oldest_article = 7
|
||||||
|
max_articles_per_feed = 20
|
||||||
|
auto_cleanup = True
|
||||||
|
language = 'tr'
|
||||||
|
__author__ = 'asalet_r'
|
||||||
|
|
||||||
|
feeds = [(u'Haks\xf6z', u'http://www.haksozhaber.net/rss/')]
|
12
recipes/iktibas.recipe
Normal file
12
recipes/iktibas.recipe
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
|
class BasicUserRecipe1324739406(BasicNewsRecipe):
|
||||||
|
title = u'\u0130ktibas'
|
||||||
|
language = 'tr'
|
||||||
|
__author__ = 'asalet_r'
|
||||||
|
|
||||||
|
oldest_article = 7
|
||||||
|
max_articles_per_feed = 20
|
||||||
|
auto_cleanup = True
|
||||||
|
|
||||||
|
feeds = [(u'\u0130ktibas', u'http://www.iktibasdergisi.com/rss/rss.xml')]
|
12
recipes/izdiham.com.recipe
Normal file
12
recipes/izdiham.com.recipe
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
|
class BasicUserRecipe1324158549(BasicNewsRecipe):
|
||||||
|
title = u'izdiham.com'
|
||||||
|
language = 'tr'
|
||||||
|
__author__ = 'asalet_r'
|
||||||
|
|
||||||
|
oldest_article = 7
|
||||||
|
max_articles_per_feed = 20
|
||||||
|
auto_cleanup = True
|
||||||
|
|
||||||
|
feeds = [(u'\u0130zdiham', u'http://www.izdiham.com/index.php/feed')]
|
14
recipes/lega_nerd.recipe
Normal file
14
recipes/lega_nerd.recipe
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
|
class AdvancedUserRecipe1326135232(BasicNewsRecipe):
|
||||||
|
title = u'Lega Nerd'
|
||||||
|
description = 'nerd / geek culture, pc, comics, music, culture'
|
||||||
|
language = 'it'
|
||||||
|
oldest_article = 7
|
||||||
|
max_articles_per_feed = 100
|
||||||
|
auto_cleanup = True
|
||||||
|
|
||||||
|
feeds = [(u'Lega Nerd', u'http://feeds.feedburner.com/LegaNerd')]
|
||||||
|
__author__ = 'faber1971'
|
||||||
|
__version__ = 'v1.0'
|
||||||
|
__date__ = '9, January 2011'
|
@ -13,7 +13,7 @@ class Moscowtimes(BasicNewsRecipe):
|
|||||||
category = 'Russia, Moscow, Russian news, Moscow news, Russian newspaper, daily news, independent news, reliable news, USSR, Soviet Union, CIS, Russian politics, Russian business, Russian culture, Russian opinion, St Petersburg, Saint Petersburg'
|
category = 'Russia, Moscow, Russian news, Moscow news, Russian newspaper, daily news, independent news, reliable news, USSR, Soviet Union, CIS, Russian politics, Russian business, Russian culture, Russian opinion, St Petersburg, Saint Petersburg'
|
||||||
publisher = 'The Moscow Times'
|
publisher = 'The Moscow Times'
|
||||||
language = 'en'
|
language = 'en'
|
||||||
oldest_article = 4
|
oldest_article = 2
|
||||||
max_articles_per_feed = 100
|
max_articles_per_feed = 100
|
||||||
no_stylesheets = True
|
no_stylesheets = True
|
||||||
use_embedded_content = False
|
use_embedded_content = False
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
## Copyright: Kiavash
|
## Copyright: Kiavash
|
||||||
##
|
##
|
||||||
## Written: Jan 2012
|
## Written: Jan 2012
|
||||||
## Last Edited: 2012-01-07
|
## Last Edited: Jan 2012
|
||||||
##
|
##
|
||||||
|
|
||||||
__license__ = 'GNU General Public License v3 - http://www.gnu.org/copyleft/gpl.html'
|
__license__ = 'GNU General Public License v3 - http://www.gnu.org/copyleft/gpl.html'
|
||||||
@ -20,12 +20,14 @@ You need to sign up (free) and get username/password.
|
|||||||
|
|
||||||
import re # Import the regular expressions module.
|
import re # Import the regular expressions module.
|
||||||
from calibre.ptempfile import TemporaryFile # we need this for saving to a temp file
|
from calibre.ptempfile import TemporaryFile # we need this for saving to a temp file
|
||||||
|
|
||||||
from calibre.web.feeds.news import BasicNewsRecipe
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
class MWJournal(BasicNewsRecipe):
|
class MWJournal(BasicNewsRecipe):
|
||||||
# Title to use for the ebook.
|
# Title to use for the ebook.
|
||||||
title = u'Microwave Journal'
|
title = u'Microwave Journal'
|
||||||
__author__ = 'Kiavash'
|
__author__ = 'Kiavash'
|
||||||
|
language = 'en'
|
||||||
|
|
||||||
#A brief description for the ebook.
|
#A brief description for the ebook.
|
||||||
description = u'Microwave Journal web site ebook created using rss feeds.'
|
description = u'Microwave Journal web site ebook created using rss feeds.'
|
||||||
@ -33,7 +35,6 @@ class MWJournal(BasicNewsRecipe):
|
|||||||
# Set publisher and publication type.
|
# Set publisher and publication type.
|
||||||
publisher = 'Horizon House'
|
publisher = 'Horizon House'
|
||||||
publication_type = 'magazine'
|
publication_type = 'magazine'
|
||||||
language = 'en'
|
|
||||||
|
|
||||||
oldest_article = 31 # monthly published magazine. Some months are 31 days!
|
oldest_article = 31 # monthly published magazine. Some months are 31 days!
|
||||||
max_articles_per_feed = 100
|
max_articles_per_feed = 100
|
||||||
@ -44,43 +45,50 @@ class MWJournal(BasicNewsRecipe):
|
|||||||
no_stylesheets = True
|
no_stylesheets = True
|
||||||
remove_javascript = True
|
remove_javascript = True
|
||||||
|
|
||||||
|
asciiize = True # Converts all none ascii characters to their ascii equivalents
|
||||||
|
|
||||||
needs_subscription = True # oh yeah... we need to login btw.
|
needs_subscription = True # oh yeah... we need to login btw.
|
||||||
|
|
||||||
# Timeout for fetching files from the server in seconds. The default of 120 seconds, seems somewhat excessive.
|
# Timeout for fetching files from the server in seconds. The default of 120 seconds, seems somewhat excessive.
|
||||||
timeout = 30
|
timeout = 30
|
||||||
|
|
||||||
# Specify extra CSS - overrides ALL other CSS (IE. Added last).
|
# Specify extra CSS - overrides ALL other CSS (IE. Added last).
|
||||||
|
|
||||||
extra_css = 'body { font-family: verdana, helvetica, sans-serif; } \
|
extra_css = 'body { font-family: verdana, helvetica, sans-serif; } \
|
||||||
.introduction, .first { font-weight: bold; } \
|
.introduction, .first { font-weight: bold; } \
|
||||||
.cross-head { font-weight: bold; font-size: 125%; } \
|
.cross-head { font-weight: bold; font-size: 125%; } \
|
||||||
.cap, .caption { display: block; font-size: 80%; font-style: italic; } \
|
.cap, .caption { display: block; font-size: 80%; font-style: italic; } \
|
||||||
.cap, .caption, .caption img, .caption span { display: block; text-align: center; margin: 5px auto; } \
|
.cap, .caption, .caption img, .caption span { display: block; margin: 5px auto; } \
|
||||||
.byl, .byd, .byline img, .byline-name, .byline-title, .author-name, .author-position, \
|
.byl, .byd, .byline img, .byline-name, .byline-title, .author-name, .author-position, \
|
||||||
.correspondent-portrait img, .byline-lead-in, .name, .bbc-role { display: block; \
|
.correspondent-portrait img, .byline-lead-in, .name, .bbc-role { display: block; \
|
||||||
text-align: center; font-size: 80%; font-style: italic; margin: 1px auto; } \
|
font-size: 80%; font-style: italic; margin: 1px auto; } \
|
||||||
.story-date, .published { font-size: 80%; } \
|
.story-date, .published { font-size: 80%; } \
|
||||||
table { width: 100%; } \
|
table { width: 100%; } \
|
||||||
td img { display: block; margin: 5px auto; } \
|
td img { display: block; margin: 5px auto; } \
|
||||||
ul { padding-top: 10px; } \
|
ul { padding-top: 10px; } \
|
||||||
ol { padding-top: 10px; } \
|
ol { padding-top: 10px; } \
|
||||||
li { padding-top: 5px; padding-bottom: 5px; } \
|
li { padding-top: 5px; padding-bottom: 5px; } \
|
||||||
h1 { text-align: center; font-size: 175%; font-weight: bold; } \
|
h1 { font-size: 175%; font-weight: bold; } \
|
||||||
h2 { text-align: center; font-size: 150%; font-weight: bold; } \
|
h2 { font-size: 150%; font-weight: bold; } \
|
||||||
h3 { text-align: center; font-size: 125%; font-weight: bold; } \
|
h3 { font-size: 125%; font-weight: bold; } \
|
||||||
h4, h5, h6 { text-align: center; font-size: 100%; font-weight: bold; }'
|
h4, h5, h6 { font-size: 100%; font-weight: bold; }'
|
||||||
|
|
||||||
remove_tags = [
|
remove_tags = [
|
||||||
dict(name='div', attrs={'class':'boxadzonearea350'}), # Removes banner ads
|
dict(name='div', attrs={'class':'boxadzonearea350'}), # Removes banner ads
|
||||||
dict(name='font', attrs={'class':'footer'}), # remove fonts if you do like your fonts more! Comment out to use website's fonts
|
dict(name='font', attrs={'class':'footer'}), # remove fonts if you do like your fonts more! Comment out to use website's fonts
|
||||||
|
dict(name='div', attrs={'class':'newsarticlead'})
|
||||||
]
|
]
|
||||||
|
|
||||||
# Remove various tag attributes to improve the look of the ebook pages.
|
# Remove various tag attributes to improve the look of the ebook pages.
|
||||||
remove_attributes = [ 'border', 'cellspacing', 'align', 'cellpadding', 'colspan',
|
remove_attributes = [ 'border', 'cellspacing', 'align', 'cellpadding', 'colspan',
|
||||||
'valign', 'vspace', 'hspace', 'alt', 'width', 'height' ]
|
'valign', 'vspace', 'hspace', 'alt', 'width', 'height' ]
|
||||||
|
|
||||||
# Remove the line breaks,
|
# Remove the line breaks as well as href links. Books don't have links generally speaking
|
||||||
preprocess_regexps = [(re.compile(r'<br[ ]*/>', re.IGNORECASE), lambda m: ''),
|
preprocess_regexps = [(re.compile(r'<br[ ]*/>', re.IGNORECASE), lambda m: ''),
|
||||||
(re.compile(r'<br[ ]*clear.*/>', re.IGNORECASE), lambda m: '')]
|
(re.compile(r'<br[ ]*clear.*/>', re.IGNORECASE), lambda m: ''),
|
||||||
|
(re.compile(r'<a.*?>'), lambda h1: ''),
|
||||||
|
(re.compile(r'</a>'), lambda h2: '')
|
||||||
|
]
|
||||||
|
|
||||||
# Select the feeds that you are interested.
|
# Select the feeds that you are interested.
|
||||||
feeds = [
|
feeds = [
|
||||||
@ -104,11 +112,12 @@ class MWJournal(BasicNewsRecipe):
|
|||||||
return cover_url
|
return cover_url
|
||||||
|
|
||||||
def print_version(self, url):
|
def print_version(self, url):
|
||||||
'''
|
if url.find('/Journal/article.asp?HH_ID=') >= 0:
|
||||||
this function uses the print version of the article. Replaces the URL with its print version and fetch that page instead.
|
return self.browser.open_novisit(url).geturl().replace('/Journal/article.asp?HH_ID=', '/Journal/Print.asp?Id=')
|
||||||
'''
|
elif url.find('/News/article.asp?HH_ID=') >= 0:
|
||||||
return url.replace('http://mwjournal.com/Journal/article.asp?HH_ID=', 'http://mwjournal.com/Journal/Print.asp?Id=')
|
return self.browser.open_novisit(url).geturl().replace('/News/article.asp?HH_ID=', '/Journal/Print.asp?Id=')
|
||||||
|
elif url.find('/Resources/TechLib.asp?HH_ID=') >= 0:
|
||||||
|
return self.browser.open_novisit(url).geturl().replace('/Resources/TechLib.asp?HH_ID=', '/Resources/PrintRessource.asp?Id=')
|
||||||
|
|
||||||
def get_browser(self):
|
def get_browser(self):
|
||||||
'''
|
'''
|
||||||
|
14
recipes/pambianco.recipe
Normal file
14
recipes/pambianco.recipe
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
|
class AdvancedUserRecipe1326135591(BasicNewsRecipe):
|
||||||
|
title = u'Pambianco'
|
||||||
|
description = 'fashion magazine for professional people'
|
||||||
|
language = 'it'
|
||||||
|
oldest_article = 7
|
||||||
|
max_articles_per_feed = 100
|
||||||
|
auto_cleanup = True
|
||||||
|
|
||||||
|
feeds = [(u'Pambianco', u'http://feeds.feedburner.com/pambianconews/YGXu')]
|
||||||
|
__author__ = 'faber1971'
|
||||||
|
__version__ = 'v1.0'
|
||||||
|
__date__ = '9, January 2011'
|
12
recipes/sivil_dusunce.recipe
Normal file
12
recipes/sivil_dusunce.recipe
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
|
class BasicUserRecipe1324913680(BasicNewsRecipe):
|
||||||
|
title = u'Sivil Dusunce'
|
||||||
|
language = 'tr'
|
||||||
|
__author__ = 'asalet_r'
|
||||||
|
|
||||||
|
oldest_article = 7
|
||||||
|
max_articles_per_feed = 20
|
||||||
|
auto_cleanup = True
|
||||||
|
|
||||||
|
feeds = [(u'Sivil Dusunce', u'http://www.sivildusunce.com/feed/')]
|
12
recipes/tasfiye_dergisi.recipe
Normal file
12
recipes/tasfiye_dergisi.recipe
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
|
class BasicUserRecipe1324739957(BasicNewsRecipe):
|
||||||
|
title = u'Tasfiye Dergisi'
|
||||||
|
language = 'tr'
|
||||||
|
__author__ = 'asalet_r'
|
||||||
|
|
||||||
|
oldest_article = 7
|
||||||
|
max_articles_per_feed = 20
|
||||||
|
auto_cleanup = True
|
||||||
|
|
||||||
|
feeds = [(u'Tasfiye Dergisi', u'http://www.tasfiyedergisi.com/direnen-edebiyat/?feed=rss2')]
|
@ -74,7 +74,7 @@ class ANDROID(USBMS):
|
|||||||
0x0001 : [0x0223, 0x9999],
|
0x0001 : [0x0223, 0x9999],
|
||||||
0x4e11 : [0x0100, 0x226, 0x227],
|
0x4e11 : [0x0100, 0x226, 0x227],
|
||||||
0x4e12 : [0x0100, 0x226, 0x227],
|
0x4e12 : [0x0100, 0x226, 0x227],
|
||||||
0x4e21 : [0x0100, 0x226, 0x227],
|
0x4e21 : [0x0100, 0x226, 0x227, 0x231],
|
||||||
0xb058 : [0x0222, 0x226, 0x227],
|
0xb058 : [0x0222, 0x226, 0x227],
|
||||||
0x0ff9 : [0x0226],
|
0x0ff9 : [0x0226],
|
||||||
},
|
},
|
||||||
@ -175,7 +175,7 @@ class ANDROID(USBMS):
|
|||||||
'GT-S5830_CARD', 'GT-S5570_CARD', 'MB870', 'MID7015A',
|
'GT-S5830_CARD', 'GT-S5570_CARD', 'MB870', 'MID7015A',
|
||||||
'ALPANDIGITAL', 'ANDROID_MID', 'VTAB1008', 'EMX51_BBG_ANDROI',
|
'ALPANDIGITAL', 'ANDROID_MID', 'VTAB1008', 'EMX51_BBG_ANDROI',
|
||||||
'UMS', '.K080', 'P990', 'LTE', 'MB853', 'GT-S5660_CARD', 'A107',
|
'UMS', '.K080', 'P990', 'LTE', 'MB853', 'GT-S5660_CARD', 'A107',
|
||||||
'GT-I9003_CARD', 'XT912']
|
'GT-I9003_CARD', 'XT912', 'FILE-CD_GADGET']
|
||||||
WINDOWS_CARD_A_MEM = ['ANDROID_PHONE', 'GT-I9000_CARD', 'SGH-I897',
|
WINDOWS_CARD_A_MEM = ['ANDROID_PHONE', 'GT-I9000_CARD', 'SGH-I897',
|
||||||
'FILE-STOR_GADGET', 'SGH-T959', 'SAMSUNG_ANDROID', 'GT-P1000_CARD',
|
'FILE-STOR_GADGET', 'SGH-T959', 'SAMSUNG_ANDROID', 'GT-P1000_CARD',
|
||||||
'A70S', 'A101IT', '7', 'INCREDIBLE', 'A7EB', 'SGH-T849_CARD',
|
'A70S', 'A101IT', '7', 'INCREDIBLE', 'A7EB', 'SGH-T849_CARD',
|
||||||
|
@ -68,8 +68,8 @@ def check_command_line_options(parser, args, log):
|
|||||||
raise SystemExit(1)
|
raise SystemExit(1)
|
||||||
|
|
||||||
output = args[2]
|
output = args[2]
|
||||||
if output.startswith('.') and (output != '.' and not
|
if (output.startswith('.') and output[:2] not in {'..', '.'} and '/' not in
|
||||||
output.startswith('..')):
|
output and '\\' not in output):
|
||||||
output = os.path.splitext(os.path.basename(input))[0]+output
|
output = os.path.splitext(os.path.basename(input))[0]+output
|
||||||
output = os.path.abspath(output)
|
output = os.path.abspath(output)
|
||||||
|
|
||||||
|
@ -191,9 +191,9 @@ class CanonicalFragmentIdentifier
|
|||||||
if target.currentTime == undefined
|
if target.currentTime == undefined
|
||||||
return
|
return
|
||||||
if target.readyState == 4 or target.readyState == "complete"
|
if target.readyState == 4 or target.readyState == "complete"
|
||||||
target.currentTime = val
|
target.currentTime = val + 0
|
||||||
else
|
else
|
||||||
fn = -> target.currentTime = val
|
fn = ()-> target.currentTime = val
|
||||||
target.addEventListener("canplay", fn, false)
|
target.addEventListener("canplay", fn, false)
|
||||||
#}}}
|
#}}}
|
||||||
|
|
||||||
|
BIN
src/calibre/ebooks/oeb/display/test-cfi/birds.mp4
Normal file
BIN
src/calibre/ebooks/oeb/display/test-cfi/birds.mp4
Normal file
Binary file not shown.
@ -114,6 +114,15 @@
|
|||||||
<p>Try clicking at different points along the image. Also try changing the magnification and then hitting reload.</p>
|
<p>Try clicking at different points along the image. Also try changing the magnification and then hitting reload.</p>
|
||||||
<img src="marker.png" width="150" height="200" alt="Test Image" style="border: solid 1px black"/>
|
<img src="marker.png" width="150" height="200" alt="Test Image" style="border: solid 1px black"/>
|
||||||
|
|
||||||
|
<h2>Video</h2>
|
||||||
|
<p>Try clicking on this video while it is playing. The page should
|
||||||
|
reload with the video paused at the point it was at when you
|
||||||
|
clicked. To play the video you should right click on it and select
|
||||||
|
play (otherwise the click will cause a reload). This is currently
|
||||||
|
broken because of issues in the python server use to serve test
|
||||||
|
content. I lack the patience to track down the bug. </p>
|
||||||
|
<video width="320" height="240" controls="controls" preload="auto" src="birds.mp4" type="video/mp4" />
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<img id="marker" style="position: absolute; display:none; z-index:10" src="marker.png" alt="Marker" />
|
<img id="marker" style="position: absolute; display:none; z-index:10" src="marker.png" alt="Marker" />
|
||||||
</body>
|
</body>
|
||||||
|
@ -3179,6 +3179,8 @@ class LibraryDatabase2(LibraryDatabase, SchemaUpgrade, CustomColumns):
|
|||||||
|
|
||||||
def create_book_entry(self, mi, cover=None, add_duplicates=True,
|
def create_book_entry(self, mi, cover=None, add_duplicates=True,
|
||||||
force_id=None):
|
force_id=None):
|
||||||
|
if mi.tags:
|
||||||
|
mi.tags = list(mi.tags)
|
||||||
self._add_newbook_tag(mi)
|
self._add_newbook_tag(mi)
|
||||||
if not add_duplicates and self.has_book(mi):
|
if not add_duplicates and self.has_book(mi):
|
||||||
return None
|
return None
|
||||||
|
@ -164,6 +164,7 @@ class Handler(SimpleHTTPServer.SimpleHTTPRequestHandler): # {{{
|
|||||||
|
|
||||||
class HTTPD(SocketServer.TCPServer):
|
class HTTPD(SocketServer.TCPServer):
|
||||||
allow_reuse_address = True
|
allow_reuse_address = True
|
||||||
|
protocol_version = 'HTTP/1.1'
|
||||||
|
|
||||||
# }}}
|
# }}}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user