diff --git a/recipes/icons/jagran_josh.png b/recipes/icons/jagran_josh.png deleted file mode 100644 index bf07ef70c3..0000000000 Binary files a/recipes/icons/jagran_josh.png and /dev/null differ diff --git a/recipes/icons/jalopnik.png b/recipes/icons/jalopnik.png deleted file mode 100644 index 9c6bbedb76..0000000000 Binary files a/recipes/icons/jalopnik.png and /dev/null differ diff --git a/recipes/icons/jb_online.png b/recipes/icons/jb_online.png deleted file mode 100644 index f3508ff28f..0000000000 Binary files a/recipes/icons/jb_online.png and /dev/null differ diff --git a/recipes/icons/jbpress.png b/recipes/icons/jbpress.png deleted file mode 100644 index 77e35a3fc3..0000000000 Binary files a/recipes/icons/jbpress.png and /dev/null differ diff --git a/recipes/icons/jezebel.png b/recipes/icons/jezebel.png deleted file mode 100644 index df587e12b3..0000000000 Binary files a/recipes/icons/jezebel.png and /dev/null differ diff --git a/recipes/icons/joelonsoftware.png b/recipes/icons/joelonsoftware.png deleted file mode 100644 index 275fb22cd6..0000000000 Binary files a/recipes/icons/joelonsoftware.png and /dev/null differ diff --git a/recipes/icons/joongang.png b/recipes/icons/joongang.png deleted file mode 100644 index ddfbbc94a2..0000000000 Binary files a/recipes/icons/joongang.png and /dev/null differ diff --git a/recipes/icons/journalgazette.png b/recipes/icons/journalgazette.png deleted file mode 100644 index 940ec6fd14..0000000000 Binary files a/recipes/icons/journalgazette.png and /dev/null differ diff --git a/recipes/icons/jp_dk.png b/recipes/icons/jp_dk.png deleted file mode 100644 index 65b87c65fb..0000000000 Binary files a/recipes/icons/jp_dk.png and /dev/null differ diff --git a/recipes/icons/jpost_fr.png b/recipes/icons/jpost_fr.png deleted file mode 100644 index 37342167f6..0000000000 Binary files a/recipes/icons/jpost_fr.png and /dev/null differ diff --git a/recipes/icons/jsonline.png b/recipes/icons/jsonline.png deleted file mode 100644 index 812a77db68..0000000000 Binary files a/recipes/icons/jsonline.png and /dev/null differ diff --git a/recipes/icons/jurnalulnational.png b/recipes/icons/jurnalulnational.png deleted file mode 100644 index 6cc5a6021c..0000000000 Binary files a/recipes/icons/jurnalulnational.png and /dev/null differ diff --git a/recipes/icons/jutarnji.png b/recipes/icons/jutarnji.png deleted file mode 100644 index 6be815f2fa..0000000000 Binary files a/recipes/icons/jutarnji.png and /dev/null differ diff --git a/recipes/icons/juve_la_stampa.png b/recipes/icons/juve_la_stampa.png deleted file mode 100644 index bea808f77a..0000000000 Binary files a/recipes/icons/juve_la_stampa.png and /dev/null differ diff --git a/recipes/icons/jv_dk.png b/recipes/icons/jv_dk.png deleted file mode 100644 index b9fb2bc9b8..0000000000 Binary files a/recipes/icons/jv_dk.png and /dev/null differ diff --git a/recipes/icons/kahokushinpo.png b/recipes/icons/kahokushinpo.png deleted file mode 100644 index 60049a41dc..0000000000 Binary files a/recipes/icons/kahokushinpo.png and /dev/null differ diff --git a/recipes/icons/kaloeviglokalavisen_dk.png b/recipes/icons/kaloeviglokalavisen_dk.png deleted file mode 100644 index 70464fce89..0000000000 Binary files a/recipes/icons/kaloeviglokalavisen_dk.png and /dev/null differ diff --git a/recipes/icons/kamikaze.png b/recipes/icons/kamikaze.png deleted file mode 100644 index d176f48469..0000000000 Binary files a/recipes/icons/kamikaze.png and /dev/null differ diff --git a/recipes/icons/karsi_gazete.png b/recipes/icons/karsi_gazete.png deleted file mode 100644 index bd44458ff7..0000000000 Binary files a/recipes/icons/karsi_gazete.png and /dev/null differ diff --git a/recipes/icons/kathemerini.png b/recipes/icons/kathemerini.png deleted file mode 100644 index 27f4c47d4c..0000000000 Binary files a/recipes/icons/kathemerini.png and /dev/null differ diff --git a/recipes/icons/kellog_insight.png b/recipes/icons/kellog_insight.png deleted file mode 100644 index df0d0e5d0d..0000000000 Binary files a/recipes/icons/kellog_insight.png and /dev/null differ diff --git a/recipes/icons/kerrang.png b/recipes/icons/kerrang.png deleted file mode 100644 index bc9f019b3a..0000000000 Binary files a/recipes/icons/kerrang.png and /dev/null differ diff --git a/recipes/icons/kgsenghavebladet_dk.png b/recipes/icons/kgsenghavebladet_dk.png deleted file mode 100644 index 6fc915ca3d..0000000000 Binary files a/recipes/icons/kgsenghavebladet_dk.png and /dev/null differ diff --git a/recipes/icons/kholod.png b/recipes/icons/kholod.png deleted file mode 100644 index 2e03216b62..0000000000 Binary files a/recipes/icons/kholod.png and /dev/null differ diff --git a/recipes/icons/kholod_en.png b/recipes/icons/kholod_en.png deleted file mode 100644 index 7b52707194..0000000000 Binary files a/recipes/icons/kholod_en.png and /dev/null differ diff --git a/recipes/icons/kidney.png b/recipes/icons/kidney.png deleted file mode 100644 index 76555e1476..0000000000 Binary files a/recipes/icons/kidney.png and /dev/null differ diff --git a/recipes/icons/kitsapun.png b/recipes/icons/kitsapun.png deleted file mode 100644 index 9423c9e9b0..0000000000 Binary files a/recipes/icons/kitsapun.png and /dev/null differ diff --git a/recipes/icons/km_blog.png b/recipes/icons/km_blog.png deleted file mode 100644 index 27d8499689..0000000000 Binary files a/recipes/icons/km_blog.png and /dev/null differ diff --git a/recipes/icons/knack_be.png b/recipes/icons/knack_be.png deleted file mode 100644 index 24c13ba039..0000000000 Binary files a/recipes/icons/knack_be.png and /dev/null differ diff --git a/recipes/icons/koegelokalavisen_dk.png b/recipes/icons/koegelokalavisen_dk.png deleted file mode 100644 index 70464fce89..0000000000 Binary files a/recipes/icons/koegelokalavisen_dk.png and /dev/null differ diff --git a/recipes/icons/koldinglokalavisen_dk.png b/recipes/icons/koldinglokalavisen_dk.png deleted file mode 100644 index 70464fce89..0000000000 Binary files a/recipes/icons/koldinglokalavisen_dk.png and /dev/null differ diff --git a/recipes/icons/komchadluek.png b/recipes/icons/komchadluek.png deleted file mode 100644 index a0dddc7589..0000000000 Binary files a/recipes/icons/komchadluek.png and /dev/null differ diff --git a/recipes/icons/kompas.png b/recipes/icons/kompas.png deleted file mode 100644 index 1aa04d5f90..0000000000 Binary files a/recipes/icons/kompas.png and /dev/null differ diff --git a/recipes/icons/kotaku.png b/recipes/icons/kotaku.png deleted file mode 100644 index 2110ae69ef..0000000000 Binary files a/recipes/icons/kotaku.png and /dev/null differ diff --git a/recipes/icons/kp.png b/recipes/icons/kp.png deleted file mode 100644 index f4904913d8..0000000000 Binary files a/recipes/icons/kp.png and /dev/null differ diff --git a/recipes/icons/kristeligt_dagblad_dk.png b/recipes/icons/kristeligt_dagblad_dk.png deleted file mode 100644 index ef138b9caf..0000000000 Binary files a/recipes/icons/kristeligt_dagblad_dk.png and /dev/null differ diff --git a/recipes/icons/krstarica_en.png b/recipes/icons/krstarica_en.png deleted file mode 100644 index 93cc7056c4..0000000000 Binary files a/recipes/icons/krstarica_en.png and /dev/null differ diff --git a/recipes/icons/ksiazka_pl.png b/recipes/icons/ksiazka_pl.png deleted file mode 100644 index 6dac3d9853..0000000000 Binary files a/recipes/icons/ksiazka_pl.png and /dev/null differ diff --git a/recipes/icons/kukuburi.png b/recipes/icons/kukuburi.png deleted file mode 100644 index 64ded80d47..0000000000 Binary files a/recipes/icons/kukuburi.png and /dev/null differ diff --git a/recipes/icons/kurier_poranny.png b/recipes/icons/kurier_poranny.png deleted file mode 100644 index 0ed02efdd8..0000000000 Binary files a/recipes/icons/kurier_poranny.png and /dev/null differ diff --git a/recipes/icons/kurier_szczecinski.png b/recipes/icons/kurier_szczecinski.png deleted file mode 100644 index 2c8a3684dd..0000000000 Binary files a/recipes/icons/kurier_szczecinski.png and /dev/null differ diff --git a/recipes/icons/kyivpost_ar.png b/recipes/icons/kyivpost_ar.png deleted file mode 100644 index 67a06f3559..0000000000 Binary files a/recipes/icons/kyivpost_ar.png and /dev/null differ diff --git a/recipes/icons/l_espresso.png b/recipes/icons/l_espresso.png deleted file mode 100644 index af146383b3..0000000000 Binary files a/recipes/icons/l_espresso.png and /dev/null differ diff --git a/recipes/icons/la_cuarta.png b/recipes/icons/la_cuarta.png deleted file mode 100644 index e13b932354..0000000000 Binary files a/recipes/icons/la_cuarta.png and /dev/null differ diff --git a/recipes/icons/la_gazetta_del_mezzogiorno.png b/recipes/icons/la_gazetta_del_mezzogiorno.png deleted file mode 100644 index 42b17a5a29..0000000000 Binary files a/recipes/icons/la_gazetta_del_mezzogiorno.png and /dev/null differ diff --git a/recipes/icons/la_gazzeta_dello_sport.png b/recipes/icons/la_gazzeta_dello_sport.png deleted file mode 100644 index 06eeb4ea18..0000000000 Binary files a/recipes/icons/la_gazzeta_dello_sport.png and /dev/null differ diff --git a/recipes/icons/la_pausa_caffe.png b/recipes/icons/la_pausa_caffe.png deleted file mode 100644 index 1c60c8b202..0000000000 Binary files a/recipes/icons/la_pausa_caffe.png and /dev/null differ diff --git a/recipes/icons/la_razon_bo.png b/recipes/icons/la_razon_bo.png deleted file mode 100644 index 0d6ef7e7b0..0000000000 Binary files a/recipes/icons/la_razon_bo.png and /dev/null differ diff --git a/recipes/icons/la_rioja.png b/recipes/icons/la_rioja.png deleted file mode 100644 index 0322d1c0d1..0000000000 Binary files a/recipes/icons/la_rioja.png and /dev/null differ diff --git a/recipes/icons/la_segunda.png b/recipes/icons/la_segunda.png deleted file mode 100644 index 81a50e8b7f..0000000000 Binary files a/recipes/icons/la_segunda.png and /dev/null differ diff --git a/recipes/icons/la_tercera.png b/recipes/icons/la_tercera.png deleted file mode 100644 index 5b42fdc19b..0000000000 Binary files a/recipes/icons/la_tercera.png and /dev/null differ diff --git a/recipes/icons/la_tribuna.png b/recipes/icons/la_tribuna.png deleted file mode 100644 index ccb85fe1b7..0000000000 Binary files a/recipes/icons/la_tribuna.png and /dev/null differ diff --git a/recipes/icons/lameuse_be.png b/recipes/icons/lameuse_be.png deleted file mode 100644 index 2d59e15429..0000000000 Binary files a/recipes/icons/lameuse_be.png and /dev/null differ diff --git a/recipes/icons/lanacion_chile.png b/recipes/icons/lanacion_chile.png deleted file mode 100644 index d2dcb63d03..0000000000 Binary files a/recipes/icons/lanacion_chile.png and /dev/null differ diff --git a/recipes/icons/laprensa_hn.png b/recipes/icons/laprensa_hn.png deleted file mode 100644 index 39874bfa5a..0000000000 Binary files a/recipes/icons/laprensa_hn.png and /dev/null differ diff --git a/recipes/icons/laprensa_ni.png b/recipes/icons/laprensa_ni.png deleted file mode 100644 index d3741515c1..0000000000 Binary files a/recipes/icons/laprensa_ni.png and /dev/null differ diff --git a/recipes/icons/latribuna.png b/recipes/icons/latribuna.png deleted file mode 100644 index 90005d8eb8..0000000000 Binary files a/recipes/icons/latribuna.png and /dev/null differ diff --git a/recipes/icons/lavanguardia.png b/recipes/icons/lavanguardia.png deleted file mode 100644 index d5b81909cb..0000000000 Binary files a/recipes/icons/lavanguardia.png and /dev/null differ diff --git a/recipes/icons/lavanguardia_corresponsales_es.png b/recipes/icons/lavanguardia_corresponsales_es.png deleted file mode 100644 index d5b81909cb..0000000000 Binary files a/recipes/icons/lavanguardia_corresponsales_es.png and /dev/null differ diff --git a/recipes/icons/lavenir_be.png b/recipes/icons/lavenir_be.png deleted file mode 100644 index 6c24d5c1ec..0000000000 Binary files a/recipes/icons/lavenir_be.png and /dev/null differ diff --git a/recipes/icons/le_journal.png b/recipes/icons/le_journal.png deleted file mode 100644 index 18021722f7..0000000000 Binary files a/recipes/icons/le_journal.png and /dev/null differ diff --git a/recipes/icons/le_temps.png b/recipes/icons/le_temps.png deleted file mode 100644 index 061e9ed748..0000000000 Binary files a/recipes/icons/le_temps.png and /dev/null differ diff --git a/recipes/icons/leduc.png b/recipes/icons/leduc.png deleted file mode 100644 index 5a40c3a78e..0000000000 Binary files a/recipes/icons/leduc.png and /dev/null differ diff --git a/recipes/icons/legitymizm.png b/recipes/icons/legitymizm.png deleted file mode 100644 index 988febc408..0000000000 Binary files a/recipes/icons/legitymizm.png and /dev/null differ diff --git a/recipes/icons/leipzer_volkszeitung.png b/recipes/icons/leipzer_volkszeitung.png deleted file mode 100644 index 560330f937..0000000000 Binary files a/recipes/icons/leipzer_volkszeitung.png and /dev/null differ diff --git a/recipes/icons/lequipe.png b/recipes/icons/lequipe.png deleted file mode 100644 index db463c9ca8..0000000000 Binary files a/recipes/icons/lequipe.png and /dev/null differ diff --git a/recipes/icons/les_echos.png b/recipes/icons/les_echos.png deleted file mode 100644 index 0671dd12e4..0000000000 Binary files a/recipes/icons/les_echos.png and /dev/null differ diff --git a/recipes/icons/lescienze.png b/recipes/icons/lescienze.png deleted file mode 100644 index a5cfa6f694..0000000000 Binary files a/recipes/icons/lescienze.png and /dev/null differ diff --git a/recipes/icons/lesoir_be.png b/recipes/icons/lesoir_be.png deleted file mode 100644 index 9a0aaa786a..0000000000 Binary files a/recipes/icons/lesoir_be.png and /dev/null differ diff --git a/recipes/icons/levante.png b/recipes/icons/levante.png deleted file mode 100644 index 37451323d8..0000000000 Binary files a/recipes/icons/levante.png and /dev/null differ diff --git a/recipes/icons/lidovky.png b/recipes/icons/lidovky.png deleted file mode 100644 index 52db59223d..0000000000 Binary files a/recipes/icons/lidovky.png and /dev/null differ diff --git a/recipes/icons/lifehacker_pl.png b/recipes/icons/lifehacker_pl.png deleted file mode 100644 index 8cdce786e7..0000000000 Binary files a/recipes/icons/lifehacker_pl.png and /dev/null differ diff --git a/recipes/icons/limes.png b/recipes/icons/limes.png deleted file mode 100644 index 104e155736..0000000000 Binary files a/recipes/icons/limes.png and /dev/null differ diff --git a/recipes/icons/london_free_press.png b/recipes/icons/london_free_press.png deleted file mode 100644 index 8924535841..0000000000 Binary files a/recipes/icons/london_free_press.png and /dev/null differ diff --git a/recipes/icons/los_danieles.png b/recipes/icons/los_danieles.png deleted file mode 100644 index ee65d56e94..0000000000 Binary files a/recipes/icons/los_danieles.png and /dev/null differ diff --git a/recipes/icons/los_tiempos_bo.png b/recipes/icons/los_tiempos_bo.png deleted file mode 100644 index fa1596b1d9..0000000000 Binary files a/recipes/icons/los_tiempos_bo.png and /dev/null differ diff --git a/recipes/icons/losservatoreromano_it.png b/recipes/icons/losservatoreromano_it.png deleted file mode 100644 index 088ef6c2d7..0000000000 Binary files a/recipes/icons/losservatoreromano_it.png and /dev/null differ diff --git a/recipes/icons/luns_a_venres.png b/recipes/icons/luns_a_venres.png deleted file mode 100644 index 6cf87544c0..0000000000 Binary files a/recipes/icons/luns_a_venres.png and /dev/null differ diff --git a/recipes/icons/lyngby-taarbaeklokalavisen_dk.png b/recipes/icons/lyngby-taarbaeklokalavisen_dk.png deleted file mode 100644 index 70464fce89..0000000000 Binary files a/recipes/icons/lyngby-taarbaeklokalavisen_dk.png and /dev/null differ diff --git a/recipes/icons/mac_world.png b/recipes/icons/mac_world.png deleted file mode 100644 index f13f14f90f..0000000000 Binary files a/recipes/icons/mac_world.png and /dev/null differ diff --git a/recipes/icons/mac_world_uk.png b/recipes/icons/mac_world_uk.png deleted file mode 100644 index 5196c14635..0000000000 Binary files a/recipes/icons/mac_world_uk.png and /dev/null differ diff --git a/recipes/icons/macity.png b/recipes/icons/macity.png deleted file mode 100644 index 7bf511e7f2..0000000000 Binary files a/recipes/icons/macity.png and /dev/null differ diff --git a/recipes/icons/macleans.png b/recipes/icons/macleans.png deleted file mode 100644 index 8bf66c1b44..0000000000 Binary files a/recipes/icons/macleans.png and /dev/null differ diff --git a/recipes/icons/maekyung.png b/recipes/icons/maekyung.png deleted file mode 100644 index 67a7abc43e..0000000000 Binary files a/recipes/icons/maekyung.png and /dev/null differ diff --git a/recipes/icons/maharashtra_times.png b/recipes/icons/maharashtra_times.png deleted file mode 100644 index 44e2556941..0000000000 Binary files a/recipes/icons/maharashtra_times.png and /dev/null differ diff --git a/recipes/icons/malaya_business_insight.png b/recipes/icons/malaya_business_insight.png deleted file mode 100644 index a0acdcbf91..0000000000 Binary files a/recipes/icons/malaya_business_insight.png and /dev/null differ diff --git a/recipes/icons/mandidner.png b/recipes/icons/mandidner.png deleted file mode 100644 index edfd965347..0000000000 Binary files a/recipes/icons/mandidner.png and /dev/null differ diff --git a/recipes/icons/marine_corps_times.png b/recipes/icons/marine_corps_times.png deleted file mode 100644 index 922c2a61f3..0000000000 Binary files a/recipes/icons/marine_corps_times.png and /dev/null differ diff --git a/recipes/icons/marketing_sensoriale.png b/recipes/icons/marketing_sensoriale.png deleted file mode 100644 index b338881fb5..0000000000 Binary files a/recipes/icons/marketing_sensoriale.png and /dev/null differ diff --git a/recipes/icons/matichon.png b/recipes/icons/matichon.png deleted file mode 100644 index b7bee6ed4f..0000000000 Binary files a/recipes/icons/matichon.png and /dev/null differ diff --git a/recipes/icons/mayra.png b/recipes/icons/mayra.png deleted file mode 100644 index 055a8a5c7b..0000000000 Binary files a/recipes/icons/mayra.png and /dev/null differ diff --git a/recipes/icons/mediterraneo.png b/recipes/icons/mediterraneo.png deleted file mode 100644 index 7ad854d54f..0000000000 Binary files a/recipes/icons/mediterraneo.png and /dev/null differ diff --git a/recipes/icons/melbourne_herald_sun.png b/recipes/icons/melbourne_herald_sun.png deleted file mode 100644 index 00f915f1e4..0000000000 Binary files a/recipes/icons/melbourne_herald_sun.png and /dev/null differ diff --git a/recipes/icons/mens_day_out.png b/recipes/icons/mens_day_out.png deleted file mode 100644 index 5189b1cc9b..0000000000 Binary files a/recipes/icons/mens_day_out.png and /dev/null differ diff --git a/recipes/icons/mens_health.png b/recipes/icons/mens_health.png deleted file mode 100644 index 4ccf9be455..0000000000 Binary files a/recipes/icons/mens_health.png and /dev/null differ diff --git a/recipes/icons/metro_montreal.png b/recipes/icons/metro_montreal.png deleted file mode 100644 index d46cc09dd5..0000000000 Binary files a/recipes/icons/metro_montreal.png and /dev/null differ diff --git a/recipes/icons/metro_news_nl.png b/recipes/icons/metro_news_nl.png deleted file mode 100644 index f1e0dcff35..0000000000 Binary files a/recipes/icons/metro_news_nl.png and /dev/null differ diff --git a/recipes/icons/metro_uk.png b/recipes/icons/metro_uk.png deleted file mode 100644 index e20609dc86..0000000000 Binary files a/recipes/icons/metro_uk.png and /dev/null differ diff --git a/recipes/icons/military_times.png b/recipes/icons/military_times.png deleted file mode 100644 index e1ee9bfc55..0000000000 Binary files a/recipes/icons/military_times.png and /dev/null differ diff --git a/recipes/icons/mlody_technik_pl.png b/recipes/icons/mlody_technik_pl.png deleted file mode 100644 index 4e3b29a332..0000000000 Binary files a/recipes/icons/mlody_technik_pl.png and /dev/null differ diff --git a/recipes/icons/mobilenations.png b/recipes/icons/mobilenations.png deleted file mode 100644 index be3fc1f1b9..0000000000 Binary files a/recipes/icons/mobilenations.png and /dev/null differ diff --git a/recipes/icons/moldovaazi.png b/recipes/icons/moldovaazi.png deleted file mode 100644 index 33c8626d84..0000000000 Binary files a/recipes/icons/moldovaazi.png and /dev/null differ diff --git a/recipes/icons/monbiot.png b/recipes/icons/monbiot.png deleted file mode 100644 index 2d8e1a91a8..0000000000 Binary files a/recipes/icons/monbiot.png and /dev/null differ diff --git a/recipes/icons/mondedurable.png b/recipes/icons/mondedurable.png deleted file mode 100644 index a1f907363c..0000000000 Binary files a/recipes/icons/mondedurable.png and /dev/null differ diff --git a/recipes/icons/money_pl.png b/recipes/icons/money_pl.png deleted file mode 100644 index 4d8b586b4d..0000000000 Binary files a/recipes/icons/money_pl.png and /dev/null differ diff --git a/recipes/icons/moneyro.png b/recipes/icons/moneyro.png deleted file mode 100644 index ebcbf2cf17..0000000000 Binary files a/recipes/icons/moneyro.png and /dev/null differ diff --git a/recipes/icons/more_intelligent_life.png b/recipes/icons/more_intelligent_life.png deleted file mode 100644 index 2955c71a47..0000000000 Binary files a/recipes/icons/more_intelligent_life.png and /dev/null differ diff --git a/recipes/icons/movie_web.png b/recipes/icons/movie_web.png deleted file mode 100644 index 4925539f04..0000000000 Binary files a/recipes/icons/movie_web.png and /dev/null differ diff --git a/recipes/icons/msdnmag_en.png b/recipes/icons/msdnmag_en.png deleted file mode 100644 index b295292caf..0000000000 Binary files a/recipes/icons/msdnmag_en.png and /dev/null differ diff --git a/recipes/icons/msnsankei.png b/recipes/icons/msnsankei.png deleted file mode 100644 index fecbab4ee9..0000000000 Binary files a/recipes/icons/msnsankei.png and /dev/null differ diff --git a/recipes/icons/nadacni_fond_proti_korupci.png b/recipes/icons/nadacni_fond_proti_korupci.png deleted file mode 100644 index 09bcdbfc11..0000000000 Binary files a/recipes/icons/nadacni_fond_proti_korupci.png and /dev/null differ diff --git a/recipes/icons/nation_ke.png b/recipes/icons/nation_ke.png deleted file mode 100644 index a69f743f93..0000000000 Binary files a/recipes/icons/nation_ke.png and /dev/null differ diff --git a/recipes/icons/national_geographic_it.png b/recipes/icons/national_geographic_it.png deleted file mode 100644 index 4f15ef3ad2..0000000000 Binary files a/recipes/icons/national_geographic_it.png and /dev/null differ diff --git a/recipes/icons/nationalgeoro.png b/recipes/icons/nationalgeoro.png deleted file mode 100644 index d6a052b7a2..0000000000 Binary files a/recipes/icons/nationalgeoro.png and /dev/null differ diff --git a/recipes/icons/nationalreviewonline.png b/recipes/icons/nationalreviewonline.png deleted file mode 100644 index 940ca99c18..0000000000 Binary files a/recipes/icons/nationalreviewonline.png and /dev/null differ diff --git a/recipes/jagran_josh.recipe b/recipes/jagran_josh.recipe deleted file mode 100644 index f9ebda8ead..0000000000 --- a/recipes/jagran_josh.recipe +++ /dev/null @@ -1,18 +0,0 @@ -from calibre.web.feeds.news import BasicNewsRecipe - - -class Politics(BasicNewsRecipe): - title = u'Jagran Josh' - language = 'en' - __author__ = 'Krittika Goyal' - oldest_article = 3 # days - max_articles_per_feed = 20 - use_embedded_content = False - - no_stylesheets = True - auto_cleanup = True - - feeds = [ - ('Jagran Josh', - 'http://www.jagranjosh.com/rss/josh/current_affairs.xml'), - ] diff --git a/recipes/jakarta_globe.recipe b/recipes/jakarta_globe.recipe deleted file mode 100644 index 66be265407..0000000000 --- a/recipes/jakarta_globe.recipe +++ /dev/null @@ -1,29 +0,0 @@ -from calibre.web.feeds.news import BasicNewsRecipe - - -class JakartaGlobe(BasicNewsRecipe): - title = u'Jakarta Globe' - oldest_article = 3 - max_articles_per_feed = 100 - - feeds = [ - (u'News', u'http://www.thejakartaglobe.com/news/feed/'), - (u'Business', u'http://www.thejakartaglobe.com/business/feed/'), - (u'Opinion', u'http://www.thejakartaglobe.com/opinion/feed/'), - (u'Count me in', u'http://www.thejakartaglobe.com/count-me-in/feed/'), - (u'International', u'http://www.thejakartaglobe.com/international/feed/'), - (u'Sports', u'http://www.thejakartaglobe.com/sports/feed/'), - ] - __author__ = 'rty' - publisher = 'JakartaGlobe.com' - description = 'JakartaGlobe, Indonesia, Newspaper' - category = 'News, Indonesia' - - remove_javascript = True - use_embedded_content = False - no_stylesheets = True - auto_cleanup = True - language = 'en_ID' - encoding = 'utf-8' - conversion_options = {'linearize_tables': True} - masthead_url = 'http://www.thejakartaglobe.com/pages/2010/images/jak-globe-logo.jpg' diff --git a/recipes/jalopnik.recipe b/recipes/jalopnik.recipe deleted file mode 100644 index b310a9e8e8..0000000000 --- a/recipes/jalopnik.recipe +++ /dev/null @@ -1,42 +0,0 @@ -__license__ = 'GPL v3' -__copyright__ = '2010, NA' -''' -jalopnik.com -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class Jalopnik(BasicNewsRecipe): - title = 'Jalopnik' - __author__ = 'NA' - description = "Jalopnik, Obsessed With The Cult of Cars." - publisher = 'jalopnik.com' - category = 'news, cars, spyshots' - oldest_article = 2 - max_articles_per_feed = 100 - no_stylesheets = True - encoding = 'utf-8' - use_embedded_content = False - language = 'en' - masthead_url = 'http://cache.gawkerassets.com/assets/jalopnik.com/img/logo.png' - extra_css = ''' - body{font-family: "Lucida Grande",Helvetica,Arial,sans-serif} - img{margin-bottom: 1em} - h1{font-family :Arial,Helvetica,sans-serif; font-size:large} - h2{font-family :Arial,Helvetica,sans-serif; font-size:x-small} - ''' - conversion_options = { - 'comment': description, 'tags': category, 'publisher': publisher, 'language': language - } - - remove_attributes = ['width', 'height'] - keep_only_tags = [dict(attrs={'class': 'content permalink'})] - remove_tags_before = dict(name='h1') - remove_tags = [dict(attrs={'class': 'contactinfo'})] - remove_tags_after = dict(attrs={'class': 'contactinfo'}) - - feeds = [(u'Articles', u'http://feeds.gawker.com/jalopnik/full')] - - def preprocess_html(self, soup): - return self.adeify_images(soup) diff --git a/recipes/japaa.recipe b/recipes/japaa.recipe deleted file mode 100644 index 8693b054a6..0000000000 --- a/recipes/japaa.recipe +++ /dev/null @@ -1,102 +0,0 @@ -import re - -from calibre.web.feeds.news import BasicNewsRecipe - - -class AdvancedUserRecipe1330393641(BasicNewsRecipe): - title = u'JAAPA' - __author__ = 'adoucette' - language = 'en' - oldest_article = 30 - max_articles_per_feed = 100 - auto_cleanup = True - - def get_cover_url(self): - cover_url = None - soup = self.index_to_soup('http://www.jaapa.com') - cover_item = soup.find( - 'img', src=re.compile(r'\w*?cover\w{1,22}\.jpg')) - if cover_item: - cover_url = cover_item['src'] - return cover_url - - feeds = [ - (u'CME Articles', - u'http://feeds.feedburner.com/jaapacmearticles'), - (u'A Day in the Life', - u'http://www.jaapa.com/pages/rss.aspx?sectionid=490'), - (u'Ask A Librarian', - u'http://www.jaapa.com/pages/rss.aspx?sectionid=847'), - (u'Case of the Month', - u'http://feeds.feedburner.com/jaapacaseofthemonth'), - (u'Clinical Watch', - u'http://feeds.feedburner.com/jaapaclinicalwatch'), - (u'Commentary', - u'http://feeds.feedburner.com/jaapacommentary'), - (u'Critically Appraised Topic', - u'http://www.jaapa.com/pages/rss.aspx?sectionid=699'), - (u'Dermatology Digest', - u'http://feeds.feedburner.com/jaapadermatologydigest'), - (u'Diagnostic Imaging Review', - u'http://feeds.feedburner.com/jaapadiagnosticimagingreview'), - (u'Editorial', - u'http://www.jaapa.com/pages/rss.aspx?sectionid=759'), - (u'From the Academy', - u'http://feeds.feedburner.com/jaapafromtheacademy'), - (u'Genomics in PA Practice', - u'http://www.jaapa.com/pages/rss.aspx?sectionid=760'), - (u'Humane Medicine', - u'http://www.jaapa.com/pages/rss.aspx?sectionid=758'), - (u'Inside the AAPA Policy Manual', - u'http://www.jaapa.com/pages/rss.aspx?sectionid=1546'), - (u'Interpreting ECGs', - u'http://www.jaapa.com/pages/rss.aspx?sectionid=1624'), - (u'Letters', - u'http://www.jaapa.com/pages/rss.aspx?sectionid=808'), - (u'PA Quandaries', - u'http://www.jaapa.com/pages/rss.aspx?sectionid=496'), - (u'Pharmacology Consult', - u'http://www.jaapa.com/pages/rss.aspx?sectionid=1614'), - (u'POEMs', u'http://feeds.feedburner.com/jaapapoems'), - (u'Quick Recertification', - u'http://feeds.feedburner.com/jaapaquickrecertificationseries'), - (u'Sounding Board', - u'http://www.jaapa.com/pages/rss.aspx?sectionid=698'), - (u'The Surgical Patient', - u'http://www.jaapa.com/pages/rss.aspx?sectionid=499'), - (u'Topics in Infectious Diseases', - u'http://www.jaapa.com/pages/rss.aspx?sectionid=2495'), - (u"What's New", u'http://feeds.feedburner.com/jaapawhatsnew'), - (u'When the Patient Asks', - u'http://www.jaapa.com/pages/rss.aspx?sectionid=501'), - (u"Women's Health", - u'http://www.jaapa.com/pages/rss.aspx?sectionid=2176'), - (u'AAPA Special Article', - u'http://www.jaapa.com/pages/rss.aspx?sectionid=1453'), - (u'Case Reports', - u'http://feeds.feedburner.com/jaapacasereports'), - (u'Review Articles', - u'http://feeds.feedburner.com/jaapareviewarticles'), - (u'Surgical Reviews', - u'http://www.jaapa.com/pages/rss.aspx?sectionid=505'), - (u'Brief Report', - u'http://www.jaapa.com/pages/rss.aspx?sectionid=2353'), - (u'Research Corner', - u'http://www.jaapa.com/pages/rss.aspx?sectionid=498'), - (u'Research Reports', - u'http://www.jaapa.com/pages/rss.aspx?sectionid=1024'), - (u'The Art of Medicine', - u'http://www.jaapa.com/pages/rss.aspx?sectionid=1289'), - (u'Clinical Practice Guidelines', - u'http://www.jaapa.com/pages/rss.aspx?sectionid=2102'), - (u'Complementary and Alternative Medicine', - u'http://www.jaapa.com/pages/rss.aspx?sectionid=2123'), - (u'Drug Information', - u'http://www.jaapa.com/pages/rss.aspx?sectionid=2089'), - (u'Evidence-Based Medicine', - u'http://www.jaapa.com/pages/rss.aspx?sectionid=1288'), - (u'Patient Information', - u'http://www.jaapa.com/pages/rss.aspx?sectionid=2122')] - - def print_version(self, url): - return url.replace('/article/', '/printarticle/') diff --git a/recipes/jb_online.recipe b/recipes/jb_online.recipe deleted file mode 100644 index efd6161e46..0000000000 --- a/recipes/jb_online.recipe +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env python - -__license__ = 'GPL v3' -__copyright__ = '2009, Darko Miletic ' -''' -jbonline.terra.com.br -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class JBOnline(BasicNewsRecipe): - title = 'Jornal Brasileiro Online' - __author__ = 'Darko Miletic' - description = 'News from Brasil' - publisher = 'Jornal Brasileiro' - category = 'news, politics, Brasil' - oldest_article = 2 - max_articles_per_feed = 100 - no_stylesheets = True - use_embedded_content = False - encoding = 'cp1252' - cover_url = 'http://jbonline.terra.com.br/img/logo_01.gif' - remove_javascript = True - - html2lrf_options = [ - '--comment', description, '--category', category, '--publisher', publisher - ] - - html2epub_options = 'publisher="' + publisher + \ - '"\ncomments="' + description + '"\ntags="' + category + '"' - - keep_only_tags = [dict(name='div', attrs={'id': 'corpoNoticia'})] - - remove_tags = [dict(name=['script', 'object', 'form'])] - - feeds = [(u'Todos as editorias', - u'http://jbonline.terra.com.br/extra/rsstrjb.xml')] - - def preprocess_html(self, soup): - ifr = soup.find('iframe') - if ifr: - ifr.extract() - for item in soup.findAll(style=True): - del item['style'] - return soup - - language = 'pt' diff --git a/recipes/jbpress.recipe b/recipes/jbpress.recipe deleted file mode 100644 index 6015f86cdf..0000000000 --- a/recipes/jbpress.recipe +++ /dev/null @@ -1,55 +0,0 @@ -try: - from urllib.request import urlopen -except ImportError: - from urllib2 import urlopen -import re - -from calibre.web.feeds.news import BasicNewsRecipe - - -class JBPress(BasicNewsRecipe): - title = u'JBPress' - language = 'ja' - description = u'Japan Business Press New articles (using small print version)' - __author__ = 'Ado Nishimura' - needs_subscription = True - oldest_article = 7 - max_articles_per_feed = 100 - remove_tags_before = dict(id='wrapper') - no_stylesheets = True - - feeds = [('JBPress new article', 'http://feed.ismedia.jp/rss/jbpress/all.rdf')] - - def get_cover_url(self): - return 'http://www.jbpress.co.jp/common/images/v1/jpn/common/logo.gif' - - def get_browser(self): - html = '''
- - - -
-''' - br = BasicNewsRecipe.get_browser(self) - if self.username is not None and self.password is not None: - br.open('http://jbpress.ismedia.jp/articles/print/5549') - response = br.response() - response.set_data(html) - br.set_response(response) - br.select_form(nr=0) - br["login"] = self.username - br['password'] = self.password - br.submit() - return br - - def print_version(self, url): - url = urlopen(url).geturl() # resolve redirect. - return url.replace('/-/', '/print/') - - def preprocess_html(self, soup): - # remove breadcrumb - h3s = soup.findAll('h3') - for h3 in h3s: - if re.compile('^JBpress>').match(h3.string): - h3.extract() - return soup diff --git a/recipes/jezebel.recipe b/recipes/jezebel.recipe deleted file mode 100644 index 2f67c6e369..0000000000 --- a/recipes/jezebel.recipe +++ /dev/null @@ -1,40 +0,0 @@ -__license__ = 'GPL v3' -__copyright__ = '2010, NA' -''' -jezebel.com -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class Jezebel(BasicNewsRecipe): - title = 'Jezebel' - __author__ = 'NA' - description = "Jezebel, Celebrity, Sex, Fashion for Women. Without Airbrushing." - publisher = 'jezebel.com' - category = 'news, cars, spyshots' - oldest_article = 2 - max_articles_per_feed = 100 - no_stylesheets = True - encoding = 'utf-8' - use_embedded_content = True - language = 'en' - masthead_url = 'http://cache.gawkerassets.com/assets/jezebel.com/img/logo.png' - extra_css = ''' - body{font-family: "Lucida Grande",Helvetica,Arial,sans-serif} - img{margin-bottom: 1em} - h1{font-family :Arial,Helvetica,sans-serif; font-size:large} - h2{font-family :Arial,Helvetica,sans-serif; font-size:x-small} - ''' - conversion_options = { - 'comment': description, 'tags': category, 'publisher': publisher, 'language': language - } - - feeds = [(u'Articles', u'http://feeds.gawker.com/jezebel/vip?format=xml')] - - remove_tags = [ - {'class': 'feedflare'}, - ] - - def preprocess_html(self, soup): - return self.adeify_images(soup) diff --git a/recipes/joelonsoftware.recipe b/recipes/joelonsoftware.recipe deleted file mode 100644 index 18aafa2d93..0000000000 --- a/recipes/joelonsoftware.recipe +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env python - -__license__ = 'GPL v3' -__copyright__ = '2008, Darko Miletic ' -''' -joelonsoftware.com -''' -from calibre.web.feeds.news import BasicNewsRecipe - - -class Joelonsoftware(BasicNewsRecipe): - - title = 'Joel on Software' - __author__ = 'Darko Miletic' - description = 'Painless Software Management' - language = 'en' - - no_stylesheets = True - use_embedded_content = True - oldest_article = 60 - - cover_url = 'http://www.joelonsoftware.com/RssJoelOnSoftware.jpg' - - extra_css = ''' - h1{font-size: x-small; color:#BF3306;} - h2{ color:#046380; font-size: large;} - .date{ color:#046380; font-size: x-small;} - .author{ color:#046380; font-size: small;} - body{font-family:Georgia,serif;font-size: small;} - ''' - - html2lrf_options = ['--comment', description, '--category', 'blog,software,news', '--author', 'Joel Spolsky' - ] - - feeds = [(u'Articles', u'http://www.joelonsoftware.com/rss.xml')] diff --git a/recipes/joongang.recipe b/recipes/joongang.recipe deleted file mode 100644 index 0dc56a77be..0000000000 --- a/recipes/joongang.recipe +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: utf-8 -*- -__license__ = 'GPL v3' -__copyright__ = '2015, Hoje Lee ' -''' -Profile to download Joongang Ilbo -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class JoongangIlbo(BasicNewsRecipe): - language = 'ko' - title = u'중앙일보' - description = u'중앙일보 신문 기사' - __author__ = 'Hoje Lee' - oldest_article = 7 - max_articles_per_feed = 5 - auto_cleanup = True - - feeds = [ - # (u'전체기사', 'http://rss.joins.com/joins_news_list.xml'), - (u'주요기사', 'http://rss.joins.com/joins_homenews_list.xml'), - # (u'경제', 'http://rss.joins.com/joins_money_list.xml'), - # (u'사회', 'http://rss.joins.com/joins_life_list.xml'), - # (u'정치', 'http://rss.joins.com/joins_politics_list.xml'), - # 많이 본 뉴스 - (u'전체기사', 'http://rss.joins.com/sonagi/joins_sonagi_total_list.xml'), - (u'경제', 'http://rss.joins.com/sonagi/joins_sonagi_money_list.xml'), - (u'스포츠', 'http://rss.joins.com/sonagi/joins_sonagi_sports_list.xml'), - (u'연예', 'http://rss.joins.com/sonagi/joins_sonagi_star_list.xml'), - (u'사회', 'http://rss.joins.com/sonagi/joins_sonagi_life_list.xml'), - (u'정치', 'http://rss.joins.com/sonagi/joins_sonagi_politics_list.xml'), - (u'지구촌', 'http://rss.joins.com/sonagi/joins_sonagi_world_list.xml'), - (u'IT과학', 'http://rss.joins.com/sonagi/joins_sonagi_it_list.xml'), - (u'사설', 'http://rss.joins.com/sonagi/joins_sonagi_opinion_list.xml'), - ] diff --git a/recipes/journalgazette.recipe b/recipes/journalgazette.recipe deleted file mode 100644 index 4c8c8ec2aa..0000000000 --- a/recipes/journalgazette.recipe +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env python -__license__ = 'GPL v3' -__author__ = 'somedayson & TonytheBookworm, revised by Cynthia Clavey' -__copyright__ = '2010, Cynthia Clavey cynvision@yahoo.com' -__version__ = '1.02' -__date__ = '05, september 2010' -__docformat__ = 'restructuredtext en' -from calibre.web.feeds.recipes import BasicNewsRecipe - - -class AdvancedUserRecipe1283666183(BasicNewsRecipe): - title = u'Journal Gazette Ft. Wayne IN' - __author__ = 'cynvision' - oldest_article = 1 - language = 'en' - max_articles_per_feed = 8 - no_stylesheets = True - remove_javascript = True - use_embedded_content = False - auto_cleanup = True - - feeds = [(u'Opinion', u'http://www.journalgazette.net/opinion/rss/'), - (u'Local News', u'http://www.journalgazette.net/news/local/rss/'), - (u'Sports', u'http://www.journalgazette.net/sports/rss/'), - (u'Business', u'http://www.journalgazette.net/business/rss/'), - (u'Entertainment', - u'http://www.journalgazette.net/entertainment/rss/'), - (u'Food', u'http://www.journalgazette.net/food/'), - (u'Blogs', u'http://www.journalgazette.net/blog/rss/'), - ] diff --git a/recipes/jp_dk.recipe b/recipes/jp_dk.recipe deleted file mode 100644 index 65881cca5a..0000000000 --- a/recipes/jp_dk.recipe +++ /dev/null @@ -1,28 +0,0 @@ -__license__ = 'GPL v3' -__copyright__ = '2010, Darko Miletic ' -''' -jp.dk -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class JP_dk(BasicNewsRecipe): - title = 'Jyllands-Posten' - __author__ = 'Darko Miletic' - description = 'News from Denmark' - publisher = 'jp.dk' - category = 'news, politics, Denmark' - oldest_article = 2 - max_articles_per_feed = 100 - no_stylesheets = True - use_embedded_content = False - language = 'da' - auto_cleanup = True - - feeds = [ - (u'Tophistorier', u'http://www.jp.dk/rss/topnyheder.jsp'), - (u'Seneste nyt', - u'http://jp.dk/index.jsp?service=rssfeed&submode=seneste'), - (u'Indland', u'http://www.jp.dk/rss/indland.jsp'), - ] diff --git a/recipes/jpost_fr.recipe b/recipes/jpost_fr.recipe deleted file mode 100644 index 98b8de67f2..0000000000 --- a/recipes/jpost_fr.recipe +++ /dev/null @@ -1,66 +0,0 @@ -from calibre.web.feeds.news import BasicNewsRecipe - - -class JerusalemPost(BasicNewsRecipe): - title = 'Jerusalem post' - language = 'fr' - __author__ = 'TonytheBookworm' - description = 'The Jerusalem Post (in French)' - publisher = 'jpost' - category = 'news' - oldest_article = 30 - max_articles_per_feed = 100 - linearize_tables = True - no_stylesheets = True - remove_javascript = True - - masthead_url = 'http://static.jpost.com/JPSITES/images/JFrench/2008/site/jplogo.JFrench.gif' - - remove_tags = [ - dict(name='a', attrs={'href': ['javascript:window.print()']}), - dict(name='div', attrs={'class': ['bot']}), - - ] - - feeds = [ - ('NEWS', 'http://fr.jpost.com/servlet/Satellite?collId=1216805762036&pagename=JFrench%2FPage%2FRSS'), - ('JFrench En route vers la paix', - 'http://fr.jpost.com/servlet/Satellite?collId=1216805762201&pagename=JFrench%2FPage%2FRSS'), - ('JFrench Politique', 'http://fr.jpost.com/servlet/Satellite?collId=1215356737334&pagename=JFrench%2FPage%2FRSS'), - ('JFrench Securite', 'http://fr.jpost.com/servlet/Satellite?collId=1215356737338&pagename=JFrench%2FPage%2FRSS'), - ('JFrench Moyen Orient', - 'http://fr.jpost.com/servlet/Satellite?collId=1215356737342&pagename=JFrench%2FPage%2FRSS'), - ('JFrench Diplomatie / Monde', - 'http://fr.jpost.com/servlet/Satellite?collId=1215356737346&pagename=JFrench%2FPage%2FRSS'), - ('JFrench Economie / Sciences', - 'http://fr.jpost.com/servlet/Satellite?collId=1215356737358&pagename=JFrench%2FPage%2FRSS'), - ('JFrench Societe', 'http://fr.jpost.com/servlet/Satellite?collId=1215356737354&pagename=JFrench%2FPage%2FRSS'), - ('JFrench Opinions', 'http://fr.jpost.com/servlet/Satellite?collId=1215356737350&pagename=JFrench%2FPage%2FRSS'), - ('JFrench Monde juif', - 'http://fr.jpost.com/servlet/Satellite?collId=1215356737366&pagename=JFrench%2FPage%2FRSS'), - ('JFrench Culture / Sport', - 'http://fr.jpost.com/servlet/Satellite?collId=1215356737362&pagename=JFrench%2FPage%2FRSS') - ] - - def print_version(self, url): - split1 = url.split("cid=") - # for testing only ------- - # print 'SPLIT IS: ', split1 - # print 'ORG URL IS: ', url - # --------------------------- - idnum = split1[1] # get the actual value of the id article - # for testing only -------------------- - # print 'the idnum is: ', idnum - # -------------------------------------- - print_url = 'http://fr.jpost.com/servlet/Satellite?cid=' + \ - idnum + '&pagename=JFrench%2FJPArticle%2FPrinter' - # for testing only ------------------------- - # print 'PRINT URL IS: ', print_url - # ------------------------------------------ - return print_url - - # example of how links should be formatted - # ------------------------------------------------------------------------- - # org version = http://fr.jpost.com/servlet/Satellite?pagename=JFrench/JPArticle/ShowFull&cid=1282804806075 - # print version = http://fr.jpost.com/servlet/Satellite?cid=1282804806075&pagename=JFrench%2FJPArticle%2FPrinter - # ------------------------------------------------------------------------- diff --git a/recipes/jsonline.recipe b/recipes/jsonline.recipe deleted file mode 100644 index 3da4bc930d..0000000000 --- a/recipes/jsonline.recipe +++ /dev/null @@ -1,58 +0,0 @@ -from calibre.ebooks.BeautifulSoup import BeautifulSoup -from calibre.web.feeds.news import BasicNewsRecipe - - -class JSOnline(BasicNewsRecipe): - title = u'Milwaukee Journal Sentinel' - language = 'en' - __author__ = 'Krittika Goyal' - oldest_article = 2 # days - max_articles_per_feed = 25 - - no_stylesheets = True - remove_tags_before = dict(name='div', attrs={'id': 'wrapper'}) - remove_tags = [ - dict(name='iframe'), - dict(name='div', attrs={'class': [ - 'right_float', 'headlines', 'side_section_container poll', 'side_section_container html']}), - ] - - feeds = [ - ('Main Headlines', - 'http://www.jsonline.com/rss?c=y&path=%2F'), - ('Business', - 'http://www.jsonline.com/rss?c=y&path=%2Fbusiness'), - ('Milwaukee marketplace', - 'http://www.jsonline.com/rss?c=y&path=%2Fmarketplace'), - ('Top Entertainment Stories', - 'http://www.jsonline.com/rss?c=y&path=%2Fentertainment%2Ftopstories'), - ('Arts and Books', - 'http://www.jsonline.com/rss?c=y&path=%2Fentertainment%2Farts'), - ('Movies', - 'http://www.jsonline.com/rss?c=y&path=%2Fentertainment%2Fmovies'), - ('Music and Nightlife', - 'http://www.jsonline.com/rss?c=y&path=%2Fentertainment%2Fmusicandnightlife'), - ('Dining', - 'http://www.jsonline.com/rss?c=y&path=%2Ffeatures%2Fdining'), - ('Fashion', - 'http://www.jsonline.com/rss?c=y&path=%2Ffeatures%2Ffashion'), - ('Health and Fitness', - 'http://www.jsonline.com/rss?c=y&path=%2Ffeatures%2Fhealth'), - ('Top Metro Stories', - 'http://www.jsonline.com/rss?c=y&path=%2Fnews%2Ftopstories'), - ('Crime', - 'http://www.jsonline.com/rss?c=y&path=%2Fnews%2Fcrime'), - ('Sports', - 'http://www.jsonline.com/rss?c=y&path=%2Fsports'), - ] - - # def print_version(self, url): - # return url+'/0' - - def preprocess_html(self, soup): - story = soup.find(name='div', attrs={'id': 'mainContent'}) - soup = BeautifulSoup( - 't') - body = soup.find(name='body') - body.insert(0, story) - return soup diff --git a/recipes/jurnalulnational.recipe b/recipes/jurnalulnational.recipe deleted file mode 100644 index 329ef77448..0000000000 --- a/recipes/jurnalulnational.recipe +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -__license__ = 'GPL v3' -__copyright__ = u'2011, Silviu Cotoar\u0103' -''' -jurnalul.ro -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class JurnalulNational(BasicNewsRecipe): - title = u'Jurnalul Na\u0163ional' - __author__ = u'Silviu Cotoar\u0103' - description = u'\u0218tiri din Rom\u00e2nia' - publisher = 'Jurnalul National' - oldest_article = 5 - language = 'ro' - max_articles_per_feed = 100 - no_stylesheets = True - use_embedded_content = False - category = 'Ziare,Stiri,Romania' - encoding = 'utf-8' - cover_url = 'http://www.jurnalul.ro/images/sigla.png' - - conversion_options = { - 'comments': description, 'tags': category, 'language': language, 'publisher': publisher - } - - keep_only_tags = [ - dict(name='h1', attrs={'class': 'h3 art_title'}), dict( - name='div', attrs={'class': 'only_text'}) - ] - - feeds = [ - - (u'\u0218tiri', u'http://www.jurnalul.ro/rss/stiri-3028.html'), - (u'Special', u'http://www.jurnalul.ro/rss/special-3001.html'), - (u'Sport', u'http://www.jurnalul.ro/rss/sport-3035.html'), - (u'Bani Afaceri', u'http://www.jurnalul.ro/rss/bani-afaceri-3006.html'), - (u'Viata Sanatoasa', u'http://www.jurnalul.ro/rss/viata-sanatoasa-3010.html'), - (u'Stiinta Tehnica', u'http://www.jurnalul.ro/rss/stiinta-tehnica-3019.html'), - (u'Timp Liber', u'http://www.jurnalul.ro/rss/timp-liber-3022.html'), - (u'Fun', u'http://www.jurnalul.ro/rss/fun-3038.html'), - (u'Acum 20 de ani', u'http://www.jurnalul.ro/rss/acum-20-de-ani-3073.html') - ] - - def preprocess_html(self, soup): - return self.adeify_images(soup) diff --git a/recipes/jutarnji.recipe b/recipes/jutarnji.recipe deleted file mode 100644 index 13019e95a5..0000000000 --- a/recipes/jutarnji.recipe +++ /dev/null @@ -1,85 +0,0 @@ -#!/usr/bin/env python - -__license__ = 'GPL v3' -__copyright__ = '2008-2009, Darko Miletic ' -''' -jutarnji.hr -''' - -import re - -from calibre.ebooks.BeautifulSoup import Tag -from calibre.web.feeds.news import BasicNewsRecipe - - -def new_tag(soup, name, attrs=()): - impl = getattr(soup, 'new_tag', None) - if impl is not None: - return impl(name, attrs=dict(attrs)) - return Tag(soup, name, attrs=attrs or None) - - -class Jutarnji(BasicNewsRecipe): - title = 'Jutarnji' - __author__ = 'Darko Miletic' - description = 'Hrvatski portal' - publisher = 'Jutarnji.hr' - category = 'news, politics, Croatia' - oldest_article = 2 - max_articles_per_feed = 100 - delay = 1 - language = 'hr' - - no_stylesheets = True - use_embedded_content = False - encoding = 'cp1250' - lang = 'hr-HR' - direction = 'ltr' - extra_css = '@font-face {font-family: "serif1";src:url(res:///opt/sony/ebook/FONT/tt0011m_.ttf)} @font-face {font-family: "sans1";src:url(res:///opt/sony/ebook/FONT/tt0003m_.ttf)} body{text-align: justify; font-family: serif1, serif} .article_description{font-family: sans1, sans-serif} .vijestnaslov{font-size: x-large; font-weight: bold}' # noqa - - conversion_options = { - 'comment': description, 'tags': category, 'publisher': publisher, 'language': lang, 'pretty_print': True - } - - preprocess_regexps = [(re.compile(u'\u0110'), lambda match: u'\u00D0')] - - remove_tags = [ - dict(name=['embed', 'hr', 'link', 'object']), dict( - name='a', attrs={'class': 'a11'}) - ] - - feeds = [ - - (u'Naslovnica', u'http://www.jutarnji.hr/rss'), - (u'Sport', u'http://www.jutarnji.hr/sport/rss'), - (u'Jutarnji2', u'http://www.jutarnji.hr/j2/rss'), - (u'Kultura', u'http://www.jutarnji.hr/kultura/rss'), - (u'Spektakli', u'http://www.jutarnji.hr/spektakli/rss'), - (u'Dom i nekretnine', u'http://www.jutarnji.hr/nekretnine/rss'), - (u'Uhvati ritam', u'http://www.jutarnji.hr/kalendar/rss') - ] - - def print_version(self, url): - main, split, rest = url.partition('.jl') - rmain, rsplit, rrest = main.rpartition(',') - return 'http://www.jutarnji.hr/ispis_clanka.jl?artid=' + rrest - - def preprocess_html(self, soup): - soup.html['lang'] = self.lang - soup.html['dir'] = self.direction - - attribs = ['style', 'font', 'valign', 'colspan', 'width', 'height', 'rowspan', 'summary', 'align', 'cellspacing', 'cellpadding', 'frames', 'rules', 'border' # noqa - ] - for item in soup.body.findAll(name=['table', 'td', 'tr', 'th', 'caption', 'thead', 'tfoot', 'tbody', 'colgroup', 'col']): - item.name = 'div' - for attrib in attribs: - item[attrib] = '' - del item[attrib] - - mlang = new_tag(soup, 'meta', [ - ("http-equiv", "Content-Language"), ("content", self.lang)]) - mcharset = new_tag(soup, 'meta', [ - ("http-equiv", "Content-Type"), ("content", "text/html; charset=UTF-8")]) - soup.head.insert(0, mlang) - soup.head.insert(1, mcharset) - return self.adeify_images(soup) diff --git a/recipes/juve_la_stampa.recipe b/recipes/juve_la_stampa.recipe deleted file mode 100644 index 20a047c65f..0000000000 --- a/recipes/juve_la_stampa.recipe +++ /dev/null @@ -1,20 +0,0 @@ -from calibre.web.feeds.news import BasicNewsRecipe - - -class AdvancedUserRecipe1336504510(BasicNewsRecipe): - title = u'Juve - La Stampa' - oldest_article = 1 - language = 'it' - max_articles_per_feed = 100 - auto_cleanup = True - masthead_url = 'http://www3.lastampa.it/fileadmin/media/sport/quijuve/top_quijuve.jpg' - feeds = [(u'Qui Juve - La Stampa', u'http://feed43.com/2352784107537677.xml')] - remove_tags = [dict(name='div', attrs={ - 'class': ['article-toolbar', 'sezione sezione-news', 'intestazione']})] - - description = 'News about Juventus from La Stampa' - __author__ = 'faber1971' - - -__version__ = 'v1.0' -__date__ = '8, May 2012' diff --git a/recipes/jv_dk.recipe b/recipes/jv_dk.recipe deleted file mode 100644 index 7514e281dd..0000000000 --- a/recipes/jv_dk.recipe +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env python -# vim:fileencoding=utf-8 -# https://manual.calibre-ebook.com/news_recipe.html -from __future__ import absolute_import, division, print_function, unicode_literals - -from calibre.web.feeds.news import BasicNewsRecipe - -''' -JydskeVestkysten | JV.dk | jv.dk -''' - - -class WwwJv_dk(BasicNewsRecipe): - __author__ = 'CoderAllan.github.com' - title = 'JydskeVestkysten | JV.dk | jv.dk' - description = 'JydskeVestkysten' - category = 'newspaper, news, localnews, lifestyle, culture, Denmark' - oldest_article = 7 - max_articles_per_feed = 25 - auto_cleanup = True - language = 'da' - - feeds = [ - ('Nyheder', 'http://www.jv.dk/rss/nyheder'), - ('Indland', 'http://www.jv.dk/rss/indland'), - ('Udland', 'http://www.jv.dk/rss/udland'), - ('Kultur', 'http://www.jv.dk/rss/kultur'), - ('Livsstil', 'http://www.jv.dk/rss/livsstil'), - ('Hus & Have', 'http://www.jv.dk/rss/husoghave'), - ('Billund', 'http://www.jv.dk/rss/billund'), - ('Esbjerg', 'http://www.jv.dk/rss/esbjerg'), - ('Haderslev', 'http://www.jv.dk/rss/haderslev'), - ('Kolding', 'http://www.jv.dk/rss/kolding'), - ('Sønderborg', 'http://www.jv.dk/rss/soenderborg'), - ('Skjern-Tarm', 'http://www.jv.dk/rss/tarm'), - ('Tønder', 'http://www.jv.dk/rss/toender'), - ('Varde', 'http://www.jv.dk/rss/varde'), - ('Vejen', 'http://www.jv.dk/rss/vejen'), - ('Aabenraa', 'http://www.jv.dk/rss/aabenraa'), - - ] - diff --git a/recipes/kahokushinpo.recipe b/recipes/kahokushinpo.recipe deleted file mode 100644 index 870af4b04e..0000000000 --- a/recipes/kahokushinpo.recipe +++ /dev/null @@ -1,25 +0,0 @@ -__license__ = 'GPL v3' -__copyright__ = '2010,2014, Hiroshi Miura ' -''' -www.kahoku.co.jp -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class KahokuShinpoNews(BasicNewsRecipe): - title = u'\u6cb3\u5317\u65b0\u5831' - __author__ = 'Hiroshi Miura' - oldest_article = 2 - max_articles_per_feed = 20 - description = 'Tohoku regional news paper in Japan' - publisher = 'Kahoku Shinpo Sha' - category = 'news, japan' - language = 'ja' - encoding = 'Shift_JIS' - no_stylesheets = True - - feeds = [(u'news', u'http://www.kahoku.co.jp/rss/index_thk.xml')] - - keep_only_tags = [{'class': "category"}, {'class': "ttl"}, { - 'class': 'photoimg'}, {'class': "txt"}, {'class': "data"}] diff --git a/recipes/kaloeviglokalavisen_dk.recipe b/recipes/kaloeviglokalavisen_dk.recipe deleted file mode 100644 index a083e9f8c8..0000000000 --- a/recipes/kaloeviglokalavisen_dk.recipe +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env python -# vim:fileencoding=utf-8 -# https://manual.calibre-ebook.com/news_recipe.html -from __future__ import absolute_import, division, print_function, unicode_literals - -from calibre.web.feeds.news import BasicNewsRecipe - -''' -Lokalavisen Kalø Vig -''' - - -class KaloevigLokalavisen_dk(BasicNewsRecipe): - __author__ = 'CoderAllan.github.com' - title = 'Lokalavisen Kalø Vig' - description = 'Lokale og regionale nyheder, sport og kultur fra Hornslet og omegn på kaloevig.lokalavisen.dk' - category = 'newspaper, news, localnews, sport, culture, Denmark' - oldest_article = 7 - max_articles_per_feed = 50 - auto_cleanup = True - language = 'da' - - feeds = [ - ('Seneste nyt fra Lokalavisen Kalø Vig', 'http://kaloevig.lokalavisen.dk/section/senestenytrss'), - ('Seneste lokale nyheder fra Lokalavisen Kalø Vig', 'http://kaloevig.lokalavisen.dk/section/senestelokalenyhederrss'), - ('Seneste sport fra Lokalavisen Kalø Vig', 'http://kaloevig.lokalavisen.dk/section/senestesportrss'), - ('Seneste 112 nyheder fra Lokalavisen Kalø Vig', 'http://kaloevig.lokalavisen.dk/section/seneste112rss'), - ('Seneste kultur nyheder fra Lokalavisen Kalø Vig', 'http://kaloevig.lokalavisen.dk/section/senestekulturrss'), - ('Seneste læserbreve fra Lokalavisen Kalø Vig', 'http://kaloevig.lokalavisen.dk/section/senestelaeserbreverss'), - - ] - diff --git a/recipes/kamikaze.recipe b/recipes/kamikaze.recipe deleted file mode 100644 index 8153c5ac96..0000000000 --- a/recipes/kamikaze.recipe +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -__license__ = 'GPL v3' -__copyright__ = u'2011, Silviu Cotoar\u0103' -''' -kamikazeonline.ro -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class Kamikaze(BasicNewsRecipe): - title = u'Kamikaze' - __author__ = u'Silviu Cotoar\u0103' - description = u'S\u0103pt\u0103m\u00e2nal sc\u0103pat de sub control' - publisher = 'Kamikaze' - oldest_article = 5 - language = 'ro' - max_articles_per_feed = 100 - no_stylesheets = True - use_embedded_content = False - category = 'Ziare,Reviste' - encoding = 'utf-8' - cover_url = 'http://www.kamikazeonline.ro/wp-content/themes/kamikaze/images/kamikazeonline_header.gif' - - conversion_options = { - 'comments': description, 'tags': category, 'language': language, 'publisher': publisher - } - - keep_only_tags = [ - dict(name='div', attrs={'id': 'content'}) - ] - - remove_tags = [ - dict(name='div', attrs={'class': ['connect_confirmation_cell connect_confirmation_cell_no_like']}), dict(name='h3', attrs={ - 'id': ['comments']}), dict(name='ul', attrs={'class': ['addtoany_list']}), dict(name='p', attrs={'class': ['postmetadata']}) - ] - - remove_tags_after = [ - dict(name='p', attrs={'class': ['postmetadata']}) - ] - - feeds = [ - (u'Feeds', u'http://www.kamikazeonline.ro/feed/') - ] - - def preprocess_html(self, soup): - return self.adeify_images(soup) diff --git a/recipes/karsi_gazete.recipe b/recipes/karsi_gazete.recipe deleted file mode 100644 index 8c2115d46e..0000000000 --- a/recipes/karsi_gazete.recipe +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env python -# vim:fileencoding=utf-8 -from __future__ import absolute_import, division, print_function, unicode_literals - -from calibre.web.feeds.news import BasicNewsRecipe - - -class AdvancedUserRecipe1441607918(BasicNewsRecipe): - title = 'Karsi Gazete' - __author__ = 'Voltran' - language = 'tr' - oldest_article = 1 - max_articles_per_feed = 100 - auto_cleanup = True - - feeds = [ - ('G\xfcndem', 'http://www.karsigazete.com.tr/rss/post/1.xml'), - ('Yazarlar', 'http://www.karsigazete.com.tr/rss/columnist'), - ('Bilim & Teknoloji', 'http://www.karsigazete.com.tr/rss/post/4.xml'), - ('Asayi\u015f', 'http://www.karsigazete.com.tr/rss/post/23.xml'), - ('\xc7evre', 'http://www.karsigazete.com.tr/rss/post/17.xml'), - ('D\xfcnya', 'http://www.karsigazete.com.tr/rss/post/2.xml'), - ('E\u011fitim', 'http://www.karsigazete.com.tr/rss/post/10.xml'), - ('Ekonomi', 'http://www.karsigazete.com.tr/rss/post/3.xml'), - ('Genel', 'http://www.karsigazete.com.tr/rss/post/18.xml'), - ('Kad\u0131n', 'http://www.karsigazete.com.tr/rss/post/12.xml'), - ('K\xfclt\xfcr & Sanat', 'http://www.karsigazete.com.tr/rss/post/6.xml'), - ('Magazin', 'http://www.karsigazete.com.tr/rss/post/20.xml'), - ('Politika', 'http://www.karsigazete.com.tr/rss/post/22.xml'), - ('R\xf6portaj', 'http://www.karsigazete.com.tr/rss/post/11.xml'), - ('Sa\u011fl\u0131k', 'http://www.karsigazete.com.tr/rss/post/8.xml'), - ('Spor', 'http://www.karsigazete.com.tr/rss/post/5.xml'), - ('Televizyon', 'http://www.karsigazete.com.tr/rss/post/26.xml'), - ('Ya\u015fam', 'http://www.karsigazete.com.tr/rss/post/7.xml'), - ] diff --git a/recipes/kathemerini.recipe b/recipes/kathemerini.recipe deleted file mode 100644 index a4c4b522f2..0000000000 --- a/recipes/kathemerini.recipe +++ /dev/null @@ -1,68 +0,0 @@ -from calibre.web.feeds.recipes import BasicNewsRecipe - - -class Kathimerini(BasicNewsRecipe): - title = 'Kathimerini' - __author__ = 'jenniepet' - description = 'News from Greece' - max_articles_per_feed = 100 - oldest_article = 1 - publisher = 'Kathimerini' - category = 'news, GR' - language = 'el' - encoding = 'utf-8' - conversion_options = {'linearize_tables': True} - no_stylesheets = True - remove_tags_before = dict(id='site-body') - remove_tags_after = [dict(id='social')] - remove_tags = [ - dict(attrs={'class': ['post-tools', 'edition edition_PRINT']})] -# to remove images comment the line above and uncomment the line below -# remove_tags = [dict(attrs={'class':['post-tools', 'edition edition_PRINT', 'clearing-featured-img']})] - -# Categories In order of Appearance: Politics-1-2-3, Greece-1-2, World-1-2, People-Specials -# Greek Economy-1-2, Business, International Economy, Real Estate - feeds = [( - u'\u03A0\u03BF\u03BB\u03B9\u03C4\u03B9\u03BA\u03AE', 'http://www.kathimerini.gr/rss?i=news.el.search&q=&t=0&w=&c=&s=p&cat=2&type=&edition=PRINT&author=0&fromDate=&toDate='), # noqa - (u'\u03A0\u03BF\u03BB\u03B9\u03C4\u03B9\u03BA\u03AE 2', - 'http://www.kathimerini.gr/rss?i=news.el.search&q=&t=0&w=&c=&s=p&cat=2&type=&edition=PRINT&author=0&fromDate=&toDate=&page=1'), - (u'\u03A0\u03BF\u03BB\u03B9\u03C4\u03B9\u03BA\u03AE 3', - 'http://www.kathimerini.gr/rss?i=news.el.search&q=&t=0&w=&c=&s=p&cat=2&type=&edition=PRINT&author=0&fromDate=&toDate=&page=2'), - (u'\u0395\u03BB\u03BB\u03AC\u03B4\u03B1', - 'http://www.kathimerini.gr/rss?i=news.el.search&q=&t=0&w=&c=&s=p&cat=4&type=&edition=PRINT&author=0&fromDate=&toDate='), - (u'\u0395\u03BB\u03BB\u03AC\u03B4\u03B1 2', - 'http://www.kathimerini.gr/rss?i=news.el.search&q=&t=0&w=&c=&s=p&cat=4&type=&edition=PRINT&author=0&fromDate=&toDate=&page=1'), - (u'\u039A\u03CC\u03C3\u03BC\u03BF\u03C2', - 'http://www.kathimerini.gr/rss?i=news.el.search&q=&t=0&w=&c=&s=p&cat=5&type=&edition=PRINT&author=0&fromDate=&toDate='), - (u'\u039A\u03CC\u03C3\u03BC\u03BF\u03C2 2', - 'http://www.kathimerini.gr/rss?i=news.el.search&q=&t=0&w=&c=&s=p&cat=5&type=&edition=PRINT&author=0&fromDate=&toDate=&page=1'), - (u'\u03A0\u03C1\u03CC\u03C3\u03C9\u03C0\u03B1', - 'http://www.kathimerini.gr/rss?i=news.el.search&q=&t=0&w=&c=&s=p&cat=41&cat=42&cat=43&cat=24&cat=25&type=&edition=PRINT&author=0&fromDate=&toDate='), - (u'\u0395\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AE \u039F\u03B9\u03BA\u03BF\u03BD\u03BF\u03BC\u03AF\u03B1', - 'http://www.kathimerini.gr/rss?i=news.el.search&q=&t=0&w=&c=&s=p&cat=17&type=&edition=PRINT&author=0&fromDate=&toDate='), - (u'\u0395\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AE \u039F\u03B9\u03BA\u03BF\u03BD\u03BF\u03BC\u03AF\u03B1 2', - 'http://www.kathimerini.gr/rss?i=news.el.search&q=&t=0&w=&c=&s=p&cat=17&type=&edition=PRINT&author=0&fromDate=&toDate=&page=1'), - (u'\u0395\u03C0\u03B9\u03C7\u03B5\u03B9\u03C1\u03AE\u03C3\u03B5\u03B9\u03C2', - 'http://www.kathimerini.gr/rss?i=news.el.search&q=&t=0&w=&c=&s=p&cat=18&type=&edition=PRINT&author=0&fromDate=&toDate='), - (u'\u0394\u03B9\u03B5\u03B8\u03BD\u03AE\u03C2 \u039F\u03B9\u03BA\u03BF\u03BD\u03BF\u03BC\u03AF\u03B1', - 'http://www.kathimerini.gr/rss?i=news.el.search&q=&t=0&w=&c=&s=p&cat=19&type=&edition=PRINT&author=0&fromDate=&toDate='), - (u'Real Estate', 'http://www.kathimerini.gr/rss?i=news.el.search&q=&t=0&w=&c=&s=p&cat=21&type=&edition=PRINT&author=0&fromDate=&toDate='), - (u'\u03A0\u03B5\u03C1\u03B9\u03B2\u03AC\u03BB\u03BB\u03BF\u03BD', - 'http://www.kathimerini.gr/rss?i=news.el.search&q=&t=0&w=&c=&s=p&cat=6&type=&edition=PRINT&author=0&fromDate=&toDate='), - (u'\u0395\u03C0\u03B9\u03C3\u03C4\u03AE\u03BC\u03B7', - 'http://www.kathimerini.gr/rss?i=news.el.search&q=&t=0&w=&c=&s=p&cat=7&type=&edition=PRINT&author=0&fromDate=&toDate='), - (u'\u03A4\u03B5\u03C7\u03BD\u03BF\u03BB\u03BF\u03B3\u03AF\u03B1', - 'http://www.kathimerini.gr/rss?i=news.el.search&q=&t=0&w=&c=&s=p&cat=47&cat=48&cat=49&cat=50&cat=51&type=&edition=PRINT&author=0&fromDate=&toDate='), - (u'\u03A0\u03BF\u03BB\u03B9\u03C4\u03B9\u03C3\u03BC\u03CC\u03C2', - 'http://www.kathimerini.gr/rss?i=news.el.search&q=&t=0&w=&c=&s=p&cat=31&cat=32&cat=33&cat=34&cat=35&cat=36&cat=37&cat=38&cat=39&type=&edition=PRINT&author=0&fromDate=&toDate='), # noqa - (u'\u03A0\u03BF\u03BB\u03B9\u03C4\u03B9\u03C3\u03BC\u03CC\u03C2 2', - 'http://www.kathimerini.gr/rss?i=news.el.search&q=&t=0&w=&c=&s=p&cat=31&cat=32&cat=33&cat=34&cat=35&cat=36&cat=37&cat=38&cat=39&type=&edition=PRINT&author=0&fromDate=&toDate=&page=1'), # noqa - (u'\u03A4\u03B1\u03BE\u03AF\u03B4\u03B9\u03B1', - 'http://www.kathimerini.gr/rss?i=news.el.search&q=&t=0&w=&c=&s=p&cat=11&cat=10&cat=12&cat=14&cat=15&cat=13&type=&edition=PRINT&author=0&fromDate=&toDate='), # noqa - (u'\u0391\u03B8\u03BB\u03B7\u03C4\u03B9\u03C3\u03BC\u03CC\u03C2', - 'http://www.kathimerini.gr/rss?i=news.el.search&q=&t=0&w=&c=&s=p&cat=3&type=&edition=PRINT&author=0&fromDate=&toDate=') - ] - - def get_cover_url(self): - import time - return 'http://s.kathimerini.gr/resources/issue-cover/%s.jpg' % time.strftime('%d-%m-%Y') diff --git a/recipes/kellog_insight.recipe b/recipes/kellog_insight.recipe deleted file mode 100644 index 955b530d8e..0000000000 --- a/recipes/kellog_insight.recipe +++ /dev/null @@ -1,52 +0,0 @@ -#!/usr/bin/env python -# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai -from __future__ import with_statement - -__license__ = 'GPL v3' -__copyright__ = '2009, Kovid Goyal ' -__docformat__ = 'restructuredtext en' - - -from calibre.web.feeds.news import BasicNewsRecipe - - -class KellogInsight(BasicNewsRecipe): - - title = 'Kellog Insight' - __author__ = 'Kovid Goyal and Sujata Raman' - description = 'Articles from the Kellog School of Management' - no_stylesheets = True - encoding = 'utf-8' - language = 'en' - auto_cleanup = True - use_embedded_content = False - - oldest_article = 60 - - extra_css = ''' - h1{font-family:arial; font-size:medium; color:#333333;} - .col-one{font-family:arial; font-size:xx-small;} - .col-two{font-family:arial; font-size:x-small; } - h2{font-family:arial; font-size:small; color:#666666;} - h3{font-family:arial; font-size:small; color:#333333;text-transform: uppercase; font-weight:normal;} - h4{color:#660000;font-family:arial; font-size:x-small;} - .col-two-text{font-family:arial; font-size:x-small; color:#333333;} - ''' - - feeds = [ - ('Articles', 'http://insight.kellogg.northwestern.edu/index.php/Kellogg/RSS')] - - def get_article_url(self, article): - # Get only article not blog links - link = BasicNewsRecipe.get_article_url(self, article) - if link and '/article/' in link: - return link - self.log('Skipping non-article', link) - return None - - def preprocess_html(self, soup): - - for tag in soup.findAll(name=['span']): - tag.nextSibling.name = 'h4' - - return soup diff --git a/recipes/kerrang.recipe b/recipes/kerrang.recipe deleted file mode 100644 index ca245dc95c..0000000000 --- a/recipes/kerrang.recipe +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env python - -__license__ = 'GPL v3' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class kerrang(BasicNewsRecipe): - title = u'Kerrang!' - __author__ = 'Artur Stachecki ' - language = 'en_GB' - description = u'UK-based magazine devoted to rock music published by Bauer Media Group' - oldest_article = 7 - masthead_url = 'http://images.kerrang.com/design/kerrang/kerrangsite/logo.gif' - max_articles_per_feed = 100 - simultaneous_downloads = 5 - remove_javascript = True - no_stylesheets = True - use_embedded_content = False - recursions = 0 - - keep_only_tags = [] - keep_only_tags.append(dict(attrs={'class': ['headz', 'blktxt']})) - - extra_css = ''' img { display: block; margin-right: auto;} - h1 {text-align: left; font-size: 22px;}''' - - feeds = [(u'News', u'http://www.kerrang.com/blog/rss.xml')] - - def preprocess_html(self, soup): - for alink in soup.findAll('a'): - if alink.string is not None: - tstr = alink.string - alink.replaceWith(tstr) - return soup diff --git a/recipes/kgsenghavebladet_dk.recipe b/recipes/kgsenghavebladet_dk.recipe deleted file mode 100644 index 2cda9bd779..0000000000 --- a/recipes/kgsenghavebladet_dk.recipe +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env python -# vim:fileencoding=utf-8 -# https://manual.calibre-ebook.com/news_recipe.html -from __future__ import absolute_import, division, print_function, unicode_literals - -from calibre.web.feeds.news import BasicNewsRecipe - -''' -Kgs. Enghave Bladet -''' - - -class KgsEnghaveBladet_dk(BasicNewsRecipe): - __author__ = 'CoderAllan.github.com' - title = 'Kgs. Enghave Bladet' - description = 'lokalavisen med alle dine lokale nyheder' - category = 'newspaper, news, localnews, sport, culture, Denmark' - oldest_article = 7 - max_articles_per_feed = 50 - auto_cleanup = True - language = 'da' - - feeds = [ - ('Kgs. Enghave Bladet', 'http://minby.dk/kgs-enghave-bladet/feed/'), - ('Kommentarer til Kgs. Enghave Bladet', 'http://minby.dk/kgs-enghave-bladet/comments/feed/'), - - ] - diff --git a/recipes/kholod.recipe b/recipes/kholod.recipe deleted file mode 100644 index e2af0a55e2..0000000000 --- a/recipes/kholod.recipe +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env python -# vim:fileencoding=utf-8 - -from calibre.web.feeds.news import BasicNewsRecipe - - -class Kholod(BasicNewsRecipe): - title = u'\u0425\u043E\u043B\u043E\u0434' - description = u'\u0418\u0441\u0442\u043E\u0440\u0438\u0438 \u043E \u0420\u043E\u0441\u0441\u0438\u0438: \u043C\u044B \u0438\u0449\u0435\u043C \u0437\u0430\u0445\u0432\u0430\u0442\u044B\u0432\u0430\u044E\u0449\u0438\u0435 \u0438\u0441\u0442\u043E\u0440\u0438\u0438 \u043F\u043E \u0432\u0441\u0435\u0439 \u0420\u043E\u0441\u0441\u0438\u0438, \u0430 \u043F\u043E\u0442\u043E\u043C \u0440\u0430\u0441\u0441\u043A\u0430\u0437\u044B\u0432\u0430\u0435\u043C \u0432\u0430\u043C.' # noqa - __author__ = 'bugmen00t' - publisher = '\u0422\u0430\u0438\u0441\u0438\u044F \u0411\u0435\u043A\u0431\u0443\u043B\u0430\u0442\u043E\u0432\u0430' - publication_type = 'blog' - oldest_article = 14 - max_articles_per_feed = 200 - language = 'ru' - cover_url = 'https://image.simplecastcdn.com/images/93a97011-6988-4787-8242-e202b2840fde/08e85f64-9901-44e1-b20c-7da01c5ce0c0/holodpodcastlogo.jpg' - auto_cleanup = False - no_stylesheets = False - - remove_tags_before = dict(name='h1') - - remove_tags_after = dict( - name='div', attrs={'class': 'article__content the-content text-column'} - ) - - remove_tags = [dict(name='div', attrs={'class': 'inlinemore'})] - - feeds = [( - u'\u0410\u043A\u0442\u0443\u0430\u043B\u044C\u043D\u043E', - 'https://holod.media/sections/daily/feed/' - ), - ( - u'\u0418\u0441\u0442\u043E\u0440\u0438\u0438', - 'https://holod.media/sections/stories/feed/' - ), - ( - u'\u041C\u043D\u0435\u043D\u0438\u044F', - 'https://holod.media/sections/opinions/feed/' - ), - ( - u'\u0418\u043D\u0442\u0435\u0440\u0432\u044C\u044E', - 'https://holod.media/sections/interviews/feed/' - ), - ( - u'\u041E\u0431\u044A\u044F\u0441\u043D\u044F\u0435\u043C', - 'https://holod.media/sections/explainers/feed/' - )] diff --git a/recipes/kholod_en.recipe b/recipes/kholod_en.recipe deleted file mode 100644 index 3224a51da5..0000000000 --- a/recipes/kholod_en.recipe +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env python -# vim:fileencoding=utf-8 - -from calibre.web.feeds.news import BasicNewsRecipe - - -class Kholod(BasicNewsRecipe): - title = u'Holod Media' - description = u'Internet media whose authors search for exciting stories all over Russia and then tell them to readers.' - __author__ = 'bugmen00t' - publisher = 'Taisiya Bekbulatova' - publication_type = 'blog' - oldest_article = 60 - max_articles_per_feed = 100 - language = 'en_RU' - cover_url = 'https://image.simplecastcdn.com/images/93a97011-6988-4787-8242-e202b2840fde/08e85f64-9901-44e1-b20c-7da01c5ce0c0/holodpodcastlogo.jpg' - auto_cleanup = False - no_stylesheets = False - - remove_tags_before = dict(name='h1') - - remove_tags_after = dict( - name='div', attrs={'class': 'article__content the-content text-column'} - ) - - remove_tags = [dict(name='div', attrs={'class': 'inlinemore'})] - - feeds = [(u'Holod Media', 'https://holod.media/en/feed/'), - (u'Opinion', 'https://holod.media/en/sections/opinion/feed/'), - (u'Q&A', 'https://holod.media/en/sections/qa/feed/'), - (u'Magazine', 'https://holod.media/en/sections/magazine/feed/')] diff --git a/recipes/kidney.recipe b/recipes/kidney.recipe deleted file mode 100644 index 4048dcbc1c..0000000000 --- a/recipes/kidney.recipe +++ /dev/null @@ -1,115 +0,0 @@ -# -*- coding: utf-8 -*- - -import time - -from calibre.ebooks.BeautifulSoup import BeautifulSoup -from calibre.web.feeds.recipes import BasicNewsRecipe - - -class JASN(BasicNewsRecipe): - title = u'Journal of the American Society of Nephrology' - language = 'en' - __author__ = 'Krittika Goyal' - oldest_article = 31 # days - max_articles_per_feed = 25 - delay = 5 - needs_subscription = True - - INDEX = 'http://jasn.asnjournals.org/current.shtml' - no_stylesheets = True - remove_tags_before = dict(name='h2') - remove_tags = [ - dict(name='iframe'), - dict(name='td', attrs={'id': ['jasnFooter']}), - dict(name='table', attrs={'id': "jasnNavBar"}), - dict(name='table', attrs={'class': 'content_box_outer_table'}), - dict(name='th', attrs={'align': 'left'}) - ] - - # TO LOGIN - def get_browser(self): - br = BasicNewsRecipe.get_browser(self) - self.kidney_toc_soup = BeautifulSoup(br.open(self.INDEX).read()) - toc = self.kidney_toc_soup.find(id='tocTable') - t = toc.find(text=lambda x: x and '[Full Text]' in x) - a = t.findParent('a', href=True) - url = a.get('href') - if url.startswith('/'): - url = 'http://jasn.asnjournals.org' + url - br.open(url) - br.select_form(name='UserSignIn') - br['username'] = self.username - br['code'] = self.password - response = br.submit() - raw = response.read() - if b'Sign Out' not in raw: - raise ValueError('Failed to log in, is your account expired?') - return br - - # TO GET ARTICLE TOC - def jasn_get_index(self): - return self.index_to_soup('http://jasn.asnjournals.org/current.shtml') - - # To parse article toc - def parse_index(self): - parse_soup = self.jasn_get_index() - - div = parse_soup.find(id='tocBody') - - current_section = None - current_articles = [] - feeds = [] - for x in div.findAll(True): - if x.name == 'h2': - # Section heading found - if current_articles and current_section: - feeds.append((current_section, current_articles)) - current_section = self.tag_to_string(x) - current_articles = [] - self.log('\tFound section:', current_section) - if current_section is not None and x.name == 'strong': - title = self.tag_to_string(x) - a = x.parent.parent.find( - 'a', href=lambda x: x and '/full/' in x) - if a is None: - continue - url = a.get('href', False) - if not url or not title: - continue - if url.startswith('/'): - url = 'http://jasn.asnjournals.org' + url - self.log('\t\tFound article:', title) - self.log('\t\t\t', url) - current_articles.append({'title': title, 'url': url, - 'description': '', 'date': ''}) - - if current_articles and current_section: - feeds.append((current_section, current_articles)) - - return feeds - - def preprocess_html(self, soup): - for a in soup.findAll(text=lambda x: x and '[in this window]' in x): - a = a.findParent('a') - url = a.get('href', None) - if not url: - continue - if url.startswith('/'): - url = 'http://jasn.asnjournals.org' + url - img = isoup = None - try: - isoup = self.index_to_soup(url) - except: - time.sleep(5) - try: - isoup = self.index_to_soup(url) - except: - continue - img = isoup.find( - 'img', src=lambda x: x and x.startswith('/content/')) - - if img is not None: - img.extract() - table = a.findParent('table') - table.replaceWith(img) - return soup diff --git a/recipes/kitsapun.recipe b/recipes/kitsapun.recipe deleted file mode 100644 index 55b9e5c4cd..0000000000 --- a/recipes/kitsapun.recipe +++ /dev/null @@ -1,31 +0,0 @@ - -__license__ = 'GPL v3' -__copyright__ = '2010, Darko Miletic ' -''' -www.kitsapun.com -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class Kitsapsun(BasicNewsRecipe): - title = 'Kitsap Sun' - __author__ = 'Darko Miletic' - description = 'News from Kitsap County' - publisher = 'Scripps Interactive Newspapers Group' - category = 'news, Kitsap county, USA' - language = 'en' - oldest_article = 7 - max_articles_per_feed = 50 - no_stylesheets = True - encoding = 'cp1252' - use_embedded_content = False - auto_cleanup = True - - feeds = [(u'News', u'http://www.kitsapsun.com/feeds/rss/news'), - (u'Sports', u'http://www.kitsapsun.com/feeds/rss/sports'), - (u'Entertainment', - u'http://www.kitsapsun.com/feeds/rss/entertainment'), - (u'Lifestyles', u'http://www.kitsapsun.com/feeds/rss/lifestyle'), - (u'Opinion', u'http://www.kitsapsun.com/feeds/rss/opinion'), - ] diff --git a/recipes/klubknjige.recipe b/recipes/klubknjige.recipe deleted file mode 100644 index c653036ac1..0000000000 --- a/recipes/klubknjige.recipe +++ /dev/null @@ -1,41 +0,0 @@ - -__license__ = 'GPL v3' -__copyright__ = '2012, Darko Miletic ' -''' -klub-knjige.blogspot.com -''' - -import re - -from calibre.web.feeds.news import BasicNewsRecipe - - -class KlubKnjige(BasicNewsRecipe): - title = 'Klub knjige' - __author__ = 'Darko Miletic' - description = 'literarni blog' - oldest_article = 30 - max_articles_per_feed = 100 - language = 'sr' - encoding = 'utf-8' - no_stylesheets = True - use_embedded_content = True - publication_type = 'blog' - extra_css = """ - @font-face {font-family: "sans1";src:url(res:///opt/sony/ebook/FONT/tt0003m_.ttf)} - body{font-family: Arial,Tahoma,Helvetica,FreeSans,sans1,sans-serif} - img{margin-bottom: 0.8em; border: 1px solid #333333; padding: 4px } - """ - - conversion_options = { - 'comment': description, 'tags': 'knjige, blog, srbija, sf', 'publisher': 'Klub Knjige', 'language': language - } - - preprocess_regexps = [(re.compile(u'\u0110'), lambda match: u'\u00D0')] - - feeds = [(u'Posts', u'http://klub-knjige.blogspot.com/feeds/posts/default')] - - def preprocess_html(self, soup): - for item in soup.findAll(style=True): - del item['style'] - return self.adeify_images(soup) diff --git a/recipes/km_blog.recipe b/recipes/km_blog.recipe deleted file mode 100644 index 545d27d6a2..0000000000 --- a/recipes/km_blog.recipe +++ /dev/null @@ -1,29 +0,0 @@ - -__license__ = 'GPL v3' -__author__ = 'teepel , Artur Stachecki ' - -''' -korwin-mikke.pl/blog -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class km_blog(BasicNewsRecipe): - title = u'Korwin-Mikke Blog' - __author__ = 'teepel ' - language = 'pl' - description = 'Wiadomości z bloga korwin-mikke.pl/blog' - INDEX = 'https://korwin-mikke.pl/blog' - remove_empty_feeds = True - oldest_article = 7 - max_articles_per_feed = 100 - remove_javascript = True - no_stylesheets = True - remove_empty_feeds = True - - feeds = [(u'blog', u'https://korwin-mikke.pl/blog/rss')] - - keep_only_tags = [dict(name='div', attrs={'class': ['header-standard header-classic single-header', 'post-image', 'post-entry blockquote-style-1']})] - - remove_tags = [dict(name='div', attrs={'class': 'penci-hide-tagupdated'})] diff --git a/recipes/knack_be.recipe b/recipes/knack_be.recipe deleted file mode 100644 index 167d1ed75a..0000000000 --- a/recipes/knack_be.recipe +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env python - -from calibre.web.feeds.news import BasicNewsRecipe - - -class KnackBE(BasicNewsRecipe): - title = u'Knack.be' - __author__ = u'erkfuizfeuadjfjzefzfuzeff' - description = u'News from Belgium in Dutch' - oldest_article = 7 - language = 'nl_BE' - - max_articles_per_feed = 100 - no_stylesheets = True - use_embedded_content = False - - keep_only_tags = [ - dict(name='title'), dict(name='h1', attrs={'itemprop': 'name'}), - dict(name='figure', attrs={'class': 'image'}), - dict(name='p', attrs={'class': 'lead'}), - dict(name='div', attrs={'class': 'article-body span8'}) - ] - - remove_tags = [ - dict(name='div', attrs={'class': 'Paywall'}), - dict(name='div', attrs={'class': 'teaser header-opinion'}) - ] - - feeds = [(u'Nieuws', u'http://www.knack.be/nieuws/feed.rss'), - (u'België', u'http://www.knack.be/nieuws/belgie/feed.rss'), - (u'Wetenschap', u'http://www.knack.be/nieuws/wetenschap/feed.rss'), - (u'Planet Earth', u'http://www.knack.be/nieuws/planet-earth/feed.rss'), - (u'Mensen', u'http://www.knack.be/nieuws/mensen/feed.rss'), - (u'Boeken', u'http://www.knack.be/nieuws/boeken/feed.rss'), - (u'Opinie', u'http://www.knack.be/nieuws/opinie/feed.rss'), - (u'Wereld', u'http://www.knack.be/nieuws/wereld/feed.rss'), - (u'Gezondheid', u'http://www.knack.be/nieuws/gezondheid/feed.rss'), - (u'Auto', u'http://www.knack.be/nieuws/auto/feed.rss'), - (u'Ondertussen', u'http://www.knack.be/nieuws/ondertussen/feed.rss')] diff --git a/recipes/koegelokalavisen_dk.recipe b/recipes/koegelokalavisen_dk.recipe deleted file mode 100644 index a43f4c78e7..0000000000 --- a/recipes/koegelokalavisen_dk.recipe +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env python -# vim:fileencoding=utf-8 -# https://manual.calibre-ebook.com/news_recipe.html -from __future__ import absolute_import, division, print_function, unicode_literals - -from calibre.web.feeds.news import BasicNewsRecipe - -''' -Lørdagsavisen -''' - - -class KoegeLokalavisen_dk(BasicNewsRecipe): - __author__ = 'CoderAllan.github.com' - title = 'Lørdagsavisen' - description = 'Lokale, regionale nyheder, bolig, motor og job i Køge, Greve, Ringsted og Stevns på koege.lokalavisen.dk' - category = 'newspaper, news, localnews, sport, culture, Denmark' - oldest_article = 7 - max_articles_per_feed = 50 - auto_cleanup = True - language = 'da' - - feeds = [ - ('Seneste nyt fra Lørdagsavisen', 'http://koege.lokalavisen.dk/section/senestenytrss'), - ('Seneste lokale nyheder fra Lørdagsavisen', 'http://koege.lokalavisen.dk/section/senestelokalenyhederrss'), - ('Seneste sport fra Lørdagsavisen', 'http://koege.lokalavisen.dk/section/senestesportrss'), - ('Seneste 112 nyheder fra Lørdagsavisen', 'http://koege.lokalavisen.dk/section/seneste112rss'), - ('Seneste kultur nyheder fra Lørdagsavisen', 'http://koege.lokalavisen.dk/section/senestekulturrss'), - ('Seneste læserbreve fra Lørdagsavisen', 'http://koege.lokalavisen.dk/section/senestelaeserbreverss'), - - ] - diff --git a/recipes/koldinglokalavisen_dk.recipe b/recipes/koldinglokalavisen_dk.recipe deleted file mode 100644 index e57397e607..0000000000 --- a/recipes/koldinglokalavisen_dk.recipe +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env python -# vim:fileencoding=utf-8 -# https://manual.calibre-ebook.com/news_recipe.html -from __future__ import absolute_import, division, print_function, unicode_literals - -from calibre.web.feeds.news import BasicNewsRecipe - -''' -Lokalavisen Kolding -''' - - -class KoldingLokalavisen_dk(BasicNewsRecipe): - __author__ = 'CoderAllan.github.com' - title = 'Lokalavisen Kolding' - description = 'Lokale og regionale nyheder, sport, kultur fra Kolding og omegn på kolding.lokalavisen.dk' - category = 'newspaper, news, localnews, sport, culture, Denmark' - oldest_article = 7 - max_articles_per_feed = 50 - auto_cleanup = True - language = 'da' - - feeds = [ - ('Seneste nyt fra Lokalavisen Kolding', 'http://kolding.lokalavisen.dk/section/senestenytrss'), - ('Seneste lokale nyheder fra Lokalavisen Kolding', 'http://kolding.lokalavisen.dk/section/senestelokalenyhederrss'), - ('Seneste sport fra Lokalavisen Kolding', 'http://kolding.lokalavisen.dk/section/senestesportrss'), - ('Seneste 112 nyheder fra Lokalavisen Kolding', 'http://kolding.lokalavisen.dk/section/seneste112rss'), - ('Seneste kultur nyheder fra Lokalavisen Kolding', 'http://kolding.lokalavisen.dk/section/senestekulturrss'), - ('Seneste læserbreve fra Lokalavisen Kolding', 'http://kolding.lokalavisen.dk/section/senestelaeserbreverss'), - - ] - diff --git a/recipes/komchadluek.recipe b/recipes/komchadluek.recipe deleted file mode 100644 index e05afe4eae..0000000000 --- a/recipes/komchadluek.recipe +++ /dev/null @@ -1,66 +0,0 @@ -from calibre.web.feeds.recipes import BasicNewsRecipe - - -class KomChadLuek(BasicNewsRecipe): - - title = 'KomChadLuek' - description = 'Komchadluek News' - __author__ = 'ballsaii and Chotechai' - __license__ = 'GPL v3' - publisher = 'Nation Media Group' - category = 'news, Thai' - language = 'th' - - oldest_article = 1 - max_articles_per_feed = 100 - no_stylesheets = True - remove_javascript = True - - cover_url = 'http://www.komchadluek.net/images_layout2/komchadluek_headerlogo.png' - - keep_only_tags = [] - keep_only_tags.append(dict(name='h2')) - keep_only_tags.append(dict(name='div', attrs={'id': 'news_detail_news'})) - - remove_tags_after = [dict(name='hr')] - - feeds = ( - (u'\u0e01\u0e32\u0e23\u0e40\u0e21\u0e37\u0e2d\u0e07', - 'http://www.komchadluek.net/rss/politic.xml'), - (u'\u0e15\u0e48\u0e32\u0e07\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28', - 'http://www.komchadluek.net/rss/sport.xml'), - (u'\u0e40\u0e01\u0e29\u0e15\u0e23', - 'http://www.komchadluek.net/rss/agriculture.xml'), - (u'\u0e15\u0e48\u0e32\u0e07\u0e1b\u0e23\u0e30\u0e40\u0e17\u0e28', - 'http://www.komchadluek.net/rss/foreign.xml'), - (u'\u0e1a\u0e31\u0e19\u0e40\u0e17\u0e34\u0e07', - 'http://www.komchadluek.net/rss/entertainment.xml'), - (u'\u0e1c\u0e39\u0e49\u0e2b\u0e0d\u0e34\u0e07-\u0e41\u0e1f\u0e0a\u0e31\u0e48\u0e19', - 'http://www.komchadluek.net/rss/fashion.xml'), - (u'\u0e1e\u0e23\u0e30\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07', - 'http://www.komchadluek.net/rss/amulet.xml'), - (u'\u0e20\u0e39\u0e21\u0e34\u0e20\u0e32\u0e04-\u0e1b\u0e23\u0e30\u0e0a\u0e32\u0e04\u0e21\u0e17\u0e49\u0e2d\u0e07\u0e16\u0e34\u0e48\u0e19', - 'http://www.komchadluek.net/rss/local.xml'), - (u'\u0e25\u0e38\u0e07\u0e41\u0e08\u0e48\u0e21', - 'http://www.komchadluek.net/rss/unclecham.xml'), - (u'\u0e44\u0e25\u0e1f\u0e4c\u0e2a\u0e44\u0e15\u0e25\u0e4c', - 'http://www.komchadluek.net/rss/lifestyle.xml'), - (u'\u0e40\u0e28\u0e23\u0e29\u0e10\u0e01\u0e34\u0e08-\u0e01\u0e32\u0e23\u0e15\u0e25\u0e32\u0e14', - 'http://www.komchadluek.net/rss/economic.xml'), - (u'\u0e2d\u0e32\u0e2b\u0e32\u0e23', - 'http://www.komchadluek.net/rss/food.xml'), - (u'\u0e04\u0e19\u0e23\u0e31\u0e01\u0e1a\u0e49\u0e32\u0e19-\u0e22\u0e32\u0e19\u0e22\u0e19\u0e15\u0e4c', - 'http://www.komchadluek.net/rss/homecar.xml'), - (u'\u0e14\u0e39\u0e14\u0e27\u0e07-\u0e42\u0e2b\u0e23\u0e32\u0e28\u0e32\u0e2a\u0e15\u0e23\u0e4c', - 'http://www.komchadluek.net/rss/horoscope.xml'), - (u'\u0e27\u0e34\u0e17\u0e22\u0e4c\u0e28\u0e32\u0e2a\u0e15\u0e23\u0e4c-\u0e44\u0e2d\u0e17\u0e35', - 'http://www.komchadluek.net/rss/scienceit.xml'), - (u'\u0e28\u0e32\u0e2a\u0e19\u0e32 \u0e28\u0e34\u0e25\u0e1b\u0e30-\u0e27\u0e31\u0e12\u0e19\u0e18\u0e23\u0e23\u0e21 \u0e2a\u0e32\u0e18\u0e32\u0e23\u0e13\u0e2a\u0e38\u0e02', # noqa - 'http://www.komchadluek.net/rss/artculture.xml'), - (u'\u0e01\u0e32\u0e23\u0e28\u0e36\u0e01\u0e29\u0e32', - 'http://www.komchadluek.net/rss/education.xml'), - (u'\u0e1a\u0e17\u0e04\u0e27\u0e32\u0e21', - 'http://www.komchadluek.net/rss/article.xml'), - (u'\u0e2d\u0e32\u0e0a\u0e0d\u0e32\u0e01\u0e23\u0e23\u0e21', - 'http://www.komchadluek.net/rss/crime.xml') - ) diff --git a/recipes/kompas.recipe b/recipes/kompas.recipe deleted file mode 100644 index ad9ab3d539..0000000000 --- a/recipes/kompas.recipe +++ /dev/null @@ -1,86 +0,0 @@ -#!/usr/bin/env python -__license__ = 'GPL v3' -__copyright__ = '2011, Adrian Gunawan ' -__author__ = 'Adrian Gunawan' -__version__ = 'v1.0' -__date__ = '02 February 2011' - -''' -http://www.kompas.com/ -''' - -import re - -from calibre.web.feeds.news import BasicNewsRecipe - - -class Kompas(BasicNewsRecipe): - title = u'Kompas' - masthead_url = 'http://stat.k.kidsklik.com/data/2k10/kompascom2011/images/logo_kompas.png' - cover_url = 'http://stat.k.kidsklik.com/data/2k10/kompascom2011/images/logo_kompas.png' - - __author__ = u'Adrian Gunawan' - description = u'Indonesian News from Kompas Online Edition' - category = 'local news, international, business, Indonesia' - language = 'id' - oldest_article = 5 - max_articles_per_feed = 100 - - no_stylesheets = True - use_embedded_content = False - no_javascript = True - remove_empty_feeds = True - - timefmt = ' [%A, %d %B, %Y]' - encoding = 'utf-8' - - keep_only_tags = [dict(name='div', attrs={'class': 'content_kiri_detail'})] - - extra_css = ''' - h1{font-family:Georgia,"Times New Roman",Times,serif; font-weight:bold; font-size:large;} - .cT-storyDetails{font-family:Arial,Helvetica,sans-serif; color:#666666;font-size:x-small;} - .articleBody{font-family:Arial,Helvetica,sans-serif; color:black;font-size:small;} - .cT-imageLandscape{font-family:Arial,Helvetica,sans-serif; color:#333333 ;font-size:x-small;} - .source{font-family:Arial,Helvetica,sans-serif; color:#333333 ;font-size:xx-small;} - #content{font-family:Arial,Helvetica,sans-serif;font-size:x-small;} - .pageprint{font-family:Arial,Helvetica,sans-serif;font-size:small;} - #bylineDetails{font-family:Arial,Helvetica,sans-serif; color:#666666;font-size:x-small;} - .featurePic-wide{font-family:Arial,Helvetica,sans-serif;font-size:x-small;} - #idfeaturepic{font-family:Arial,Helvetica,sans-serif;font-size:x-small;} - h3{font-family:Georgia,"Times New Roman",Times,serif; font-size:small;} - h2{font-family:Georgia,"Times New Roman",Times,serif; font-size:small;} - h4{font-family:Georgia,"Times New Roman",Times,serif; font-size:small;} - h5{font-family:Georgia,"Times New Roman",Times,serif; font-size:small;} - body{font-family:Arial,Helvetica,sans-serif; font-size:x-small;} - ''' - - remove_tags = [ - dict(name='div', attrs={'class': [ - 'c_biru_kompas2011', 'c_abu01_kompas2011', 'c_abu_01_kompas2011', 'right', 'clearit']}), - dict(name='div', attrs={ - 'id': ['comment_list', 'comment_paging', 'share']}), - dict(name='form'), - dict(name='ul'), - ] - - preprocess_regexps = [ - (re.compile(r'.*', - re.DOTALL | re.IGNORECASE), lambda match: ''), - (re.compile(r'Sent Using.*', - re.DOTALL | re.IGNORECASE), lambda match: ''), - (re.compile(r'Kirim Komentar Anda', - re.DOTALL | re.IGNORECASE), lambda match: ''), - (re.compile(r']*>Kembali ke Index Topik Pilihan', - re.DOTALL | re.IGNORECASE), lambda match: ''), - ] - - feeds = [ - (u'Nasional', u'http://www.kompas.com/getrss/nasional'), - (u'Regional', u'http://www.kompas.com/getrss/regional'), - (u'Internasional', u'http://www.kompas.com/getrss/internasional'), - (u'Megapolitan', u'http://www.kompas.com/getrss/megapolitan'), - (u'Bisnis Keuangan', - u'http://www.kompas.com/getrss/bisniskeuangan'), - (u'Kesehatan', u'http://www.kompas.com/getrss/kesehatan'), - (u'Olahraga', u'http://www.kompas.com/getrss/olahraga'), - ] diff --git a/recipes/kotaku.recipe b/recipes/kotaku.recipe deleted file mode 100644 index 917572ff8d..0000000000 --- a/recipes/kotaku.recipe +++ /dev/null @@ -1,39 +0,0 @@ -__license__ = 'GPL v3' -__copyright__ = '2010, NA' -''' -kotaku.com -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class Kotaku(BasicNewsRecipe): - title = 'Kotaku' - __author__ = 'NA' - description = "Kotaku, the Gamer's Guide." - publisher = 'kotaku.com' - category = 'news, games, Internet, xbox 360, playstation 3, tips and tricks' - oldest_article = 2 - max_articles_per_feed = 100 - no_stylesheets = True - encoding = 'utf-8' - use_embedded_content = True - language = 'en' - masthead_url = 'http://cache.gawkerassets.com/assets/kotaku.com/img/logo.png' - extra_css = ''' - body{font-family: "Lucida Grande",Helvetica,Arial,sans-serif} - img{margin-bottom: 1em} - h1{font-family :Arial,Helvetica,sans-serif; font-size:large} - ''' - conversion_options = { - 'comment': description, 'tags': category, 'publisher': publisher, 'language': language - } - - feeds = [(u'Articles', u'http://feeds.gawker.com/kotaku/vip?format=xml')] - - remove_tags = [ - {'class': 'feedflare'}, - ] - - def preprocess_html(self, soup): - return self.adeify_images(soup) diff --git a/recipes/kp.recipe b/recipes/kp.recipe deleted file mode 100644 index 00f878a8f3..0000000000 --- a/recipes/kp.recipe +++ /dev/null @@ -1,29 +0,0 @@ - -from calibre.web.feeds.news import BasicNewsRecipe - - -class KrytykaPolitycznaRecipe(BasicNewsRecipe): - __author__ = u'Artur Stachecki ' - language = 'pl' - version = 1 - - title = u'Krytyka Polityczna' - category = u'News' - description = u' Lewicowe pismo zaangażowane w bieg spraw publicznych w Polsce.' - cover_url = '' - masthead_url = 'https://krytykapolityczna.pl/file/2015/09/krytyka-logo.png' - remove_empty_feeds = True - no_stylesheets = True - oldest_article = 7 - max_articles_per_feed = 50 - recursions = 0 - - simultaneous_downloads = 3 - - keep_only_tags = [(dict(name='h1')), - (dict(name='div', attrs={'class': ['entry-meta','post-preview','entry-details', 'entry-content']}))] - - remove_tags = [(dict(attrs={'class': ['_ning_zone_inner','book-item site-commerc','wp-embedded-content', - 'read-also','meta-date-modified updated', 'textwidget']}))] - - feeds = [('Wszystkie', 'https://www.krytykapolityczna.pl/rss')] diff --git a/recipes/kristeligt_dagblad_dk.recipe b/recipes/kristeligt_dagblad_dk.recipe deleted file mode 100644 index 95b14d39c4..0000000000 --- a/recipes/kristeligt_dagblad_dk.recipe +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env python -# vim:fileencoding=utf-8 -from __future__ import absolute_import, division, print_function, unicode_literals - -from calibre.web.feeds.news import BasicNewsRecipe - - -class KristeligtDagblad(BasicNewsRecipe): - title = 'Kristeligt Dagblad' - language = 'da' - oldest_article = 7 - max_articles_per_feed = 50 - auto_cleanup = True - - # All feeds are found here: http://www.kristeligt-dagblad.dk/rss - feeds = [ - ('Leder', 'http://www.kristeligt-dagblad.dk/rss/leder'), - ('Danmark', 'http://www.kristeligt-dagblad.dk/rss/danmark'), - ('Udland', 'http://www.kristeligt-dagblad.dk/rss/udland'), - ('Liv & Sjæl', 'http://www.kristeligt-dagblad.dk/rss/liv'), - ('Familieliv', 'http://www.kristeligt-dagblad.dk/rss/familieliv'), - ('Kronik', 'http://www.kristeligt-dagblad.dk/rss/kronik'), - ('Kirke & Tro', 'http://www.kristeligt-dagblad.dk/rss/kirke'), - ('Debat', 'http://www.kristeligt-dagblad.dk/rss/debat'), - ('Kultur', 'http://www.kristeligt-dagblad.dk/rss/kultur'), - ('B\xf8ger', 'http://www.kristeligt-dagblad.dk/rss/boganmeldelse'), - ('Film', 'http://www.kristeligt-dagblad.dk/rss/filmanmeldelse'), - ] diff --git a/recipes/krstarica_en.recipe b/recipes/krstarica_en.recipe deleted file mode 100644 index 6454c4790a..0000000000 --- a/recipes/krstarica_en.recipe +++ /dev/null @@ -1,59 +0,0 @@ -#!/usr/bin/env python - -__license__ = 'GPL v3' -__copyright__ = '2009, Darko Miletic ' -''' -vesti.krstarica.com -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class Krstarica_en(BasicNewsRecipe): - title = 'Krstarica - news in english' - __author__ = 'Darko Miletic' - description = 'News from Serbia and world' - publisher = 'Krstarica' - category = 'news, politics, Serbia' - oldest_article = 1 - max_articles_per_feed = 100 - no_stylesheets = True - use_embedded_content = False - remove_javascript = True - encoding = 'utf-8' - language = 'en' - - html2lrf_options = [ - '--comment', description, '--category', category, '--publisher', publisher - ] - - html2epub_options = 'publisher="' + publisher + '"\ncomments="' + description + '"\ntags="' + \ - category + \ - '"\noverride_css=" p {text-indent: 0em; margin-top: 0em; margin-bottom: 0.5em}"' - - feeds = [ - - (u'Daily news', u'http://vesti.krstarica.com/index.php?rss=1&rubrika=aktuelno&lang=1'), - (u'Serbia', u'http://vesti.krstarica.com/index.php?rss=1&rubrika=scg&lang=1'), - (u'Politics', u'http://vesti.krstarica.com/index.php?rss=1&rubrika=politika&lang=1'), - (u'Economy', u'http://vesti.krstarica.com/index.php?rss=1&rubrika=ekonomija&lang=1'), - (u'Culture', u'http://vesti.krstarica.com/index.php?rss=1&rubrika=kultura&lang=1'), - (u'Sports', u'http://vesti.krstarica.com/index.php?rss=1&rubrika=sport&lang=1') - ] - - def preprocess_html(self, soup): - mtag = '' - soup.head.insert(0, mtag) - titletag = soup.find('h4') - if titletag: - realtag = titletag.parent.parent - realtag.extract() - for item in soup.findAll(['table', 'center']): - item.extract() - soup.body.insert(1, realtag) - realtag.name = 'div' - for item in soup.findAll(style=True): - del item['style'] - for item in soup.findAll(align=True): - del item['align'] - return soup diff --git a/recipes/ksiazka_pl.recipe b/recipes/ksiazka_pl.recipe deleted file mode 100644 index b383805052..0000000000 --- a/recipes/ksiazka_pl.recipe +++ /dev/null @@ -1,33 +0,0 @@ -import re - -from calibre.web.feeds.news import BasicNewsRecipe - - -class Ksiazka_net_pl(BasicNewsRecipe): - title = u'książka.net.pl' - __author__ = 'fenuks' - description = u'Portal Księgarski - tematyczny serwis o książkach. Wydarzenia z rynku księgarsko-wydawniczego, nowości, zapowiedzi, bestsellery, setki recenzji. Niezbędne informacje dla każdego miłośnika książek, księgarza, bibliotekarza i wydawcy.' # noqa - cover_url = 'http://www.ksiazka.net.pl/fileadmin/templates/ksiazka.net.pl/images/1PortalKsiegarski-logo.jpg' - category = 'books' - language = 'pl' - oldest_article = 8 - max_articles_per_feed = 100 - no_stylesheets = True - remove_empty_feeds = True - preprocess_regexps = [ - (re.compile(u'Podoba mi się, kupuję:'), lambda match: '
')] - remove_tags_before = dict(name='div', attrs={'class': 'm-body'}) - remove_tags_after = dict(name='div', attrs={'class': 'm-body-link'}) - remove_tags = [ - dict(attrs={'class': ['mk_library-icon', 'm-body-link', 'tagi']})] - feeds = [(u'Wiadomości', u'http://www.ksiazka.net.pl/?id=wiadomosci&type=100'), - (u'Książki', u'http://www.ksiazka.net.pl/?id=ksiazki&type=100'), - (u'Rynek', u'http://www.ksiazka.net.pl/?id=rynek&type=100')] - - def image_url_processor(self, baseurl, url): - if (('file://' in url) and ('www.ksiazka.net.pl/' not in url)): - return 'http://www.ksiazka.net.pl/' + url[8:] - elif 'http://' not in url: - return 'http://www.ksiazka.net.pl/' + url - else: - return url diff --git a/recipes/kukuburi.recipe b/recipes/kukuburi.recipe deleted file mode 100644 index 1a8df56d7e..0000000000 --- a/recipes/kukuburi.recipe +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env python - -__license__ = 'GPL v3' -__author__ = 'Mori' -__version__ = 'v. 0.1' -''' -Kukuburi.com -''' - -import re - -from calibre.web.feeds.news import BasicNewsRecipe - - -class KukuburiRecipe(BasicNewsRecipe): - __author__ = 'Mori' - language = 'en' - - title = u'Kukuburi' - publisher = u'Ramón Pérez' - description = u'KUKUBURI by Ram\xc3\xb3n P\xc3\xa9rez' - - no_stylesheets = True - remove_javascript = True - - oldest_article = 100 - max_articles_per_feed = 100 - - feeds = [ - (u'Kukuburi', u'http://feeds2.feedburner.com/Kukuburi') - ] - - preprocess_regexps = [ - (re.compile(i[0], re.IGNORECASE | re.DOTALL), i[1]) for i in - [ - (r'', lambda match: ''), - (r'
', lambda match: '') - ] - ] diff --git a/recipes/kurier_poranny.recipe b/recipes/kurier_poranny.recipe deleted file mode 100644 index 1a33ecf713..0000000000 --- a/recipes/kurier_poranny.recipe +++ /dev/null @@ -1,58 +0,0 @@ -from calibre.web.feeds.news import BasicNewsRecipe - - -class KurierPoranny(BasicNewsRecipe): - title = u'Kurier Poranny' - __author__ = 'fenuks' - description = u'Kurier Poranny | poranny.pl - portal miejski Białegostoku,informacje,wydarzenia' - category = 'newspaper' - language = 'pl' - encoding = 'iso-8859-2' - extra_css = 'ul {list-style: none; padding:0; margin:0;}' - INDEX = 'http://www.poranny.pl' - masthead_url = INDEX + '/images/top_logo.png' - oldest_article = 7 - max_articles_per_feed = 100 - remove_empty_feeds = True - no_stylesheets = True - ignore_duplicate_articles = {'title', 'url'} - use_embedded_content = False - - feeds = [(u'Wszystkie', u'http://www.poranny.pl/rss.xml'), - (u'Białystok', u'http://www.poranny.pl/bialystok.xml'), - (u'Bielsk Podlaski', u'http://www.poranny.pl/bielskpodlaski.xml'), - (u'Czarna Białostocka', - u'http://www.poranny.pl/czarnabialostocka.xml'), - (u'Hajnówka', u'http://www.poranny.pl/hajnowka.xml'), - (u'Łapy', u'http://www.poranny.pl/lapy.xml'), - (u'Sokółka', u'http://www.poranny.pl/sokolka.xml'), - (u'Supraśl', u'http://www.poranny.pl/suprasl.xml'), - (u'Wasilków', u'http://www.poranny.pl/wasilkow.xml'), - (u'Sport', u'http://www.poranny.pl/sport.xml'), - (u'Praca', u'http://www.poranny.pl/praca.xml'), - (u'Kultura', u'http://www.poranny.pl/kultura.xml'), - (u'Dom', u'http://www.poranny.pl/dom.xml'), - (u'Auto', u'http://www.poranny.pl/auto.xml'), - (u'Polityka', u'http://www.poranny.pl/polityka.xml')] - - keep_only_tags = [dict(id='article')] - - def get_cover_url(self): - soup = self.index_to_soup( - self.INDEX + '/apps/pbcs.dll/section?Category=JEDYNKI') - nexturl = self.INDEX + soup.find(id='covers').find('a')['href'] - soup = self.index_to_soup(nexturl) - self.cover_url = self.INDEX + \ - soup.find(id='cover').find(name='img')['src'] - return getattr(self, 'cover_url', self.cover_url) - - def decode_feedportal_url(self, url): - link = url.rpartition('l/0L0S')[2][:-12] - replaces = (('0B', '.'), ('0C', '/'), ('0H', ','), - ('0D', '?'), ('0F', '='), ('0A', '0'), ('0I', '_')) - for t in replaces: - link = link.replace(*t) - return 'http://' + link - - def print_version(self, url): - return self.decode_feedportal_url(url) + '&Template=printpicart' diff --git a/recipes/kurier_szczecinski.recipe b/recipes/kurier_szczecinski.recipe deleted file mode 100644 index ae57a03644..0000000000 --- a/recipes/kurier_szczecinski.recipe +++ /dev/null @@ -1,51 +0,0 @@ -from calibre.web.feeds.news import BasicNewsRecipe - - -class KurierSzczecinski(BasicNewsRecipe): - title = u'Kurier Szczeci\u0144ski' - __author__ = 'fenuks' - description = u'24Kurier jest portalem Kuriera Szczecińskiego. Zawiera aktualności ze Szczecina oraz wiadomości regionalne z województwa zachodniopomorskiego.' # noqa - category = 'newspaper' - language = 'pl' - cover_url = 'http://www.24kurier.pl/Administracja/Img/24kurier_logo-copy-po-zapis' - use_embedded_content = False - oldest_article = 7 - max_articles_per_feed = 100 - no_stylesheets = True - remove_empty_feeds = True - remove_javascript = True - remove_attributes = ['style', 'font'] - ignore_duplicate_articles = {'title', 'url'} - - keep_only_tags = [dict(attrs={'class': 'section'})] - remove_tags = [dict(attrs={'class': ['Ikonki', 'rek', 'artComments']})] - remove_tags_after = dict(attrs={'class': 'artComments'}) - feeds = [ - (u'Aktualno\u015bci', u'http://www.24kurier.pl/cmspages/articles_rss.aspx'), - (u'Kraj', u'http://www.24kurier.pl/cmspages/articles_rss.aspx?dzial=kraj'), - (u'\u015awiat', u'http://www.24kurier.pl/cmspages/articles_rss.aspx?dzial=swiat'), - (u'Sport', u'http://www.24kurier.pl/cmspages/articles_rss.aspx?dzial=sport'), - (u'Kultura', u'http://www.24kurier.pl/cmspages/articles_rss.aspx?dzial=kultura'), - (u'Gospodarka', u'http://www.24kurier.pl/cmspages/articles_rss.aspx?dzial=gospodarka'), - (u'Nauka', u'http://www.24kurier.pl/cmspages/articles_rss.aspx?dzial=nauka'), - (u'Region', u'http://www.24kurier.pl/cmspages/articles_rss.aspx?dzial=region'), - (u'Szczecin', u'http://www.24kurier.pl/cmspages/articles_rss.aspx?dzial=szczecin'), - (u'Bia\u0142ogard', u'http://www.24kurier.pl/cmspages/articles_rss.aspx?dzial=bialogard'), - (u'Choszczno', u'http://www.24kurier.pl/cmspages/articles_rss.aspx?dzial=choszczno'), - (u'Drawsko', u'http://www.24kurier.pl/cmspages/articles_rss.aspx?dzial=drawsko'), - (u'Goleni\xf3w', u'http://www.24kurier.pl/cmspages/articles_rss.aspx?dzial=goleniow'), - (u'Gryfice', u'http://www.24kurier.pl/cmspages/articles_rss.aspx?dzial=gryfice'), - (u'Gryfino', u'http://www.24kurier.pl/cmspages/articles_rss.aspx?dzial=gryfino'), - (u'Kamie\u0144 Pomorski', u'http://www.24kurier.pl/cmspages/articles_rss.aspx?dzial=kamien'), - (u'Ko\u0142obrzeg', u'http://www.24kurier.pl/cmspages/articles_rss.aspx?dzial=kolobrzeg'), - (u'Koszalin', u'http://www.24kurier.pl/cmspages/articles_rss.aspx?dzial=koszalin'), - (u'\u0141obez', u'http://www.24kurier.pl/cmspages/articles_rss.aspx?dzial=lobez'), - (u'My\u015blib\xf3rz', u'http://www.24kurier.pl/cmspages/articles_rss.aspx?dzial=mysliborz'), - (u'Police', u'http://www.24kurier.pl/cmspages/articles_rss.aspx?dzial=police'), - (u'Pyrzyce', u'http://www.24kurier.pl/cmspages/articles_rss.aspx?dzial=pyrzyce'), - (u'S\u0142awno', u'http://www.24kurier.pl/cmspages/articles_rss.aspx?dzial=slawno'), - (u'Stargard', u'http://www.24kurier.pl/cmspages/articles_rss.aspx?dzial=stargard'), - (u'Szczecinek', u'http://www.24kurier.pl/cmspages/articles_rss.aspx?dzial=szczecinek'), - (u'\u015awidwin', u'http://www.24kurier.pl/cmspages/articles_rss.aspx?dzial=swidwin'), - (u'\u015awinouj\u015bcie', u'http://www.24kurier.pl/cmspages/articles_rss.aspx?dzial=swinoujscie'), - (u'Wa\u0142cz', u'http://www.24kurier.pl/cmspages/articles_rss.aspx?dzial=walcz')] diff --git a/recipes/kyivpost_ar.recipe b/recipes/kyivpost_ar.recipe deleted file mode 100644 index 39e0fc949f..0000000000 --- a/recipes/kyivpost_ar.recipe +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/env python -# vim:fileencoding=utf-8 - -from calibre.web.feeds.news import BasicNewsRecipe - - -class KyivPost(BasicNewsRecipe): - title = '\u0643\u064A\u064A\u0641 \u0628\u0648\u0633\u062A (Kyiv Post)' - __author__ = 'bugmen00t' - description = '\u0643\u064A\u064A\u0641 \u0628\u0648\u0633\u062A \u0647\u064A \u0635\u062D\u064A\u0641\u0629 \u0623\u0648\u0643\u0631\u0627\u0646\u064A\u0629 \u062A\u0635\u062F\u0631 \u0628\u0627\u0644\u0644\u063A\u0629 \u0627\u0644\u0625\u0646\u062C\u0644\u064A\u0632\u064A\u0629 \u0648\u0647\u064A \u0641\u0627\u0626\u0632\u0629 \u0628\u0645\u064A\u062F\u0627\u0644\u064A\u0629 Missouri Honor 2014 \u0644\u0644\u062E\u062F\u0645\u0629 \u0627\u0644\u0645\u062A\u0645\u064A\u0632\u0629 \u0641\u064A \u0627\u0644\u0635\u062D\u0627\u0641\u0629. \u0635\u062F\u0631\u062A \u0627\u0644\u0646\u0633\u062E\u0629 \u0627\u0644\u0645\u0637\u0628\u0648\u0639\u0629 \u0627\u0644\u0623\u0648\u0644\u0649 \u0645\u0646 \u0627\u0644\u0635\u062D\u064A\u0641\u0629 \u0641\u064A 18 \u0623\u0643\u062A\u0648\u0628\u0631 1995\u060C \u0648\u062A\u0645 \u0646\u0634\u0631\u0647\u0627 \u0639\u0644\u0649 \u0627\u0644\u0625\u0646\u062A\u0631\u0646\u062A \u0641\u064A \u0639\u0627\u0645 1997. \u0648\u0643\u0627\u0646 \u062C\u0645\u0647\u0648\u0631\u0647\u0627 \u0627\u0644\u0639\u0627\u0644\u0645\u064A \u064A\u0646\u0645\u0648 \u0628\u0627\u0637\u0631\u0627\u062F \u0645\u0646\u0630 \u0630\u0644\u0643 \u0627\u0644\u062D\u064A\u0646 \u060C \u0648\u0628\u0644\u063A \u0630\u0631\u0648\u062A\u0647 \u0628\u0623\u0643\u062B\u0631 \u0645\u0646 65 \u0645\u0644\u064A\u0648\u0646 \u0645\u0634\u0627\u0647\u062F\u0629 \u0644\u0644\u0635\u0641\u062D\u0629 \u0641\u064A \u0639\u0627\u0645 2014. \u0634\u0639\u0627\u0631 \u0627\u0644\u0635\u062D\u064A\u0641\u0629 \u0647\u0648 \u201C\u0635\u0648\u062A \u0623\u0648\u0643\u0631\u0627\u0646\u064A\u0627 \u0644\u0644\u0639\u0627\u0644\u0645\u201D\u060C \u0648\u0627\u0644\u0630\u064A \u062D\u0644 \u0641\u064A \u0639\u0627\u0645 2018 \u0645\u062D\u0644 \u0627\u0644\u0634\u0639\u0627\u0631 \u0627\u0644\u0633\u0627\u0628\u0642 \u201C\u0627\u0644\u0627\u0633\u062A\u0642\u0644\u0627\u0644. \u062A\u0648\u0627\u0635\u0644 \u0627\u062C\u062A\u0645\u0627\u0639\u064A. \u0627\u0644\u062B\u0642\u0629\u201D. \u0643\u0644\u0627 \u0627\u0644\u0634\u0639\u0627\u0631\u064A\u0646 \u064A\u0639\u0643\u0633\u0627\u0646 \u0627\u0644\u062A\u0632\u0627\u0645 \u0627\u0644\u0635\u062D\u064A\u0641\u0629 \u0628\u0623\u0639\u0644\u0649 \u0627\u0644\u0645\u0639\u0627\u064A\u064A\u0631 \u0627\u0644\u0635\u062D\u0641\u064A\u0629 \u0648\u0627\u0644\u0623\u062E\u0644\u0627\u0642\u064A\u0629.' # noqa - publisher = 'BIZNESGRUPP TOV' - category = 'newspaper' - cover_url = u'https://www.kyivpost.com/wp-content/themes/kyivpost/assets/img/svg/logo-foot.svg' - language = 'ar_uk' - no_stylesheets = False - remove_javascript = True - auto_cleanup = False - oldest_article = 7 - max_articles_per_feed = 20 - - remove_tags_before = dict(attrs={'class': 'single-article'}) - - remove_tags_after = dict(attrs={'class': 'post-author-block'}) - - remove_tags = [ - dict(attrs={'class': 'post-label-and-topic'}), - dict(attrs={'class': 'sidebar-start'}), - dict(attrs={'class': 'correction'}), - dict(attrs={'id': 'correction'}), - dict(attrs={'class': 'ad_between_paragraphs'}), - dict(attrs={'id': 'insert-post-by-topic'}) - ] - - feeds = [( - '\u0627\u0644\u0625\u062E\u0628\u0627\u0631\u064A\u0629', - 'https://www.kyivpost.com/ar/feed' - )] diff --git a/recipes/l_espresso.recipe b/recipes/l_espresso.recipe deleted file mode 100644 index 1888b9b963..0000000000 --- a/recipes/l_espresso.recipe +++ /dev/null @@ -1,46 +0,0 @@ -#!/usr/bin/env python -__license__ = 'GPL v3' -__author__ = 'Lorenzo Vigentini, Gabriele Marini' -__copyright__ = '2009, Lorenzo Vigentini ' -__version__ = 'v1.02' -__date__ = '10, January 2010' -__description__ = 'Italian weekly magazine' - -'''espresso.repubblica.it''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class Espresso(BasicNewsRecipe): - __author__ = 'Lorenzo Vigentini, Gabriele Marini, Krittika Goyal' - description = 'Italian weekly magazine' - - cover_url = 'http://espresso.repubblica.it/images/logo_espresso.gif' - title = 'L\'Espresso ' - publisher = 'Gruppo editoriale L\'Espresso' - category = 'News, politics, culture, economy, general interest' - - language = 'it' -# encoding = 'cp1252' - timefmt = '[%a, %d %b, %Y]' - - oldest_article = 16 - max_articles_per_feed = 100 - use_embedded_content = False - - no_stylesheets = True - auto_cleanup = True - - feeds = [ - (u'Homepage', u'http://kpm.data.kataweb.it/kpm3eolx/rss/home'), - (u'Local', u'http://kpm.data.kataweb.it/kpm3eolx/rss/local'), - (u'Style & Design', - u'http://kpm.data.kataweb.it/kpm3eolx/rss/style_design'), - (u'Opinioni', u'http://kpm.data.kataweb.it/kpm3eolx/rss/opinioni'), - (u'Rubriche', u'http://kpm.data.kataweb.it/kpm3eolx/rss/rubriche'), - (u'Limes', u'http://temi.repubblica.it/limes/feed/'), - (u'Chiesa: HomePage', - u'http://data.kataweb.it/rss/chiesa/homepage/it'), - (u'Chiesa: Speciali e Focus', - u'http://data.kataweb.it/rss/chiesa/speciali_e_focus/it') - ] diff --git a/recipes/l_vivs_ghazieta.recipe b/recipes/l_vivs_ghazieta.recipe deleted file mode 100644 index 2d22d9f3df..0000000000 --- a/recipes/l_vivs_ghazieta.recipe +++ /dev/null @@ -1,40 +0,0 @@ -from calibre.web.feeds.news import BasicNewsRecipe - - -class AdvancedUserRecipe1356270446(BasicNewsRecipe): - title = u'\u041b\u044c\u0432\u0456\u0432\u0441\u044c\u043a\u0430 \u0433\u0430\u0437\u0435\u0442\u0430' - oldest_article = 7 - __author__ = 'rpalyvoda' - max_articles_per_feed = 100 - language = 'uk' - cover_url = 'http://lvivska.com/sites/all/themes/biblos/images/logo.png' - masthead_url = 'http://lvivska.com/sites/all/themes/biblos/images/logo.png' - auto_cleanup = True - feeds = [ - (u'\u041d\u043e\u0432\u0438\u043d\u0438', - u'http://lvivska.com/rss/news.xml'), - (u'\u041f\u043e\u043b\u0456\u0442\u0438\u043a\u0430', - u'http://lvivska.com/rss/politic.xml'), - (u'\u0415\u043a\u043e\u043d\u043e\u043c\u0456\u043a\u0430', - u'http://lvivska.com/rss/economic.xml'), - (u'\u041f\u0440\u0430\u0432\u043e', u'http://lvivska.com/rss/law.xml'), - (u'\u0421\u0432\u0456\u0442', u'http://lvivska.com/rss/world.xml'), - (u'\u0416\u0438\u0442\u0442\u044f', - u'http://lvivska.com/rss/life.xml'), - (u'\u041a\u0443\u043b\u044c\u0442\u0443\u0440\u0430', - u'http://lvivska.com/rss/culture.xml'), - - (u'\u041b\u0430\u0441\u0443\u043d', - u'http://lvivska.com/rss/cooking.xml'), - (u'\u0421\u0442\u0438\u043b\u044c', - u'http://lvivska.com/rss/style.xml'), - (u'Galicia Incognita', u'http://lvivska.com/rss/galiciaincognita.xml'), - (u'\u0421\u043f\u043e\u0440\u0442', - u'http://lvivska.com/rss/sport.xml'), - (u'\u0415\u043a\u043e\u043b\u043e\u0433\u0456\u044f', - u'http://lvivska.com/rss/ecology.xml'), - (u"\u0417\u0434\u043e\u0440\u043e\u0432'\u044f", - u'http://lvivska.com/rss/health.xml'), - (u'\u0410\u0432\u0442\u043e', u'http://lvivska.com/rss/auto.xml'), - (u'\u0411\u043b\u043e\u0433\u0438', u'http://lvivska.com/rss/blog.xml') - ] diff --git a/recipes/la_cuarta.recipe b/recipes/la_cuarta.recipe deleted file mode 100644 index 63cb46583e..0000000000 --- a/recipes/la_cuarta.recipe +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env python - -__license__ = 'GPL v3' -__copyright__ = '2009, Darko Miletic ' -''' -lacuarta.cl -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class LaCuarta(BasicNewsRecipe): - title = 'La Cuarta' - __author__ = 'Darko Miletic' - description = 'La Cuarta Cibernetica: El Diario popular' - publisher = 'CODISA, Consorcio Digital S.A.' - category = 'news, politics, entertainment, Chile' - oldest_article = 2 - max_articles_per_feed = 100 - no_stylesheets = True - use_embedded_content = False - encoding = 'cp1252' - remove_javascript = True - - html2lrf_options = [ - '--comment', description, '--category', category, '--publisher', publisher - ] - - html2epub_options = 'publisher="' + publisher + \ - '"\ncomments="' + description + '"\ntags="' + category + '"' - - keep_only_tags = [dict(name='div', attrs={'class': 'articulo desplegado'})] - - remove_tags = [ - dict(name='ul'), dict(name='div', attrs={'id': ['toolbox', 'articleImageDisplayer', 'enviarAmigo']}), dict(name='div', attrs={'class': [ - 'par ad-1', 'par ad-2']}), dict(name='input'), dict(name='p', attrs={'id': ['mensajeError', 'mensajeEnviandoNoticia', 'mensajeExito']}), dict(name='strong', text='PUBLICIDAD') # noqa - ] - - def preprocess_html(self, soup): - mtag = '' - soup.head.insert(0, mtag) - for item in soup.findAll(style=True): - del item['style'] - return soup - - feeds = [(u'Noticias', u'http://lacuarta.cl/app/rss?sc=TEFDVUFSVEE=')] - - language = 'es_CL' diff --git a/recipes/la_gazetta_del_mezzogiorno.recipe b/recipes/la_gazetta_del_mezzogiorno.recipe deleted file mode 100644 index e559c58199..0000000000 --- a/recipes/la_gazetta_del_mezzogiorno.recipe +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/env python -__license__ = 'GPL v3' -__copyright__ = '2012, faber1971' -__version__ = 'v1.01' -__date__ = '29, May 2012' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class AdvancedUserRecipe1324038402(BasicNewsRecipe): - title = u'La Gazzetta del Mezzogiorno' - language = 'it' - __author__ = 'faber1971' - description = 'Italian regional magazine - Apulia' - oldest_article = 1 - max_articles_per_feed = 100 - auto_cleanup = False - masthead_url = 'http://www.lagazzettadelmezzogiorno.it/images/GdM_Nuova_Testata_Interna.gif' - feeds = [ - (u'Home page', u'http://www.lagazzettadelmezzogiorno.it/rss.php?IDCategoria=1')] - remove_tags = [ - dict(name='table', attrs={'width': '100%'}), - dict(name='div', attrs={'style': [ - 'text-align:center; padding:5px; background-color:#B51C1F;', 'float:right; margin:0px 0px 4px 7px; border-left:2px dotted #B0CBE6; width:200px;']}), - dict(name='td', attrs={'colspan': '5'}), dict(name='td', attrs={'width': '300'}) - ] - - def get_article_url(self, article): - link = BasicNewsRecipe.get_article_url(self, article) - if link.split('/')[-1] == "story01.htm": - link = link.split('/')[-2] - a = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'I', 'L', 'N', 'S'] - b = ['0', '.', '/', '?', '-', '=', '&', - '_', 'http://', '.com', 'www.'] - for i in range(0, len(a)): - link = link.replace('0' + a[-i], b[-i]) - return link - - remove_javascript = True - conversion_options = {'linearize_tables': True} - extra_css = ''' - .font7 {color: #555555; font-family: "Verdana"; font-size: 23px; font-weight: 700; height: auto; text-align: left; text-decoration: none; } - .font16 { color: #000000; font-family: "Arial"; font-size: 14px; font-weight: 400; text-align: left; } - ''' diff --git a/recipes/la_gazzeta_dello_sport.recipe b/recipes/la_gazzeta_dello_sport.recipe deleted file mode 100644 index 3d8f47fafb..0000000000 --- a/recipes/la_gazzeta_dello_sport.recipe +++ /dev/null @@ -1,83 +0,0 @@ -#!/usr/bin/env python -from __future__ import print_function - -__license__ = 'GPL v3' -__author__ = 'Lorenzo Vigentini' -__copyright__ = '2009, Lorenzo Vigentini ' -__version__ = 'v1.02' -__date__ = '10, January 2010' -__description__ = 'Sport news from the most read sport newspaper in Italy' - -'''www.gazzetta.it''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class laGazzetta(BasicNewsRecipe): - __author__ = 'Lorenzo Vigentini' - description = 'Sport news from the most read sport newspaper in Italy' - - cover_url = 'http://www.gazzetta.it/primapagina/images/prima_pagina_grande.png' - title = 'La Gazzetta dello Sport ' - publisher = 'RCS Digital' - category = 'Sport News' - - language = 'it' - encoding = 'cp1252' - timefmt = '[%a, %d %b, %Y]' - - oldest_article = 2 - max_articles_per_feed = 20 - use_embedded_content = False - recursion = 10 - - remove_javascript = True - no_stylesheets = True - - keep_only_tags = [dict(name='div', attrs={'id': 'articolo'})] - - remove_tags = [ - dict(name='ul', attrs={'id': ['service-toolbar', 'sections-menu']}), - dict(name='div', attrs={'id': [ - 'header', 'rightcol', 'sponsored', 'vxFlashPlayer', 'footer', 'print-box']}), - dict(name='iframe', attrs={'id': 'mirago-feed'}), - dict(name='a', attrs={'id': 'commenta-up'}), - dict(name='cite', attrs={'class': ['signature', 'parag-title']}), - dict(name='a', attrs={'class': ['last-comment', 'button-bold2']}), - dict(name=['base', 'object', 'link', 'a', 'script', 'noscript']) - ] - - extra_css = ''' - h1 {font: sans-serif large;} - h2 {font: sans-serif medium;} - h3 {font: sans-serif small;} - h4 {font: sans-serif bold small;} - p {font:10pt helvetica} - dd {font:8pt helvetica} - ''' - - feeds = [ - (u'Calcio', u'http://www.gazzetta.it/rss/Calcio.xml'), - (u'Formula 1', u'http://www.gazzetta.it/rss/Formula1.xml'), - (u'Motomodiale', u'http://www.gazzetta.it/rss/Motomondiale.xml'), - (u'Motori', u'http://www.gazzetta.it/rss/Motori.xml'), - (u'Ciclismo', u'http://www.gazzetta.it/rss/Ciclismo.xml'), - (u'Basket', u'http://www.gazzetta.it/rss/Basket.xml'), - (u'Tennis', u'http://www.gazzetta.it/rss/Tennis.xml'), - (u'Pallavolo', u'http://www.gazzetta.it/rss/Pallavolo.xml'), - (u'Vela', u'http://www.gazzetta.it/rss/Vela.xml'), - (u'Atletica', u'http://www.gazzetta.it/rss/Atletica.xml'), - (u'Altri Sport', u'http://www.gazzetta.it/rss/Sport_Vari.xml') - ] - - def print_version(self, url): - segments = url.split('/') - basename = '/'.join(segments[:3]) + '/' - subPath = '/'.join(segments[3:7]) + '/' - articleURL = (segments[len(segments) - 1])[:-6] - myArticleSegs = articleURL.split('.') - myArticle = myArticleSegs[0] - printVerString = myArticle + '_print.html' - myURL = basename + subPath + printVerString - print('this is the url: ' + myURL) - return basename + subPath + printVerString diff --git a/recipes/la_pausa_caffe.recipe b/recipes/la_pausa_caffe.recipe deleted file mode 100644 index f7ccaf707c..0000000000 --- a/recipes/la_pausa_caffe.recipe +++ /dev/null @@ -1,17 +0,0 @@ -__version__ = 'v1.0' -__date__ = '13, February 2011' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class AdvancedUserRecipe1329125921(BasicNewsRecipe): - title = u'La pausa caff\xe8' - __author__ = 'faber1971' - description = 'An Italian satirical blog' - language = 'it' - - oldest_article = 7 - max_articles_per_feed = 100 - auto_cleanup = True - no_stylesheets = True - feeds = [(u'La pausa caff\xe8', u'http://feeds.feedburner.com/LapausaCaffe')] diff --git a/recipes/la_razon_bo.recipe b/recipes/la_razon_bo.recipe deleted file mode 100644 index bd0e5b4686..0000000000 --- a/recipes/la_razon_bo.recipe +++ /dev/null @@ -1,68 +0,0 @@ -__license__ = 'GPL v3' -__copyright__ = '2010-2011, Darko Miletic ' -''' -www.la-razon.com -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class LaRazon_Bol(BasicNewsRecipe): - title = u'La Razón - Bolivia' - __author__ = 'Darko Miletic' - description = 'El diario nacional de Bolivia' - publisher = 'Praxsis S.R.L.' - category = 'news, politics, Bolivia' - oldest_article = 1 - max_articles_per_feed = 200 - no_stylesheets = True - encoding = 'utf8' - use_embedded_content = False - language = 'es_BO' - publication_type = 'newspaper' - remove_empty_feeds = True - masthead_url = 'http://www.la-razon.com/static/LRZRazon/images/lrz-logo.png' - extra_css = """ body{font-family: Georgia,"Times New Roman",Times,serif} - img{margin-bottom: 0.4em; display: block} - .meta{font-size: small; font-family: Arial,Helvetica,sans-serif} - """ - INDEX = 'http://www.la-razon.com/' - - conversion_options = { - 'comment': description, 'tags': category, 'publisher': publisher, 'language': language - } - - keep_only_tags = [dict(name='div', attrs={'class': ['pg-hd', 'pg-bd']})] - remove_tags = [ - dict(name=['meta', 'link', 'form', 'iframe', 'embed', 'object']), dict( - name='div', attrs={'class': 'bd'}) - ] - remove_attributes = ['width', 'height'] - - feeds = [ - - (u'Editorial', u'http://www.la-razon.com/rss/opinion/editorial/'), - (u'Nacional', u'http://www.la-razon.com/rss/nacional/'), - (u'Economia', u'http://www.la-razon.com/rss/economia/'), - (u'Ciudades', u'http://www.la-razon.com/rss/ciudades/'), - (u'Sociedad', u'http://www.la-razon.com/rss/sociedad/'), - (u'Mundo', u'http://www.la-razon.com/rss/mundo/'), - (u'La Revista', u'http://www.la-razon.com/rss/la_revista/'), - (u'Sociales', u'http://www.la-razon.com/rss/sociales/'), - (u'Mia', u'http://www.la-razon.com/rss/suplementos/mia/'), - (u'Marcas', u'http://www.la-razon.com/rss/marcas/'), - (u'Escape', u'http://www.la-razon.com/rss/suplementos/escape/'), - (u'El Financiero', u'http://www.la-razon.com/rss/suplementos/financiero/'), - (u'Tendencias', u'http://www.la-razon.com/rss/suplementos/tendencias/') - ] - - def preprocess_html(self, soup): - for item in soup.findAll(style=True): - del item['style'] - return soup - - def get_cover_url(self): - soup = self.index_to_soup(self.INDEX) - lightbox = soup.find( - 'div', attrs={'class': 'lightbox lightbox-frontpage'}) - return lightbox.img['src'] diff --git a/recipes/la_rioja.recipe b/recipes/la_rioja.recipe deleted file mode 100644 index 2be158053d..0000000000 --- a/recipes/la_rioja.recipe +++ /dev/null @@ -1,51 +0,0 @@ -__license__ = 'GPL v3' -__copyright__ = '2010, Darko Miletic ' -''' -www.larioja.com -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class LaRioja(BasicNewsRecipe): - title = 'La Rioja' - __author__ = 'Arturo Martinez Nieves' - description = 'Noticias de La Rioja y el resto del mundo' - publisher = 'La Rioja' - category = 'news, politics, Spain' - oldest_article = 2 - max_articles_per_feed = 200 - no_stylesheets = True - encoding = 'cp1252' - use_embedded_content = False - language = 'es' - remove_empty_feeds = True - masthead_url = 'http://www.larioja.com/includes/manuales/larioja/include-lariojapapeldigital-zonac-fondocabecera01.jpg' - extra_css = ' body{font-family: Arial,Helvetica,sans-serif } img{margin-bottom: 0.4em} .photo-caption{font-size: x-small} ' - - conversion_options = { - 'comment': description, 'tags': category, 'publisher': publisher, 'language': language - } - - keep_only_tags = [ - dict(attrs={'id': 'title'}), dict(attrs={'class': [ - 'overhead', 'headline', 'subhead', 'date', 'text', 'noticia_cont', 'desarrollo']}) - ] - remove_tags = [dict(name='ul')] - remove_attributes = ['width', 'height'] - - feeds = [ - - (u'Ultimas Noticias', u'http://www.larioja.com/rss/feeds/ultima.xml'), - (u'Portada', u'http://www.larioja.com/rss/feeds/portada.xml'), - (u'Mundo', u'http://www.larioja.com/rss/feeds/mundo.xml'), - (u'Espana', u'http://www.larioja.com/rss/feeds/espana.xml'), - (u'Region', u'http://www.larioja.com/rss/feeds/region.xml'), - (u'Comarcas', u'http://www.larioja.com/rss/feeds/comarcas.xml'), - (u'Deportes', u'http://www.larioja.com/rss/feeds/deportes.xml'), - (u'Economia', u'http://www.larioja.com/rss/feeds/economia.xml'), - (u'Cultura', u'http://www.larioja.com/rss/feeds/cultura.xml'), - (u'Opinion', u'http://www.larioja.com/rss/feeds/opinion.xml'), - (u'Sociedad', u'http://www.larioja.com/rss/feeds/sociedad.xml') - - ] diff --git a/recipes/la_segunda.recipe b/recipes/la_segunda.recipe deleted file mode 100644 index f201850913..0000000000 --- a/recipes/la_segunda.recipe +++ /dev/null @@ -1,50 +0,0 @@ -__license__ = 'GPL v3' -__copyright__ = '2009-2010, Darko Miletic ' -''' -lasegunda.com -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class LaSegunda(BasicNewsRecipe): - title = 'La Segunda' - __author__ = 'Darko Miletic' - description = 'El sitio de noticias online de Chile' - publisher = 'La Segunda' - category = 'news, politics, Chile' - oldest_article = 2 - max_articles_per_feed = 100 - no_stylesheets = True - use_embedded_content = False - encoding = 'cp1252' - masthead_url = 'http://www.lasegunda.com/imagenes/logotipo_lasegunda_Oli.gif' - remove_empty_feeds = True - language = 'es_CL' - extra_css = ' .titulonegritastop{font-size: xx-large; font-weight: bold} ' - - conversion_options = { - 'comment': description, 'tags': category, 'publisher': publisher, 'language': language, 'linearize_tables': True - } - - remove_tags_before = dict(attrs={'class': 'titulonegritastop'}) - remove_tags = [dict(name='img')] - remove_attributes = ['width', 'height'] - - feeds = [ - - (u'Noticias de ultima hora', u'http://www.lasegunda.com/rss20/index.asp?canal=0'), - (u'Politica', u'http://www.lasegunda.com/rss20/index.asp?canal=21'), - (u'Cronica', u'http://www.lasegunda.com/rss20/index.asp?canal=20'), - (u'Internacional', u'http://www.lasegunda.com/rss20/index.asp?canal=23'), - (u'Deportes', u'http://www.lasegunda.com/rss20/index.asp?canal=24'), - (u'Epectaculos/Cultura', u'http://www.lasegunda.com/rss20/index.asp?canal=25'), - (u'Educacion', u'http://www.lasegunda.com/rss20/index.asp?canal=26'), - (u'Ciencia y Tecnologia', u'http://www.lasegunda.com/rss20/index.asp?canal=27'), - (u'Solidaridad', u'http://www.lasegunda.com/rss20/index.asp?canal=28'), - (u'Buena Vida', u'http://www.lasegunda.com/rss20/index.asp?canal=32') - ] - - def print_version(self, url): - rest, sep, article_id = url.partition('index.asp?idnoticia=') - return u'http://www.lasegunda.com/edicionOnline/include/secciones/_detalle_impresion.asp?idnoticia=' + article_id diff --git a/recipes/la_tercera.recipe b/recipes/la_tercera.recipe deleted file mode 100644 index 04caf952d7..0000000000 --- a/recipes/la_tercera.recipe +++ /dev/null @@ -1,59 +0,0 @@ -__license__ = 'GPL v3' -__copyright__ = '2009-2010, Darko Miletic ' -''' -latercera.com -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class LaTercera(BasicNewsRecipe): - news = True - title = 'La Tercera' - __author__ = 'Darko Miletic and Alex Mitrani' - description = 'El sitio de noticias online de Chile' - publisher = 'La Tercera' - category = 'news, politics, Chile' - oldest_article = 2 - max_articles_per_feed = 100 - no_stylesheets = True - encoding = 'cp1252' - use_embedded_content = False - remove_empty_feeds = True - language = 'es_CL' - - conversion_options = { - 'comment': description, 'tags': category, 'publisher': publisher, 'language': language, 'linearize_tables': True - } - - keep_only_tags = [ - dict(name='h1', attrs={'class': ['titularArticulo']}), dict(name='h4', attrs={'class': ['bajadaArt']}), dict( - name='h5', attrs={'class': ['autorArt']}), dict(name='div', attrs={'class': ['articleContent']}) - ] - - remove_tags = [ - dict(name='div', attrs={'class': ['boxCompartir', 'keywords']}) - ] - - remove_tags_after = [ - dict(name='div', attrs={'class': ['keywords']}) - ] - - feeds = [ - (u'La Tercera', u'http://www.latercera.com/app/rss?sc=TEFURVJDRVJB&ul=1'), - (u'Politica', u'http://www.latercera.com/app/rss?sc=TEFURVJDRVJB&category=674'), - (u'Nacional', u'http://www.latercera.com/app/rss?sc=TEFURVJDRVJB&category=680'), - (u'Mundo', u'http://www.latercera.com/app/rss?sc=TEFURVJDRVJB&category=678'), - (u'Negocios', u'http://www.latercera.com/app/rss?sc=TEFURVJDRVJB&category=655'), - (u'Santiago', u'http://www.latercera.com/feed/manager?type=rss&sc=TEFURVJDRVJB&citId=9&categoryId=1731'), - (u'Tendencias', u'http://www.latercera.com/app/rss?sc=TEFURVJDRVJB&category=659'), - (u'Educacion', u'http://www.latercera.com/app/rss?sc=TEFURVJDRVJB&category=657'), - (u'Cultura', u'http://www.latercera.com/feed/manager?type=rss&sc=TEFURVJDRVJB&citId=9&categoryId=1453'), - (u'Entretención', u'http://www.latercera.com/app/rss?sc=TEFURVJDRVJB&category=661'), - (u'Deportes', u'http://www.latercera.com/app/rss?sc=TEFURVJDRVJB&category=656') - ] - - def preprocess_html(self, soup): - for item in soup.findAll(style=True): - del item['style'] - return soup diff --git a/recipes/la_tribuna.recipe b/recipes/la_tribuna.recipe deleted file mode 100644 index 8e5d5ea54b..0000000000 --- a/recipes/la_tribuna.recipe +++ /dev/null @@ -1,73 +0,0 @@ -# -*- coding: utf-8 -*- -__license__ = 'GPL v3' -__author__ = 'Luis Hernandez' -__copyright__ = 'Luis Hernandez' -__version__ = 'v1.0' -__date__ = '01 Feb 2011' - -''' -http://www.promecal.es/ -''' -from calibre.web.feeds.news import BasicNewsRecipe - - -class AdvancedUserRecipe1294946868(BasicNewsRecipe): - - title = u'La Tribuna de' - publisher = u'Grupo PROMECAL' - - __author__ = 'Luis Hernández' - description = 'Varios diarios locales del grupo PROMECAL' - - oldest_article = 3 - max_articles_per_feed = 50 - - remove_javascript = True - no_stylesheets = True - use_embedded_content = False - - encoding = 'utf-8' - language = 'es' - timefmt = '[%a, %d %b, %Y]' - - keep_only_tags = [ - dict(name='div', attrs={'id': ['articulo']}), dict(name='div', attrs={ - 'class': ['foto']}), dict(name='p', attrs={'id': ['texto']}) - ] - - remove_tags_before = dict(name='div', attrs={'class': ['comparte']}) - remove_tags_after = dict(name='div', attrs={'id': ['relacionadas']}) - - remove_tags = [ - dict(name='div', attrs={'id': ['relacionadas']}), dict( - name='h3'), dict(name='h5') - ] - - extra_css = """ - p{text-align: justify; font-size: 100%} - body{text-align: left; font-family: serif; font-size: 100%} - h1{font-family: sans; font-size:150%; font-weight: bold; text-align: justify;} - h2{font-family: sans-serif; font-size:85%; font-style: italic; text-align: justify;} - h4{font-family: sans; font-size:75%; font-weight: bold; text-align: center;} - img{margin-bottom: 0.4em} - """ - - def preprocess_html(self, soup): - for alink in soup.findAll('a'): - if alink.string is not None: - tstr = alink.string - alink.replaceWith(tstr) - return soup - - feeds = [ - - (u'Albacete', u'http://www.latribunadealbacete.es/rss.html'), - (u'Avila', u'http://www.diariodeavila.es/rss.html'), - (u'Burgos', u'http://www.diariodeburgos.es/rss.html'), - (u'Ciudad Real', u'http://www.latribunadeciudadreal.es/rss.html'), - (u'Palencia', u'http://www.diariopalentino.es/rss.html'), - (u'Puertollano', u'http://www.latribunadepuertollano.es/rss.html'), - (u'Talavera de la Reina', u'http://www.latribunadetalavera.es/rss.html'), - (u'Toledo', u'http://www.latribunadetoledo.es/rss.html'), - (u'Valladolid', u'http://www.eldiadevalladolid.com/rss.html') - ] diff --git a/recipes/lameuse_be.recipe b/recipes/lameuse_be.recipe deleted file mode 100644 index 08bb05f42c..0000000000 --- a/recipes/lameuse_be.recipe +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env python - -__license__ = 'GPL v3' -__copyright__ = '2008-2011, Lionel Bergeret ' -''' -lameuse.be -''' - -from calibre import strftime -from calibre.web.feeds.news import BasicNewsRecipe - - -class LaMeuse(BasicNewsRecipe): - title = u'La Meuse' - __author__ = u'Lionel Bergeret' - description = u'News from Belgium in French' - publisher = u'lameuse.be' - category = 'news, Belgium' - oldest_article = 3 - language = 'fr' - masthead_url = 'http://www.lameuse.be/images/SPV3/logo_header_LM.gif' - - max_articles_per_feed = 20 - no_stylesheets = True - use_embedded_content = False - timefmt = ' [%d %b %Y]' - - keep_only_tags = [ - dict(name='div', attrs={'id': 'article'}) - ] - - remove_tags = [ - dict(name='div', attrs={'class': 'sb-group'}), dict(name='div', attrs={'id': 'share'}), dict(name='div', attrs={'id': 'commentaires'}), dict(name='ul', attrs={'class': 'right liensutiles'}), dict(name='ul', attrs={'class': 'bas liensutiles'}), dict(name='p', attrs={'class': 'ariane'}), dict(name='div', attrs={'class': 'inner-bloc'}), dict(name='div', attrs={'class': 'block-01'}) # noqa - ] - - feeds = [ - - (u'Actualite', u'http://www.lameuse.be/services/fils_rss/actualite/index.xml'), - (u'Belgique', u'http://www.lameuse.be/services/fils_rss/actualite/belgique/index.xml'), - (u'Monde', u'http://www.lameuse.be/services/fils_rss/actualite/monde/index.xml'), - (u'Societe', u'http://www.lameuse.be/services/fils_rss/actualite/societe/index.xml'), - (u'Faits Divers', u'http://www.lameuse.be/services/fils_rss/actualite/faits_divers/index.xml'), - (u'Economie', u'http://www.lameuse.be/services/fils_rss/actualite/economie/index.xml'), - (u'Science', u'http://www.lameuse.be/services/fils_rss/actualite/science/index.xml'), - (u'Sante', u'http://www.lameuse.be/services/fils_rss/actualite/sante/index.xml'), - (u'Insolite', u'http://www.lameuse.be/services/fils_rss/magazine/insolite/index.xml'), - (u'Cinema', u'http://www.lameuse.be/services/fils_rss/culture/cinema/index.xml'), - (u'Musique', u'http://www.lameuse.be/services/fils_rss/culture/musique/index.xml'), - (u'Livres', u'http://www.lameuse.be/services/fils_rss/culture/livres/index.xml') - ] - - def get_cover_url(self): - cover_url = strftime( - 'http://pdf.lameuse.be/pdf/lameuse_%Y-%m-%d_LIEG_ACTUALITE_1.PDF') - return cover_url diff --git a/recipes/lanacion_chile.recipe b/recipes/lanacion_chile.recipe deleted file mode 100644 index aa68660c41..0000000000 --- a/recipes/lanacion_chile.recipe +++ /dev/null @@ -1,57 +0,0 @@ -#!/usr/bin/env python - -__license__ = 'GPL v3' -__copyright__ = '2009, Darko Miletic ' -''' -lanacion.cl -''' -try: - from urllib.parse import quote -except ImportError: - from urllib import quote - -from calibre.web.feeds.news import BasicNewsRecipe - - -class LaNacionChile(BasicNewsRecipe): - title = 'La Nacion Chile' - __author__ = 'Darko Miletic' - description = 'El sitio de noticias online de Chile' - publisher = 'La Nacion' - category = 'news, politics, Chile' - oldest_article = 2 - max_articles_per_feed = 100 - no_stylesheets = True - use_embedded_content = False - encoding = 'cp1252' - cover_url = 'http://www.lanacion.cl/prontus_noticias_v2/imag/site/logo.gif' - remove_javascript = True - - html2lrf_options = [ - '--comment', description, '--category', category, '--publisher', publisher - ] - - html2epub_options = 'publisher="' + publisher + \ - '"\ncomments="' + description + '"\ntags="' + category + '"' - - keep_only_tags = [dict(name='div', attrs={'class': 'bloque'})] - - feeds = [(u'Noticias', u'http://www.lanacion.cl/rss.xml')] - - def print_version(self, url): - toprint = quote(url, ':/') - return u'http://www.lanacion.cl/cgi-bx/imprimir.cgi?_URL=' + toprint - - def preprocess_html(self, soup): - del soup.body['onload'] - soup.head.base.extract() - item = soup.find('a', attrs={'href': 'javascript:window.close()'}) - if item: - item.extract() - mtag = '' - soup.head.insert(0, mtag) - for item in soup.findAll(style=True): - del item['style'] - return soup - - language = 'es_CL' diff --git a/recipes/laprensa_hn.recipe b/recipes/laprensa_hn.recipe deleted file mode 100644 index b3f44b908a..0000000000 --- a/recipes/laprensa_hn.recipe +++ /dev/null @@ -1,64 +0,0 @@ -#!/usr/bin/env python - -__license__ = 'GPL v3' -__copyright__ = '2009, Darko Miletic ' -''' -www.laprensahn.com -''' - -from calibre.ebooks.BeautifulSoup import Tag -from calibre.web.feeds.news import BasicNewsRecipe - - -def new_tag(soup, name, attrs=()): - impl = getattr(soup, 'new_tag', None) - if impl is not None: - return impl(name, attrs=dict(attrs)) - return Tag(soup, name, attrs=attrs or None) - - -class LaPrensaHn(BasicNewsRecipe): - title = 'La Prensa - Honduras' - __author__ = 'Darko Miletic' - description = 'Noticias de Honduras y mundo' - publisher = 'La Prensa' - category = 'news, politics, Honduras' - oldest_article = 2 - max_articles_per_feed = 100 - use_embedded_content = False - no_stylesheets = True - remove_javascript = True - encoding = 'utf-8' - language = 'es_HN' - - lang = 'es-HN' - direction = 'ltr' - - html2lrf_options = [ - '--comment', description, '--category', category, '--publisher', publisher - ] - - html2epub_options = 'publisher="' + publisher + '"\ncomments="' + description + '"\ntags="' + category + \ - '"\npretty_print=True\noverride_css=" p {text-indent: 0cm; margin-top: 0em; margin-bottom: 0.5em} "' - - remove_tags = [dict(name=['form', 'object', 'embed'])] - - keep_only_tags = [ - dict(name='h1', attrs={'class': 'titulo1'}), dict( - name='div', attrs={'class': ['sumario11', 'hora', 'texto']}) - ] - - feeds = [(u'Noticias', u'http://feeds.feedburner.com/laprensa_titulares')] - - def preprocess_html(self, soup): - soup.html['lang'] = self.lang - soup.html['dir'] = self.direction - mlang = new_tag(soup, 'meta', [ - ("http-equiv", "Content-Language"), ("content", self.lang)]) - mcharset = new_tag(soup, 'meta', [ - ("http-equiv", "Content-Type"), ("content", "text/html; charset=utf-8")]) - soup.head.insert(0, mlang) - soup.head.insert(1, mcharset) - for item in soup.findAll(style=True): - del item['style'] - return soup diff --git a/recipes/laprensa_ni.recipe b/recipes/laprensa_ni.recipe deleted file mode 100644 index 53c2b8ac50..0000000000 --- a/recipes/laprensa_ni.recipe +++ /dev/null @@ -1,71 +0,0 @@ -#!/usr/bin/env python - -__license__ = 'GPL v3' -__copyright__ = '2009, Darko Miletic ' -''' -laprensa.com.ni -''' - -import datetime -import time - -from calibre.web.feeds.news import BasicNewsRecipe - - -class LaPrensa_ni(BasicNewsRecipe): - title = 'La Prensa - Nicaragua' - __author__ = 'Darko Miletic' - description = 'LA PRENSA - EL Diario de los Nicaraguenses' - publisher = 'La Prensa' - oldest_article = 1 - max_articles_per_feed = 100 - no_stylesheets = True - use_embedded_content = False - encoding = 'cp1252' - remove_javascript = True - language = 'es_NI' - - months_es = ['enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', - 'julio', 'agosto', 'septiembre', 'octubre', 'noviembre', 'diciembre'] - current_month = months_es[datetime.date.today().month - 1] - current_index = time.strftime( - "http://www.laprensa.com.ni/archivo/%Y/" + current_month + "/%d/noticias/") - - feeds = [(u'Portada', current_index + 'portada/')] - - def print_version(self, url): - return url.replace('.shtml', '_print.shtml') - - def preprocess_html(self, soup): - del soup.body['onload'] - mtag = '' - soup.head.insert(0, mtag) - atag = soup.find('span', attrs={'class': 'mas_noticias'}) - if atag: - atag.extract() - btag = soup.find('a', attrs={'href': '/archivo'}) - if btag: - btag.extract() - for item in soup.findAll(style=True): - del item['style'] - return soup - - def parse_index(self): - totalfeeds = [] - lfeeds = self.get_feeds() - for feedobj in lfeeds: - feedtitle, feedurl = feedobj - self.report_progress(0, _('Fetching feed') + ' %s...' % - (feedtitle if feedtitle else feedurl)) - articles = [] - soup = self.index_to_soup(feedurl) - for item in soup.findAll('a', attrs={'class': ['titular', 'titulonotamed']}): - description = '' - url = feedurl + item['href'] - title = self.tag_to_string(item) - date = time.strftime(self.timefmt) - articles.append({ - 'title': title, 'date': date, 'url': url, 'description': description - }) - totalfeeds.append((feedtitle, articles)) - return totalfeeds diff --git a/recipes/latribuna.recipe b/recipes/latribuna.recipe deleted file mode 100644 index 4fd1fb0c02..0000000000 --- a/recipes/latribuna.recipe +++ /dev/null @@ -1,75 +0,0 @@ -#!/usr/bin/env python - -__license__ = 'GPL v3' -__copyright__ = '2009, Darko Miletic ' -''' -www.latribuna.hn -''' - -from calibre.ebooks.BeautifulSoup import Tag -from calibre.web.feeds.news import BasicNewsRecipe - - -def new_tag(soup, name, attrs=()): - impl = getattr(soup, 'new_tag', None) - if impl is not None: - return impl(name, attrs=dict(attrs)) - return Tag(soup, name, attrs=attrs or None) - - -class LaTribuna(BasicNewsRecipe): - title = 'La Tribuna - Honduras' - __author__ = 'Darko Miletic' - description = 'Noticias de Honduras y mundo' - publisher = 'La Tribuna' - category = 'news, politics, Honduras' - oldest_article = 2 - max_articles_per_feed = 100 - use_embedded_content = False - no_stylesheets = True - remove_javascript = True - encoding = 'utf-8' - language = 'es_HN' - - lang = 'es_HN' - direction = 'ltr' - - html2lrf_options = [ - '--comment', description, '--category', category, '--publisher', publisher - ] - - html2epub_options = 'publisher="' + publisher + '"\ncomments="' + description + '"\ntags="' + category + \ - '"\npretty_print=True\noverride_css=" p {text-indent: 0cm; margin-top: 0em; margin-bottom: 0.5em} "' - - remove_tags = [dict(name=['form', 'object', 'embed'])] - - keep_only_tags = [ - dict(name='p', attrs={'id': ['BlogTitle', 'BlogDate']}), dict( - name='div', attrs={'id': 'BlogContent'}) - ] - - feeds = [(u'Noticias', u'http://www.latribuna.hn/web2.0/?feed=rss')] - - def print_version(self, url): - return url + '&print=1' - - def preprocess_html(self, soup): - soup.html['lang'] = self.lang - soup.html['dir'] = self.direction - mlang = new_tag(soup, 'meta', [ - ("http-equiv", "Content-Language"), ("content", self.lang)]) - mcharset = new_tag(soup, 'meta', [ - ("http-equiv", "Content-Type"), ("content", "text/html; charset=utf-8")]) - soup.head.insert(0, mlang) - soup.head.insert(1, mcharset) - for item in soup.findAll(style=True): - del item['style'] - return soup - - def get_cover_url(self): - cover_url = None - soup = self.index_to_soup('http://www.latribuna.hn/web2.0/') - cover_item = soup.find('div', attrs={'class': 'portada_impresa'}) - if cover_item: - cover_url = cover_item.a.img['src'] - return cover_url diff --git a/recipes/lavanguardia.recipe b/recipes/lavanguardia.recipe deleted file mode 100644 index c156064b07..0000000000 --- a/recipes/lavanguardia.recipe +++ /dev/null @@ -1,76 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -__license__ = 'GPL v3' -__copyright__ = '2009, Darko Miletic ' -''' -www.lavanguardia.es -''' - -from calibre.ebooks.BeautifulSoup import Tag -from calibre.web.feeds.news import BasicNewsRecipe - - -def new_tag(soup, name, attrs=()): - impl = getattr(soup, 'new_tag', None) - if impl is not None: - return impl(name, attrs=dict(attrs)) - return Tag(soup, name, attrs=attrs or None) - - -class LaVanguardia(BasicNewsRecipe): - title = 'La Vanguardia Digital' - __author__ = 'Darko Miletic' - description = u'Noticias desde España' - publisher = 'La Vanguardia' - category = 'news, politics, Spain' - oldest_article = 2 - max_articles_per_feed = 100 - no_stylesheets = True - use_embedded_content = False - delay = 5 - language = 'es' - - direction = 'ltr' - - html2lrf_options = [ - '--comment', description, '--category', category, '--publisher', publisher - ] - - html2epub_options = 'publisher="' + publisher + \ - '"\ncomments="' + description + '"\ntags="' + category + '"' - - feeds = [ - - (u'Portada', u'http://feeds.feedburner.com/lavanguardia/home'), - (u'Cultura', u'http://feeds.feedburner.com/lavanguardia/cultura'), - (u'Deportes', u'http://feeds.feedburner.com/lavanguardia/deportes'), - (u'Economia', u'http://feeds.feedburner.com/lavanguardia/economia'), - (u'El lector opina', u'http://feeds.feedburner.com/lavanguardia/lectoropina'), - (u'Gente y TV', u'http://feeds.feedburner.com/lavanguardia/gente'), - (u'Internacional', u'http://feeds.feedburner.com/lavanguardia/internacional'), - (u'Internet y tecnologia', u'http://feeds.feedburner.com/lavanguardia/internet'), - (u'Motor', u'http://feeds.feedburner.com/lavanguardia/motor'), - (u'Politica', u'http://feeds.feedburner.com/lavanguardia/politica'), - (u'Sucesos', u'http://feeds.feedburner.com/lavanguardia/sucesos') - ] - - keep_only_tags = [ - dict(name='div', attrs={'class': 'detalle noticia'}) - ] - - remove_tags = [ - dict(name=['object', 'link', 'script']), dict( - name='div', attrs={'class': ['colC', 'peu', 'jstoolbar']}) - ] - - remove_tags_after = [dict(name='div', attrs={'class': 'text'})] - - def preprocess_html(self, soup): - soup.html['dir'] = self.direction - mcharset = new_tag(soup, 'meta', [ - ("http-equiv", "Content-Type"), ("content", "text/html; charset=utf-8")]) - soup.head.insert(0, mcharset) - for item in soup.findAll(style=True): - del item['style'] - return soup diff --git a/recipes/lavanguardia_corresponsales_es.recipe b/recipes/lavanguardia_corresponsales_es.recipe deleted file mode 100644 index b576890f85..0000000000 --- a/recipes/lavanguardia_corresponsales_es.recipe +++ /dev/null @@ -1,59 +0,0 @@ -# vim:fileencoding=utf-8 -from __future__ import unicode_literals - -from calibre.web.feeds.news import BasicNewsRecipe - - -class LaVanguardiaCorresponsalesRecipe (BasicNewsRecipe): - __author__ = 'Marc Busqué ' - __url__ = 'http://www.lamarciana.com' - __version__ = '1.0.2' - __license__ = 'GPL v3' - __copyright__ = '2012, Marc Busqué ' - title = u'La Vanguardia - Blogs de los corresponsales' - description = u'Blogs de los corresponsales de La Vanguardia en este mismo periódico' - url = 'http://www.lavanguardia.com/blogs/index.html' - language = 'es' - tags = 'información, internacional ' - oldest_article = 30 - remove_empty_feeds = True - no_stylesheets = True - - def get_extra_css(self): - if not self.extra_css: - br = self.get_browser() - self.extra_css = br.open_novisit( - 'https://raw.githubusercontent.com/laMarciana/gutenweb/master/dist/gutenweb.css').read().replace('@charset "UTF-8";', '') - return self.extra_css - - feeds = [ - (u'Marc Bassets - Diario de Washington', - u'http://blogs.lavanguardia.com/washington/feed'), - (u'Rafael Poch - Diario de Berlín', - u'http://blogs.lavanguardia.com/berlin/feed'), - (u'Eusebio Val - Diario de Roma', u'http://blogs.lavanguardia.com/roma/feed'), - (u'Robert Mur - Diario de Buenos Aires', - u'http://blogs.lavanguardia.com/buenos-aires/feed'), - (u'Isidre Ambrós - Diario de Pekín', - u'http://blogs.lavanguardia.com/pekin/feed'), - (u'Beatriz Navarro - Diario de Bruselas', - u'http://blogs.lavanguardia.com/bruselas-navarro/feed'), - (u'Lluis Uría - Diario de París', - u'http://blogs.lavanguardia.com/paris-uria/feed'), - (u'Tomás Alcoverro - Diario de Beirut', - u'http://blogs.lavanguardia.com/beirut/feed'), - (u'Enrique Cymerman - Diario de Jerusalén', - u'http://blogs.lavanguardia.com/jerusalen-cymerman/feed'), - (u'Jordi Joan Baños - Diario de India', - u'http://blogs.lavanguardia.com/india/feed'), - (u'Gonzalo Aragonés - Diario de Moscú', - u'http://blogs.lavanguardia.com/moscu/feed'), - (u'Andy Robinson - Diario itinerante', - u'http://blogs.lavanguardia.com/diario-itinerante/feed'), - (u'Rafael Ramos - Diario de Londres', - u'http://blogs.lavanguardia.com/londres/feed'), - (u'Rafael Ramos - El cocinero de Downing Street', - u'http://blogs.lavanguardia.com/el-cocinero-de-downing-street/feed'), - (u'Ricardo Ginés Echevarría - Diario de Estambul', - u'http://blogs.lavanguardia.com/estambul/feed'), - ] diff --git a/recipes/lavenir_be.recipe b/recipes/lavenir_be.recipe deleted file mode 100644 index 8d541ef888..0000000000 --- a/recipes/lavenir_be.recipe +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env python - -__license__ = 'GPL v3' -__copyright__ = '2008-2011, Lionel Bergeret ' -''' -lavenir.net -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class LAvenir(BasicNewsRecipe): - title = u'L\'Avenir' - __author__ = u'Lionel Bergeret' - description = u'News from Belgium in French' - publisher = u'lavenir.net' - category = 'news, Belgium' - oldest_article = 3 - language = 'fr' - - max_articles_per_feed = 20 - no_stylesheets = True - use_embedded_content = False - timefmt = ' [%d %b %Y]' - - keep_only_tags = [ - dict(name='div', attrs={'class': 'photo'}), dict(name='p', attrs={ - 'class': 'intro'}), dict(name='div', attrs={'class': 'article-body'}) - ] - - feeds = [ - - (u'Belgique', u'http://www.lavenir.net/rss.aspx?foto=1&intro=1§ion=info&info=df156511-c24f-4f21-81c3-a5d439a9cf4b'), - (u'Monde', u'http://www.lavenir.net/rss.aspx?foto=1&intro=1§ion=info&info=1642237c-66b9-4e8a-a8c1-288d61fefe7e'), - (u'Societe', u'http://www.lavenir.net/rss.aspx?foto=1&intro=1§ion=info&info=12e1a2f4-7e03-4cf1-afec-016869072317') - ] - - def preprocess_html(self, soup): - for alink in soup.findAll('a'): - if alink.string is not None: - tstr = alink.string - alink.replaceWith(tstr) - return soup - - def get_cover_url(self): - cover_url = 'http://www.lavenir.net/extra/Static/journal/Pdf/1/UNE_Nationale.PDF' - return cover_url diff --git a/recipes/le_journal.recipe b/recipes/le_journal.recipe deleted file mode 100644 index 7345756088..0000000000 --- a/recipes/le_journal.recipe +++ /dev/null @@ -1,43 +0,0 @@ -__author__ = ' (lrfurtado@yahoo.com.br)' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class LeJournalDeMontrealRecipe(BasicNewsRecipe): - - title = u'Le Journal de Montreal' - description = u'Le Journal de Montreal' - __author__ = 'Luciano Furtado' - language = 'fr' - - oldest_article = 7 - use_embedded_content = 0 - max_articles_per_feed = 15 - - remove_tags = [ - dict(name='ul', attrs={'id': 'mainNav'}), - dict(name='div', attrs={'id': 'boxPolitique'}), - dict(name='div', attrs={'id': 'boxScoop'}), - dict(name='div', attrs={'id': 'DossierSpec'}), - dict(name='div', attrs={'id': 'channelBoxes'}), - dict(name='div', attrs={'id': 'sectionBoxes'}), - dict(name='div', attrs={'id': 'header'}), - dict(name='div', attrs={'id': 'footer'}), - dict(name='div', attrs={'id': 'navbarCanoe_container'}), - dict(name='div', attrs={'id': 'popularCanoe'}), - dict(name='div', attrs={'id': 'textAds'}), - dict(name='div', attrs={'id': '24heures'}), - dict(name='div', attrs={'class': 'bottomBox clear'}), - dict(name='div', attrs={'class': 'articleControls thin'}), - ] - - feeds = [ - (u'Actualites', - u'http://www.canoe.com/rss/feed/nouvelles/ljm_actualites.xml'), - (u'Arts et spectacle', - u'http://www.canoe.com/rss/feed/nouvelles/ljm_arts.xml'), - (u'Sports', - u'http://www.canoe.com/rss/feed/nouvelles/ljm_sports.xml'), - (u'Chroniques', - u'http://www.canoe.com/rss/feed/nouvelles/ljm_chroniques.xml'), - ] diff --git a/recipes/le_temps.recipe b/recipes/le_temps.recipe deleted file mode 100644 index 1bdd674a28..0000000000 --- a/recipes/le_temps.recipe +++ /dev/null @@ -1,119 +0,0 @@ -#!/usr/bin/env python -# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai -# License: GPLv3 Copyright: 2009, Kovid Goyal - -from calibre.web.feeds.news import BasicNewsRecipe - - -def classes(classes): - q = frozenset(classes.split(' ')) - return dict( - attrs={'class': lambda x: x and frozenset(x.split()).intersection(q)} - ) - - -class LeTemps(BasicNewsRecipe): - title = u'Le Temps' - oldest_article = 7 - max_articles_per_feed = 100 - __author__ = 'Kovid Goyal' - description = 'French news. Needs a subscription from https://www.letemps.ch' - no_stylesheets = True - remove_javascript = True - encoding = 'UTF-8' - language = 'fr' - needs_subscription = True - use_embedded_content = False - remove_empty_feeds = True - - def get_browser(self): - br = BasicNewsRecipe.get_browser(self) - br.open('https://www.letemps.ch/user/login') - br.select_form(action='/user/login') - br['name'] = self.username - br['pass'] = self.password - raw = br.submit().read() - if b'href="/subscribe"' in raw: - raise ValueError( - 'Failed to login to letemps.ch. Check ' - 'your username and password' - ) - return br - - keep_only_tags = [ - classes('picture-cover article-content'), - ] - - remove_tags = [ - dict(name=['button', 'source']), - classes('share related-news'), - ] - - feeds = [ - (u'Actualité', u'https://letemps.ch/rss/site/'), - (u'Actualité - Monde', u'https://letemps.ch/rss/site/actualite/monde'), - ( - u'Actualité - Suisse & régions', - u'https://letemps.ch/rss/site/actualite/suisse_regions' - ), (u'Actualité - Sport', u'https://letemps.ch/rss/site/actualite/sports'), - ( - u'Actualité - Sciences & Environnement', - u'https://letemps.ch/rss/site/actualite/sciences_environnement' - ), - ( - u'Actualité - Multimédia', - u'https://letemps.ch/rss/site/actualite/multimedia' - ), - (u'Actualité - Société', u'https://letemps.ch/rss/site/actualite/societe'), - ( - u'Actualité - Société | Quoi de neuf', - u'https://letemps.ch/rss/site/actualite/societe/quoi_de_neuf' - ), (u'Economie & Finance', u'https://letemps.ch/rss/site/economie_finance'), - ( - u'Economie & Finance - Finance', - u'https://letemps.ch/rss/site/economie_finance/finance' - ), - ( - u'Economie & Finance - Fonds de placement', - u'https://letemps.ch/rss/site/economie_finance/fonds_placement' - ), - ( - u'Economie & Finance - Carrières', - u'https://letemps.ch/rss/site/economie_finance/carrieres' - ), (u'Culture', u'http://letemps.ch/rss/site/culture'), - (u'Culture - Cinémas', u'https://letemps.ch/rss/site/culture/cinema'), - (u'Culture - Musiques', u'https://letemps.ch/rss/site/culture/musiques'), - (u'Culture - Scènes', u'https://letemps.ch/rss/site/culture/scenes'), - ( - u'Culture - Arts plastiques', - u'https://letemps.ch/rss/site/culture/arts_plastiques' - ), (u'Culture - Livres', u'https://letemps.ch/rss/site/culture/livres'), - (u'Lifestyle - Luxe', u'https://letemps.ch/rss/site/lifestyle/luxe'), - (u'Lifestyle - Mode', u'https://letemps.ch/rss/site/lifestyle/mode'), - ( - u'Lifestyle - Horlogerie & Joaillerie', - u'https://letemps.ch/rss/site/lifestyle/horlogerie_joaillerie' - ), (u'Lifestyle - Design', u'https://letemps.ch/rss/site/lifestyle/design'), - (u'Lifestyle - Voyages', u'https://letemps.ch/rss/site/lifestyle/voyages'), - ( - u'Lifestyle - Gastronomie', - u'https://letemps.ch/rss/site/lifestyle/gastronomie' - ), - ( - u'Lifestyle - Architecture & Immobilier', - u'https://letemps.ch/rss/site/lifestyle/architecture_immobilier' - ), - ( - u'Lifestyle - Automobile', - u'https://letemps.ch/rss/site/lifestyle/automobile' - ), (u'Opinions', u'http://letemps.ch/rss/site/opinions'), - ( - u'Opinions - Editoriaux', - u'https://letemps.ch/rss/site/opinions/editoriaux' - ), (u'Opinions - Invités', u'https://letemps.ch/rss/site/opinions/invites'), - ( - u'Opinions - Chroniques', - u'https://letemps.ch/rss/site/opinions/chroniques' - ), - (u'Opinions - Chappatte', u'https://letemps.ch/rss/site/opinions/chappatte') - ] diff --git a/recipes/leduc.recipe b/recipes/leduc.recipe deleted file mode 100644 index f763d880f1..0000000000 --- a/recipes/leduc.recipe +++ /dev/null @@ -1,52 +0,0 @@ -from calibre.web.feeds.news import BasicNewsRecipe - - -class AdvancedUserRecipe1292550626(BasicNewsRecipe): - title = 'Leduc - Wetaskiwin Pipestone Flyer' - __author__ = 'Brian Hahn' - description = '''Provides news from central Alberta, Canada. This is a - weekly publication that provides coverage from the Cities of Leduc and - Wetaskiwin, including news from two complete counties, plus the towns and - villages within. The counties of Leduc and Wetaskiwin provide news - coverage of agriculture, sports, government, family, events and opinion. - This publication updated weekly every Thursday.''' - oldest_article = 13 - max_articles_per_feed = 100 - no_stylesheets = True - use_embedded_content = False - publisher = 'Pipestone Publishing' - category = 'News, Alberta, Canada' - language = 'en_CA' - encoding = 'iso-8859-1' - cover_url = 'http://www.pipestoneflyer.ca/images/calibre-cover.jpg' - remove_tags_before = dict(id='ContentPanel') - remove_tags_after = dict(id='ContentPanel') - remove_tags = [dict(name='div', - attrs={'id': 'StoryNav'}), dict(name='div', - attrs={'id': 'BottomAds'}), dict(name='div', attrs={'id': 'MoreStoryLinks'})] - extra_css = 'img { margin:5px }' - feeds = [ - ('Feature', 'http://www.pipestoneflyer.ca/Feature.rss'), - ('Editors Desk', 'http://www.pipestoneflyer.ca/Editor%27s%20Desk.rss'), - ('Letters', 'http://www.pipestoneflyer.ca/Letters.rss'), - ('A Loco Viewpoint', - 'http://www.pipestoneflyer.ca/A%20Loco%20Viewpoint.rss'), - ('Lifes Doorway', 'http://www.pipestoneflyer.ca/Life%27s%20Doorway.rss'), - ('From the Otherside', - 'http://www.pipestoneflyer.ca/From%20the%20Otherside.rss'), - ('Opinion', 'http://www.pipestoneflyer.ca/Opinion.rss'), - ('Community', 'http://www.pipestoneflyer.ca/Community.rss'), - ('Sports', 'http://www.pipestoneflyer.ca/Sports.rss'), - ('Chambers', 'http://www.pipestoneflyer.ca/Chambers.rss'), - ('Government', 'http://www.pipestoneflyer.ca/Government.rss'), - ('Travel ', 'http://www.pipestoneflyer.ca/Travel%20.rss'), - ('Environment', 'http://www.pipestoneflyer.ca/Environment.rss'), - ('Health', 'http://www.pipestoneflyer.ca/Health.rss'), - ('Funnies', 'http://www.pipestoneflyer.ca/Funnies.rss'), - ('Events', 'http://www.pipestoneflyer.ca/Events.rss'), - ('Faith', 'http://www.pipestoneflyer.ca/Faith.rss'), - ('News and Views', 'http://www.pipestoneflyer.ca/News%20and%20Views.rss'), - ('Obituaries', 'http://www.pipestoneflyer.ca/Obituaries.rss'), - ('Police Blotter', 'http://www.pipestoneflyer.ca/Police%20Blotter.rss'), - ('Careers', 'http://www.pipestoneflyer.ca/Careers.rss'), - ] diff --git a/recipes/legitymizm.recipe b/recipes/legitymizm.recipe deleted file mode 100644 index fa7a341c0b..0000000000 --- a/recipes/legitymizm.recipe +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/env python - -__license__ = 'GPL v3' -__copyright__ = u'2010, Tomasz Dlugosz ' -''' -legitymizm.org -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class Legitymizm(BasicNewsRecipe): - title = u'Organizacja Monarchist\xf3w Polskich' - description = u'Portal legitymistyczny' - language = 'pl' - oldest_article = 7 - __author__ = u'Tomasz D\u0142ugosz' - max_articles_per_feed = 100 - cover_url = 'http://www.legitymizm.org/img_omp/logo.gif' - no_stylesheets = True - - feeds = [(u'Aktualno\u015bci i publicystyka', - u'http://www.legitymizm.org/rss.php')] - - keep_only_tags = [dict(name='div', attrs={'id': 'szeroka_kolumna'})] - remove_tags = [dict(name='div', attrs={'class': 'koniec_tresci_wlasciwej'}), - dict(name='div', attrs={'class': 'return'})] - - extra_css = ''' - body { font-family: Georgia, 'Times New Roman', Times, serif; } - h1 { color: #898981; font-weight: normal; font-size: 26px; letter-spacing: -1px; line-height: 23px; text-align: left; } - h2, h3 { font-weight: normal; font-size: 20px; line-height: 23px; letter-spacing: -1px; margin: 0 0 3px 0; text-align: left; } - #szeroka_kolumna { float: left; line-height: 20px; } - #szeroka_kolumna ul.wykaz { list-style-type: none; margin: 0 0 1.2em 0; padding: 0; } - #szeroka_kolumna ul.wykaz li.wykaz_2 { font-weight: bold; margin: 0.6em 0 0 0; } - #szeroka_kolumna ul.wykaz a { text-decoration: none; } - #szeroka_kolumna ul.wykaz li.wykaz_1 { margin: 0 0 0 1.3em; } - #szeroka_kolumna ul.wykaz li.wykaz_2 ul { margin: 0; padding: 0 0 0 1.3em; } - #szeroka_kolumna h3.autor { background-color: #898981; color: #f9f9f8; margin: -25px 0px 30px 0; text-align: left; padding: 0 0 0 2px; } - .tresc_wlasciwa { border-top: 1px solid #898981; padding: 30px 0px 0px 0px; position: relative; } - #cytat { font-size: 11px; line-height: 19px; font-style: italic; text-align: justify; } - #cytat img { width: 100px; height: 105px; float: right; margin: 3px 0 0 10px; } - .duzy_cytat { padding: 20px 20px 10px 20px; margin: 0 0 1.2em 0; } - #szeroka_kolumna img, #szeroka_kolumna object { padding: 3px; border: 1px solid #898981; } - #szeroka_kolumna img.ilustracja { margin: 0px 10px 0 0; float: left; } - p { margin: 0 0 1.2em 0; } - #cytat p.sentencja { margin: 0; } - #cytat p.sentencja:first-letter { font-size: 44px; line-height: 33px; margin: 0 2px 0 0; font-style: normal; float: left; display: block; } - p.autor { text-transform: uppercase; color: #898981; font-style: normal; text-align: left; } - ''' diff --git a/recipes/leipzer_volkszeitung.recipe b/recipes/leipzer_volkszeitung.recipe deleted file mode 100644 index 90696c4807..0000000000 --- a/recipes/leipzer_volkszeitung.recipe +++ /dev/null @@ -1,41 +0,0 @@ -from calibre.web.feeds.recipes import BasicNewsRecipe - -'''Calibre recipe to convert the RSS feeds of the Leipziger Volkszeitung to an ebook.''' - - -class SportsIllustratedRecipe(BasicNewsRecipe): - __author__ = 'a.peter' - __copyright__ = 'a.peter' - __license__ = 'GPL v3' - language = 'de' - description = 'Leipziger Volkszeitung Online RSS' - version = 1 - title = u'Leipziger Volkszeitung Online RSS' - timefmt = ' [%d.%m.%Y]' - - no_stylesheets = True - remove_javascript = True - use_embedded_content = False - publication_type = 'newspaper' - - keep_only_tags = [dict(name='div', attrs={'class': 'article'})] - remove_tags = [ - dict(name='div', attrs={'class': ['ARTICLE_MORE', 'clearfloat']})] - - feeds = [(u'Leipzig', u'http://nachrichten.lvz-online.de/rss/leipzig-rss.xml'), - (u'Mitteldeutschland', - u'http://nachrichten.lvz-online.de/rss/mitteldeutschland-rss.xml'), - (u'Brennpunkte', - u'http://nachrichten.lvz-online.de/rss/brennpunkte-rss.xml'), - (u'Polizeiticker', - u'http://nachrichten.lvz-online.de/rss/polizeiticker-rss.xml'), - (u'Boulevard', - u'http://nachrichten.lvz-online.de/rss/boulevard-rss.xml'), - (u'Kultur', u'http://nachrichten.lvz-online.de/rss/kultur-rss.xml'), - (u'Sport', u'http://nachrichten.lvz-online.de/rss/sport-rss.xml'), - (u'Regionalsport', - u'http://nachrichten.lvz-online.de/rss/regionalsport-rss.xml'), - (u'Knipser', u'http://nachrichten.lvz-online.de/rss/knipser-rss.xml')] - - def get_masthead_url(self): - return 'http://www.lvz-online.de/resources/themes/standard/images/global/logo.gif' diff --git a/recipes/lequipe.recipe b/recipes/lequipe.recipe deleted file mode 100644 index 619bf318bb..0000000000 --- a/recipes/lequipe.recipe +++ /dev/null @@ -1,46 +0,0 @@ -#!/usr/bin/env python - -__license__ = 'GPL v3' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class leequipe(BasicNewsRecipe): - title = u'l\'equipe' - __author__ = 'Artur Stachecki ' - language = 'fr' - description = u'Retrouvez tout le sport en direct sur le site de L\'EQUIPE et suivez l\'actualité du football, rugby, basket, cyclisme, f1, volley, hand, tous les résultats sportifs' # noqa - oldest_article = 1 - masthead_url = 'http://static.lequipe.fr/v6/img/logo-lequipe.png' - max_articles_per_feed = 100 - simultaneous_downloads = 5 - remove_javascript = True - no_stylesheets = True - use_embedded_content = False - recursions = 0 - - keep_only_tags = [] - keep_only_tags.append(dict(attrs={'id': ['article']})) - - remove_tags = [] - remove_tags.append(dict(attrs={ - 'id': ['partage', 'ensavoirplus', 'bloc_bas_breve', 'commentaires', 'tools']})) - remove_tags.append(dict(attrs={'class': ['partage_bis', 'date']})) - - feeds = [(u'Football', u'http://www.lequipe.fr/rss/actu_rss_Football.xml'), - (u'Auto-Moto', u'http://www.lequipe.fr/rss/actu_rss_Auto-Moto.xml'), - (u'Tennis', u'http://www.lequipe.fr/rss/actu_rss_Tennis.xml'), - (u'Golf', u'http://www.lequipe.fr/rss/actu_rss_Golf.xml'), - (u'Rugby', u'http://www.lequipe.fr/rss/actu_rss_Rugby.xml'), - (u'Basket', u'http://www.lequipe.fr/rss/actu_rss_Basket.xml'), - (u'Hand', u'http://www.lequipe.fr/rss/actu_rss_Hand.xml'), - (u'Cyclisme', u'http://www.lequipe.fr/rss/actu_rss_Cyclisme.xml'), - (u'Autres Sports', u'http://pipes.yahoo.com/pipes/pipe.run?_id=2039f7f4f350c70c5e4e8633aa1b37cd&_render=rss') - ] - - def preprocess_html(self, soup): - for alink in soup.findAll('a'): - if alink.string is not None: - tstr = alink.string - alink.replaceWith(tstr) - return soup diff --git a/recipes/les_echos.recipe b/recipes/les_echos.recipe deleted file mode 100644 index cecb872053..0000000000 --- a/recipes/les_echos.recipe +++ /dev/null @@ -1,18 +0,0 @@ -from calibre.web.feeds.news import BasicNewsRecipe - - -class HindustanTimes(BasicNewsRecipe): - title = u'Les Echos' - language = 'fr' - __author__ = 'Krittika Goyal' - oldest_article = 1 # days - max_articles_per_feed = 25 - use_embedded_content = False - - no_stylesheets = True - auto_cleanup = True - - feeds = [ - ('Articles', - 'http://rss.feedsportal.com/c/499/f/413824/index.rss'), - ] diff --git a/recipes/lescienze.recipe b/recipes/lescienze.recipe deleted file mode 100644 index 3b1ade36d2..0000000000 --- a/recipes/lescienze.recipe +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/env python -__license__ = 'GPL v3' -__author__ = 'Daniele Forsi' - -from calibre.web.feeds.recipes import BasicNewsRecipe - - -class LeScienze(BasicNewsRecipe): - title = 'Le Scienze' - description = 'Edizione italiana di Scientific American' - publication_type = 'magazine' - language = 'it' - conversion_options = { - 'publisher': 'Le Scienze S.p.A.', - 'tags': 'science', - } - - INDEX = 'http://www.lescienze.it/utility/2011/10/17/news/lista_rss-589690/' - masthead_url = 'http://www.lescienze.it/static/images/logo-le-scienze.png' - no_stylesheets = True - extra_css = ''' - .img-left,.img-right{font-style:italic;font-size:75%;padding:1em;margin:auto;} - .summary{font-style:italic;font-size:120%;} - ''' - keep_only_tags = [ - dict(name='article', attrs={'class': 'main-article'}), - ] - remove_tags = [ - dict(attrs={'class': [ - 'adv adv-middle', - 'colsx', - 'correlati', - 'social-toolbar-foot', - 'tags', - ]}), - ] - remove_empty_feeds = True - - def get_feeds(self): - soup = self.index_to_soup(self.INDEX) - feeds = [] - - for link in soup.findAll('a'): - href = link.get('href') - if href.endswith('.xml'): - title = link.string - feeds.append((title, href)) - - return feeds diff --git a/recipes/lesoir_be.recipe b/recipes/lesoir_be.recipe deleted file mode 100644 index ca56f2d0d7..0000000000 --- a/recipes/lesoir_be.recipe +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/env python - -__license__ = 'GPL v3' -__copyright__ = '2008-2011, Lionel Bergeret ' -''' -lesoir.be -''' - -from calibre import strftime -from calibre.web.feeds.news import BasicNewsRecipe - - -class LeSoirBe(BasicNewsRecipe): - title = u'Le Soir' - __author__ = u'Lionel Bergeret' - description = u'News from Belgium in French' - publisher = u'lesoir.be' - category = 'news, Belgium' - oldest_article = 3 - language = 'fr' - masthead_url = 'http://pdf.lesoir.be/pdf/images/SOIR//logo.gif' - - max_articles_per_feed = 20 - no_stylesheets = True - use_embedded_content = False - timefmt = ' [%d %b %Y]' - - keep_only_tags = [ - dict(name='div', attrs={'id': 'story_head'}), dict( - name='div', attrs={'id': 'story_body'}) - ] - - remove_tags = [ - dict(name='form', attrs={'id': 'story_actions'}), dict(name='div', attrs={ - 'id': 'sb-share'}), dict(name='div', attrs={'id': 'sb-subscribe'}) - ] - - feeds = [ - - (u'Belgique', u'http://www.lesoir.be/actualite/belgique/rss.xml'), - (u'France', u'http://www.lesoir.be/actualite/france/rss.xml'), - (u'Monde', u'http://www.lesoir.be/actualite/monde/rss.xml'), - (u'Regions', u'http://www.lesoir.be/regions/rss.xml'), - (u'Vie du Net', u'http://www.lesoir.be/actualite/vie_du_net/rss.xml'), - (u'Petite Gazette', u'http://www.lesoir.be/actualite/sciences/rss.xml') - ] - - def get_cover_url(self): - cover_url = strftime( - 'http://pdf.lesoir.be/pdf/%Y-%m-%d_BRUX_UNE_1.PDF') - return cover_url diff --git a/recipes/letsgetcritical.recipe b/recipes/letsgetcritical.recipe deleted file mode 100644 index 39d47c4ff9..0000000000 --- a/recipes/letsgetcritical.recipe +++ /dev/null @@ -1,96 +0,0 @@ -import re - -from calibre.web.feeds.news import BasicNewsRecipe - - -class LetsGetCritical(BasicNewsRecipe): - title = u"Let's Get Critical" - description = 'Curation / aggregation of criticisms of the arts and culture ' - language = 'en' - __author__ = 'barty on mobileread.com forum' - max_articles_per_feed = 100 - no_stylesheets = False - timefmt = ' [%a, %d %b, %Y]' - oldest_article = 365 - auto_cleanup = True - INDEX = 'http://www.letsgetcritical.org' - CATEGORIES = [ - # comment out categories you don't want - # (user friendly name, system name, max number of articles to load) - ('Architecture', 'architecture', 30), - ('Art', 'art', 30), - ('Books', 'books', 30), - ('Design', 'design', 30), - ('Digital', 'digital', 30), - ('Food', 'food', 30), - ('Movies', 'movies', 30), - ('Music', 'music', 30), - ('Television', 'television', 30), - ('Other articles', '', 10) - ] - - def parse_index(self): - self.cover_url = 'http://www.letsgetcritical.org/wp-content/themes/lets_get_critical/images/lgc.jpg' - feeds = [] - seen_urls = set() - regex = re.compile(r'http://(www\.)?([^/:]+)', re.I) - - for category in self.CATEGORIES: - - (cat_name, tag, max_articles) = category - - tagurl = '' if tag == '' else '/category/' + tag.lower() - self.log('Reading category:', cat_name) - - articles = [] - pageno = 1 - - while len(articles) < max_articles and pageno < 100: - - page = "%s%s/page/%d" % (self.INDEX, tagurl, - pageno) if pageno > 1 else self.INDEX + tagurl - pageno += 1 - - self.log('\tReading page:', page) - try: - soup = self.index_to_soup(page) - except: - break - - posts = soup.findAll('div', attrs={'class': 'post_multi'}) - if len(posts) == 0: - break - - for post in posts: - dt = post.find('div', attrs={'class': 'title'}) - atag = dt.find('a') - url = atag['href'] - # skip promotionals and duplicate - if url.startswith('http://letsgetcritical') or url.startswith('/') or url in seen_urls: - continue - seen_urls.add(url) - title = self.tag_to_string(atag) - self.log('\tFound article:', title) - self.log('\t', url) - desc = post.find('blockquote') - desc = self.tag_to_string(desc) if desc else '' - m = regex.match(url) - if m: - desc = "[%s] %s" % (m.group(2), desc) - date = '' - p = post.previousSibling - # navigate up sibling to find date - while p: - if ''.join(p.get('class') or '') == 'singledate': - date = self.tag_to_string(p) - break - p = p.previousSibling - articles.append( - {'title': title, 'url': url, 'description': desc, 'date': date}) - if len(articles) >= max_articles: - break - - if articles: - feeds.append((cat_name, articles)) - - return feeds diff --git a/recipes/levante.recipe b/recipes/levante.recipe deleted file mode 100644 index eb4d09e581..0000000000 --- a/recipes/levante.recipe +++ /dev/null @@ -1,105 +0,0 @@ -from calibre.ebooks.BeautifulSoup import Tag -from calibre.web.feeds.news import BasicNewsRecipe - - -def new_tag(soup, name, attrs=()): - impl = getattr(soup, 'new_tag', None) - if impl is not None: - return impl(name, attrs=dict(attrs)) - return Tag(soup, name, attrs=attrs or None) - - -class LevanteRecipe(BasicNewsRecipe): - __license__ = 'GPL v3' - __author__ = 'kwetal' - version = 1 - language = 'es' - description = u'El Mercantil Valenciano' - title = u'Levante' - - oldest_article = 2 - max_articles_per_feed = 100 - encoding = 'latin1' - no_stylesheets = True - remove_javascript = True - - # Feeds taken from http://www.levante-emv.com/servicios/rss/rss.jsp?pServicio=rss - # Feed titles are without accented characters for now. Hope to resolve - # this in the future. - feeds = [] - feeds.append( - (u'Portada Valencia', u'http://www.levante-emv.com/elementosInt/rss/1')) - feeds.append( - (u'Portada Castello', u'http://www.levante-emv.com/elementosInt/rss/2')) - feeds.append( - (u'Portada Alacant', u'http://www.levante-emv.com/elementosInt/rss/3')) - feeds.append( - (u'Lo Mas Leido', u'http://www.levante-emv.com/elementosInt/rss/LoMas')) - feeds.append( - (u'Seccion al minuto', u'http://www.levante-emv.com/elementosInt/rss/AlMinuto')) - feeds.append((u'Comunidad Valenciana', - u'http://www.levante-emv.com/elementosInt/rss/19')) - feeds.append( - (u'Valencia', u'http://www.levante-emv.com/elementosInt/rss/16')) - feeds.append( - (u'Castello', u'http://www.levante-emv.com/elementosInt/rss/4')) - feeds.append( - (u'Alacant', u'http://www.levante-emv.com/elementosInt/rss/17')) - feeds.append( - (u'Comarcas', u'http://www.levante-emv.com/elementosInt/rss/12')) - feeds.append((u'Espana', u'http://www.levante-emv.com/elementosInt/rss/6')) - feeds.append( - (u'Internacional', u'http://www.levante-emv.com/elementosInt/rss/7')) - feeds.append( - (u'Opinion', u'http://www.levante-emv.com/elementosInt/rss/5')) - feeds.append( - (u'Economia', u'http://www.levante-emv.com/elementosInt/rss/8')) - feeds.append( - (u'Sociedad', u'http://www.levante-emv.com/elementosInt/rss/9')) - feeds.append( - (u'Sucesos', u'http://www.levante-emv.com/elementosInt/rss/10')) - feeds.append( - (u'Deportes', u'http://www.levante-emv.com/elementosInt/rss/11')) - feeds.append((u'Motor', u'http://www.levante-emv.com/elementosInt/rss/31')) - feeds.append( - (u'Panorama', u'http://www.levante-emv.com/elementosInt/rss/18')) - feeds.append( - (u'Salud y Vida', u'http://www.levante-emv.com/elementosInt/rss/20')) - feeds.append( - (u'Ciencia y Salud', u'http://www.levante-emv.com/elementosInt/rss/44')) - feeds.append((u'Ciencia e Investigacion', - u'http://www.levante-emv.com/elementosInt/rss/23')) - feeds.append( - (u'Ensenanza', u'http://www.levante-emv.com/elementosInt/rss/22')) - feeds.append((u'Fiestas y Tradiciones', - u'http://www.levante-emv.com/elementosInt/rss/24')) - feeds.append( - (u'Club Diario', u'http://www.levante-emv.com/elementosInt/rss/26')) - feeds.append( - (u'Juntos', u'http://www.levante-emv.com/elementosInt/rss/33')) - feeds.append( - (u'Integrados', u'http://www.levante-emv.com/elementosInt/rss/35')) - feeds.append( - (u'Agenda', u'http://www.levante-emv.com/elementosInt/rss/36')) - feeds.append( - (u'Cultura', u'http://www.levante-emv.com/elementosInt/rss/39')) - feeds.append( - (u'Tecnologia', u'http://www.levante-emv.com/elementosInt/rss/40')) - feeds.append((u'Gente', u'http://www.levante-emv.com/elementosInt/rss/41')) - feeds.append( - (u'Television', u'http://www.levante-emv.com/elementosInt/rss/42')) - feeds.append( - (u'Participa', u'http://www.levante-emv.com/elementosInt/rss/45')) - - keep_only_tags = [dict(name='div', attrs={'class': 'noticia_titular'}), - dict(name='div', attrs={'class': 'subtitulo'}), - dict(name='div', attrs={'id': 'noticia_texto', 'class': 'noticia_texto'})] - - def preprocess_html(self, soup): - # Nuke some real crappy html - theirHead = soup.head - theirHead.extract() - myHead = new_tag(soup, 'head') - soup.insert(0, myHead) - - return soup diff --git a/recipes/liberation.recipe b/recipes/liberation.recipe index dd1821330d..a81bd5a93a 100644 --- a/recipes/liberation.recipe +++ b/recipes/liberation.recipe @@ -87,7 +87,7 @@ class Liberation(BasicNewsRecipe): oldest_article = 1.15 remove_empty_feeds = True articles_are_obfuscated = True - timefmt = '[ %s]' % datetime.now().strftime(m_fr[datetime.now().month] + ' %d, %Y') + timefmt = ' [%s]' % datetime.now().strftime(m_fr[datetime.now().month] + ' %d, %Y') ignore_duplicate_articles = {'title', 'url'} key = 'ZWplZVBlaW5nZWl0YWVnaG8zd2VlbmdlZXlvaHB1' masthead_url = 'https://journal.liberation.fr/img/logo.svg' diff --git a/recipes/libero.recipe b/recipes/libero.recipe deleted file mode 100644 index 09713d894d..0000000000 --- a/recipes/libero.recipe +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/env python -__license__ = 'GPL v3' -__author__ = 'Gabriele Marini, based on Darko Miletic' -__copyright__ = '2009-2010, Darko Miletic ' -description = 'Italian daily newspaper - 13-05-2010' - -''' -http://www.libero-news.it/ -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class LiberoNews(BasicNewsRecipe): - __author__ = 'Marini Gabriele' - description = 'Italian daily newspaper' - - cover_url = 'http://www.edicola.liberoquotidiano.it/vnlibero/fpcut.jsp?testata=milano' - title = u'Libero ' - publisher = 'EDITORIALE LIBERO s.r.l 2006' - category = 'News, politics, culture, economy, general interest' - - language = 'it' - timefmt = '[%a, %d %b, %Y]' - - oldest_article = 7 - max_articles_per_feed = 50 - use_embedded_content = False - recursion = 100 - - no_stylesheets = True - conversion_options = {'linearize_tables': True} - remove_javascript = True - - keep_only_tags = [ - dict(name='div', attrs={'class': 'Articolo'}), - dict(name='article') - ] - remove_tags = [ - dict(name='div', attrs={ - 'class': ['CommentaFoto', 'Priva2', 'login_commenti', 'box_16']}), - dict(name='div', attrs={'id': ['commentigenerale']}) - ] - feeds = [ - (u'Politica', u'http://www.libero-news.it/rss.jsp?sezione=14'), - (u'Italia', u'http://www.libero-news.it/rss.jsp?sezione=15'), - (u'Esteri', u'http://www.libero-news.it/rss.jsp?sezione=16'), - (u'Economia', u'http://www.libero-news.it/rss.jsp?sezione=17'), - (u'Cultura', u'http://www.libero-news.it/rss.jsp?sezione=18'), - (u'Scienze', u'http://www.libero-news.it/rss.jsp?sezione=19'), - (u'Tecnologia', u'http://www.libero-news.it/rss.jsp?sezione=20'), - (u'LifeStyle', u'http://www.libero-news.it/rss.jsp?sezione=22'), - (u'Sport', u'http://www.libero-news.it/rss.jsp?sezione=23'), - (u'Costume e Societ\xc3\xa0', u' http://www.libero-news.it/rss.jsp?sezione=24'), - (u'Milano', u'http://www.libero-news.it/rss.jsp?sezione=26'), - (u'Roma', u'http://www.libero-news.it/rss.jsp?sezione=27'), - (u'Alimentazione', u'http://www.libero-news.it/rss.jsp?sezione=29') - ] diff --git a/recipes/lidovky.recipe b/recipes/lidovky.recipe deleted file mode 100644 index 173cbd2768..0000000000 --- a/recipes/lidovky.recipe +++ /dev/null @@ -1,37 +0,0 @@ -# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai -from __future__ import unicode_literals - -import re - -from calibre.web.feeds.recipes import BasicNewsRecipe - - -class lnRecipe(BasicNewsRecipe): - __author__ = 'bubak' - title = u'lidovky' - publisher = u'' - description = 'lidovky.cz' - oldest_article = 1 - max_articles_per_feed = 20 - - feeds = [ - (u'Události', u'http://www.lidovky.cz/export/rss.asp?r=ln_domov'), - (u'Svět', u'http://www.lidovky.cz/export/rss.asp?r=ln_zahranici'), - (u'Byznys', u'http://www.lidovky.cz/export/rss.asp?c=ln_byznys'), - (u'Věda', u'http://www.lidovky.cz/export/rss.asp?r=ln_veda'), - (u'Názory', u'http://www.lidovky.cz/export/rss.asp?r=ln_nazory'), - (u'Relax', u'http://www.lidovky.cz/export/rss.asp?c=ln_relax') - ] - - language = 'cs' - cover_url = 'http://g.lidovky.cz/o/lidovky_ln3b/lidovky-logo.png' - remove_javascript = True - no_stylesheets = True - use_embedded_content = False - remove_attributes = [] - remove_tags_before = dict(name='div', attrs={'id': ['content']}) - remove_tags_after = dict(name='div', attrs={'class': ['authors']}) - preprocess_regexps = [(re.compile( - r'
')] - - keep_only_tags = [] diff --git a/recipes/lifehacker_pl.recipe b/recipes/lifehacker_pl.recipe deleted file mode 100644 index c3fbdfb7c1..0000000000 --- a/recipes/lifehacker_pl.recipe +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env python - -__license__ = 'GPL v3' -__copyright__ = 'MrStefan' - -''' -www.lifehacking.pl -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class lifehacking(BasicNewsRecipe): - title = u'Lifehacker Polska' - __author__ = 'MrStefan ' - language = 'pl' - description = u'Lifehacking - sposoby na zwiększanie własnej wydajności. Ułatwiaj sobie życie, wykorzystując wiedzę, metody, technologie, przydatne strony ...' # noqa - masthead_url = 'http://lifehacking.pl/wp-content/themes/lifehacking/images/lifehackerlogo.png' - remove_empty_feeds = True - oldest_article = 7 - max_articles_per_feed = 100 - remove_javascript = True - no_stylesheets = True - - feeds = [(u'Lifehacker polska', u'http://feeds.feedburner.com/pl_lh')] - - keep_only_tags = [ - dict(name='header', attrs={'class': 'td-post-title'}), - dict(name='div', attrs={'class': 'td-post-content'})] diff --git a/recipes/limes.recipe b/recipes/limes.recipe deleted file mode 100644 index 5936b8475a..0000000000 --- a/recipes/limes.recipe +++ /dev/null @@ -1,52 +0,0 @@ -#!/usr/bin/env python -__license__ = 'GPL v3' -__copyright__ = '2012, faber1971' -__version__ = 'v1.00' -__date__ = '16, April 2012' -__description__ = 'Geopolitical Italian magazine' - - -from calibre.web.feeds.news import BasicNewsRecipe - - -class Limes(BasicNewsRecipe): - description = 'Italian weekly magazine' - __author__ = 'faber1971' - - cover_url = 'http://temi.repubblica.it/UserFiles/limes/Image/Loghi/logo-limes.gif' - title = 'Limes' - category = 'Geopolitical news' - - language = 'it' -# encoding = 'cp1252' - timefmt = '[%a, %d %b, %Y]' - - oldest_article = 16 - max_articles_per_feed = 100 - use_embedded_content = False - recursion = 10 - - remove_javascript = True - no_stylesheets = True - masthead_url = 'http://temi.repubblica.it/UserFiles/limes/Image/Loghi/logo-limes.gif' - - feeds = [ - (u'Limes', u'http://temi.repubblica.it/limes/feed/') - ] - - keep_only_tags = [ - dict(name='div', attrs={'class': ['testo', 'copertina', 'occhiello', 'firma', 'didascalia', - 'content-second-right', 'detail-articles', 'titolo-local', 'generic-articles']}), - dict(name='div', attrs={ - 'class': ['generic-articles', 'summary', 'detail-articles']}), - dict(name='div', attrs={'id': ['content-second-right', 'content2']}) - ] - - remove_tags = [ - dict(name='div', attrs={'class': ['servizi', 'aggiungi', 'label-web', - 'bottom-mobile', 'box-abbonamenti', 'box-cerca', 'big', 'little', 'stampaweb']}), - dict(name='div', attrs={'id': [ - 'topheader', 'header', 'navigation-new', 'navigation', 'content-second-left', 'menutext']}), - dict(name='ul', attrs={'id': 'user-utility'}), - dict(name=['script', 'noscript', 'iframe']) - ] diff --git a/recipes/living_stones.recipe b/recipes/living_stones.recipe deleted file mode 100644 index 64d910df6d..0000000000 --- a/recipes/living_stones.recipe +++ /dev/null @@ -1,27 +0,0 @@ -__license__ = 'GPL v3' -__copyright__ = '2012, Peter Grungi

' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class LivingStonesPastorsBlog(BasicNewsRecipe): - title = u'Living Stones Pastors Blog' - __author__ = 'Peter Grungi' - language = 'en' - - oldest_article = 90 - max_articles_per_feed = 10 - auto_cleanup = True - cover_url = 'http://blogs.livingstonesreno.com/wp-content/uploads/2011/08/blogBGRD_norepeat.jpg' - masthead_url = 'http://www.livingstonesreno.com/podcast/LSpodcastnew.jpg' - publisher = 'Living Stones Church of Reno, NV' - language = 'en' - author = 'Living Stones Church of Reno, NV' - - feeds = [ - (u'LS Blog', u'http://blogs.livingstonesreno.com/feed?utm_source=calibre&utm_medium=rss')] - - def full_version(self, url): - import re - newurl = re.sub(r'\?.*', '', url) - return newurl diff --git a/recipes/london_free_press.recipe b/recipes/london_free_press.recipe deleted file mode 100644 index c19079fbc3..0000000000 --- a/recipes/london_free_press.recipe +++ /dev/null @@ -1,39 +0,0 @@ -from calibre.web.feeds.news import BasicNewsRecipe - - -class LondonFreePress(BasicNewsRecipe): - title = u'London Free Press' - __author__ = 'rty' - oldest_article = 4 - max_articles_per_feed = 100 - - publisher = 'lfpress.com' - description = 'Ontario Canada Newspaper' - category = 'News, Ontario, Canada' - remove_javascript = True - use_embedded_content = False - no_stylesheets = True - language = 'en_CA' - encoding = 'utf-8' - conversion_options = {'linearize_tables': True} - - feeds = [ - (u'News', u'http://www.lfpress.com/news/rss.xml'), - (u'Comment', u'http://www.lfpress.com/comment/rss.xml'), - (u'Entertainment', u'http://www.lfpress.com/entertainment/rss.xml '), - (u'Money', u'http://www.lfpress.com/money/rss.xml '), - (u'Life', u'http://www.lfpress.com/life/rss.xml '), - (u'Sports', u'http://www.lfpress.com/sports/rss.xml ') - ] - - keep_only_tags = [ - dict(name='div', attrs={'id': 'article'}), - ] - remove_tags = [ - dict(name='div', attrs={'id': 'commentsBottom'}), - dict(name='div', attrs={'class': ['leftBox', 'bottomBox clear']}), - dict(name='ul', attrs={'class': 'tabs dl contentSwap'}), - ] - remove_tags_after = [ - dict(name='div', attrs={'class': 'bottomBox clear'}), - ] diff --git a/recipes/los_danieles.recipe b/recipes/los_danieles.recipe deleted file mode 100644 index 095d9308ac..0000000000 --- a/recipes/los_danieles.recipe +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env python -# vim:fileencoding=utf-8 -from calibre.web.feeds.news import BasicNewsRecipe - - -class AdvancedUserRecipe1618167843(BasicNewsRecipe): - title = 'Los Danieles – Columnas sin techo' - __author__ = 'CAVALENCIA' - oldest_article = 7 - max_articles_per_feed = 100 - auto_cleanup = True - language = 'es_CO' - - feeds = [ - ('Los Danieles – Columnas sin techo', 'https://losdanieles.com/feed/'), - ] diff --git a/recipes/los_tiempos_bo.recipe b/recipes/los_tiempos_bo.recipe deleted file mode 100644 index d9784f6a20..0000000000 --- a/recipes/los_tiempos_bo.recipe +++ /dev/null @@ -1,62 +0,0 @@ -__license__ = 'GPL v3' -__copyright__ = '2010, Darko Miletic ' -''' -www.lostiempos.com -''' - -from calibre import strftime -from calibre.web.feeds.news import BasicNewsRecipe - - -class LosTiempos_Bol(BasicNewsRecipe): - title = 'Los Tiempos - Bolivia' - __author__ = 'Darko Miletic' - description = 'El periódico de mayor circulación en la ciudad de Cochabamba, Bolivia' - publisher = 'Los Tiempos' - category = 'news, politics, Bolivia' - oldest_article = 1 - max_articles_per_feed = 200 - no_stylesheets = True - encoding = 'cp1252' - use_embedded_content = False - language = 'es_BO' - publication_type = 'newspaper' - delay = 1 - remove_empty_feeds = True - cover_url = strftime( - 'http://www.lostiempos.com/media_recortes/%Y/%m/%d/portada_gd_1.jpg') - masthead_url = 'http://www.lostiempos.com/img_stat/logo_tiempos_sin_beta.jpg' - extra_css = """ body{font-family: Arial,Helvetica,sans-serif } - img{margin-bottom: 0.4em} - h1,.hora,.breadcum,.pie_foto{font-family: Georgia,"Times New Roman",Times,serif} - .hora,.breadcum,.pie_foto{font-size: small} - .en_gris,.pie_foto{color: #666666} - """ - - conversion_options = { - 'comment': description, 'tags': category, 'publisher': publisher, 'language': language - } - - keep_only_tags = [dict(name='div', attrs={'id': 'articulo'})] - remove_tags = [ - dict(name=['meta', 'link', 'form', 'iframe', 'embed', 'object', 'hr']), dict( - attrs={'class': ['caja_fonts sin_border_bot', 'pub', 'twitter-share-button']}) - ] - remove_attributes = ['width', 'height'] - - feeds = [ - - (u'Nacional', u'http://www.lostiempos.com/rss/lostiempos-nacional.xml'), - (u'Local', u'http://www.lostiempos.com/rss/lostiempos-local.xml'), - (u'Deportes', u'http://www.lostiempos.com/rss/lostiempos-deportes.xml'), - (u'Economía', u'http://www.lostiempos.com/rss/lostiempos-economia.xml'), - (u'Internacional', u'http://www.lostiempos.com/rss/lostiempos-internacional.xml'), - (u'Vida y Futuro', u'http://www.lostiempos.com/rss/lostiempos-vida-y-futuro.xml'), - (u'Tragaluz', u'http://www.lostiempos.com/rss/lostiempos-tragaluz.xml'), - (u'Opiniones', u'http://www.lostiempos.com/rss/lostiempos-opiniones.xml') - ] - - def preprocess_html(self, soup): - for item in soup.findAll(style=True): - del item['style'] - return soup diff --git a/recipes/losservatoreromano_it.recipe b/recipes/losservatoreromano_it.recipe deleted file mode 100644 index ef9a5cf40a..0000000000 --- a/recipes/losservatoreromano_it.recipe +++ /dev/null @@ -1,40 +0,0 @@ -__license__ = 'GPL v3' -__copyright__ = '2010, Darko Miletic ' -''' -www.vatican.va/news_services/or/or_quo -''' - - -from calibre.web.feeds.news import BasicNewsRecipe - - -class LOsservatoreRomano_it(BasicNewsRecipe): - title = "L'Osservatore Romano" - __author__ = 'Darko Miletic' - description = 'Quiornale quotidiano, politico, religioso del Vaticano' - publisher = 'La Santa Sede' - category = 'news, politics, religion, Vatican' - no_stylesheets = True - INDEX = 'http://www.vatican.va' - FEEDPAGE = INDEX + '/news_services/or/or_quo/index.html' - CONTENTPAGE = INDEX + '/news_services/or/or_quo/text.html' - use_embedded_content = False - encoding = 'cp1252' - language = 'it' - publication_type = 'newspaper' - - conversion_options = { - 'comment': description, 'tags': category, 'publisher': publisher, 'language': language, 'linearize_tables': True - } - - def parse_index(self): - articles = [] - articles.append({ - 'title': self.title, 'date': '', 'url': self.CONTENTPAGE, 'description': '' - }) - return [(self.title, articles)] - - def preprocess_html(self, soup): - for item in soup.findAll(style=True): - del item['style'] - return self.adeify_images(soup) diff --git a/recipes/luns_a_venres.recipe b/recipes/luns_a_venres.recipe deleted file mode 100644 index b205ca8d41..0000000000 --- a/recipes/luns_a_venres.recipe +++ /dev/null @@ -1,46 +0,0 @@ -# -*- coding: utf-8 -*- -from calibre.web.feeds.news import BasicNewsRecipe - - -class LV_gl(BasicNewsRecipe): - title = u'De Luns a Venres (RSS)' - __author__ = u'Susana Sotelo Docío' - description = u'O gratuíto galego' - publisher = u'Galiciaé' - category = u'news' - encoding = 'utf-8' - language = 'gl' - direction = 'ltr' - cover_url = 'http://lv.galiciae.com/new_estilos/lv/logo.gif' - oldest_article = 2 - max_articles_per_feed = 200 - center_navbar = False - - feeds = [ - (u'Galicia', u'http://lv.galiciae.com/cache/rss/sec_galicia_gl.rss'), - (u'Cultura', u'http://lv.galiciae.com/cache/rss/sec_cultura_gl.rss'), - (u'Mundo', u'http://lv.galiciae.com/cache/rss/sec_mundo_gl.rss'), - (u'Cidadanía', u'http://lv.galiciae.com/cache/rss/sec_ciudadania_gl.rss'), - (u'Tecnoloxía', u'http://lv.galiciae.com/cache/rss/sec_tecnologia_gl.rss'), - (u'España', u'http://lv.galiciae.com/cache/rss/sec_espana_gl.rss'), - (u'Deportes', u'http://lv.galiciae.com/cache/rss/sec_deportes_gl.rss'), - (u'Economía', u'http://lv.galiciae.com/cache/rss/sec_economia_gl.rss'), - (u'Lercheo', u'http://lv.galiciae.com/cache/rss/sec_gente_gl.rss'), - (u'Medio ambiente', u'http://lv.galiciae.com/cache/rss/sec_medioambiente_gl.rss'), - (u'España/Mundo', u'http://lv.galiciae.com/cache/rss/sec_espanamundo_gl.rss'), - (u'Sociedade', u'http://lv.galiciae.com/cache/rss/sec_sociedad_gl.rss'), - (u'Ciencia', u'http://lv.galiciae.com/cache/rss/sec_ciencia_gl.rss'), - (u'Motor', u'http://lv.galiciae.com/cache/rss/sec_motor_gl.rss'), - (u'Coches', u'http://lv.galiciae.com/cache/rss/sec_coches_gl.rss'), - (u'Motos', u'http://lv.galiciae.com/cache/rss/sec_motos_gl.rss'), - (u'Industriais', u'http://lv.galiciae.com/cache/rss/sec_industriales_gl.rss') - ] - - extra_css = u' p{text-align:left} ' - html2epub_options = 'publisher="' + publisher + '"\ncomments="' + description + '"\nencoding="' + \ - encoding + '"\ntags="' + category + \ - '"\noverride_css=" p {text-align:left; text-indent: 0cm} "' - - def print_version(self, url): - url += '?imprimir&lang=gl' - return url diff --git a/recipes/lvivs_ks_ghazieta.recipe b/recipes/lvivs_ks_ghazieta.recipe deleted file mode 100644 index 026971beda..0000000000 --- a/recipes/lvivs_ks_ghazieta.recipe +++ /dev/null @@ -1,29 +0,0 @@ -from calibre.web.feeds.news import BasicNewsRecipe - - -class AdvancedUserRecipe1356270446(BasicNewsRecipe): - title = u'\u041b\u044c\u0432\u0456\u0432\u0441\u044c\u043a\u0430 \u0433\u0430\u0437\u0435\u0442\u0430' - __author__ = 'rpalyvoda' - oldest_article = 7 - max_articles_per_feed = 100 - language = 'uk' - cover_url = 'http://lvivska.com/sites/all/themes/biblos/images/logo.png' - masthead_url = 'http://lvivska.com/sites/all/themes/biblos/images/logo.png' - auto_cleanup = True - feeds = [ - (u'\u041d\u043e\u0432\u0438\u043d\u0438', u'http://lvivska.com/rss/news.xml'), - (u'\u041f\u043e\u043b\u0456\u0442\u0438\u043a\u0430', u'http://lvivska.com/rss/politic.xml'), - (u'\u0415\u043a\u043e\u043d\u043e\u043c\u0456\u043a\u0430', u'http://lvivska.com/rss/economic.xml'), - (u'\u041f\u0440\u0430\u0432\u043e', u'http://lvivska.com/rss/law.xml'), - (u'\u0421\u0432\u0456\u0442', u'http://lvivska.com/rss/world.xml'), - (u'\u0416\u0438\u0442\u0442\u044f', u'http://lvivska.com/rss/life.xml'), - (u'\u041a\u0443\u043b\u044c\u0442\u0443\u0440\u0430', u'http://lvivska.com/rss/culture.xml'), - - (u'\u041b\u0430\u0441\u0443\u043d', u'http://lvivska.com/rss/cooking.xml'), - (u'\u0421\u0442\u0438\u043b\u044c', u'http://lvivska.com/rss/style.xml'), - (u'Galicia Incognita', u'http://lvivska.com/rss/galiciaincognita.xml'), - (u'\u0421\u043f\u043e\u0440\u0442', u'http://lvivska.com/rss/sport.xml'), - (u'\u0415\u043a\u043e\u043b\u043e\u0433\u0456\u044f', u'http://lvivska.com/rss/ecology.xml'), - (u"\u0417\u0434\u043e\u0440\u043e\u0432'\u044f", u'http://lvivska.com/rss/health.xml'), - (u'\u0410\u0432\u0442\u043e', u'http://lvivska.com/rss/auto.xml'), - (u'\u0411\u043b\u043e\u0433\u0438', u'http://lvivska.com/rss/blog.xml')] diff --git a/recipes/lyngby-taarbaeklokalavisen_dk.recipe b/recipes/lyngby-taarbaeklokalavisen_dk.recipe deleted file mode 100644 index 7641eb743f..0000000000 --- a/recipes/lyngby-taarbaeklokalavisen_dk.recipe +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env python -# vim:fileencoding=utf-8 -# https://manual.calibre-ebook.com/news_recipe.html -from __future__ import absolute_import, division, print_function, unicode_literals - -from calibre.web.feeds.news import BasicNewsRecipe - -''' -Det grønne område -''' - - -class Lyngby_taarbaekLokalavisen_dk(BasicNewsRecipe): - __author__ = 'CoderAllan.github.com' - title = 'Det grønne område' - description = 'Lokale, regionale nyheder, sport og kultur i Lyngby-Taarbæk, Virum, Holte, Nærum, Vedbæk og Skodsborg på lyngby-taarbaek.lokalavisen.dk' - category = 'newspaper, news, localnews, sport, culture, Denmark' - oldest_article = 7 - max_articles_per_feed = 50 - auto_cleanup = True - language = 'da' - - feeds = [ - ('Seneste nyt fra Det grønne område', 'http://lyngby-taarbaek.lokalavisen.dk/section/senestenytrss'), - ('Seneste lokale nyheder fra Det grønne område', 'http://lyngby-taarbaek.lokalavisen.dk/section/senestelokalenyhederrss'), - ('Seneste sport fra Det grønne område', 'http://lyngby-taarbaek.lokalavisen.dk/section/senestesportrss'), - ('Seneste 112 nyheder fra Det grønne område', 'http://lyngby-taarbaek.lokalavisen.dk/section/seneste112rss'), - ('Seneste kultur nyheder fra Det grønne område', 'http://lyngby-taarbaek.lokalavisen.dk/section/senestekulturrss'), - ('Seneste læserbreve fra Det grønne område', 'http://lyngby-taarbaek.lokalavisen.dk/section/senestelaeserbreverss'), - - ] - diff --git a/recipes/mac_world.recipe b/recipes/mac_world.recipe deleted file mode 100644 index 97e48f99e5..0000000000 --- a/recipes/mac_world.recipe +++ /dev/null @@ -1,61 +0,0 @@ -#!/usr/bin/env python -__license__ = 'GPL v3' -__author__ = 'Lorenzo Vigentini' -__copyright__ = '2009, Lorenzo Vigentini ' -__version__ = 'v1.01' -__date__ = '14, January 2010' -__description__ = 'Macworld is an independent journal not affiliated with Apple Computer.' - -''' -http://www.macworld.co.uk/ -''' - -from calibre.web.feeds.news import BasicNewsRecipe - -temp_files = [] -articles_are_obfuscated = True - - -class macWorld(BasicNewsRecipe): - __author__ = 'Lorenzo Vigentini' - description = 'Macworld is an independent journal not affiliated with Apple Computer.' - cover_url = 'http://images.macworld.com/images/templates/v4/mw-logo.gif' - - title = 'Mac World ' - publisher = 'IDG Communication' - category = 'Apple, Mac, video, computing, product reviews, editing, cameras, production' - - language = 'en' - timefmt = '[%a, %d %b, %Y]' - - oldest_article = 7 - max_articles_per_feed = 20 - use_embedded_content = False - recursion = 10 - - remove_javascript = True - no_stylesheets = True - auto_cleanup = True - - feeds = [ - (u'MacWorld Headlines', u'http://rss.macworld.com/macworld/news'), - (u'How-To', u'http://rss.macworld.com/macworld/howto'), - (u'Security', u'http://rss.macworld.com/macworld/topics/security'), - (u'MAC IT', u'http://rss.macworld.com/macworld/topics/mac_it'), - (u'Business Mac', u'http://rss.macworld.com/macworld/topics/business_mac'), - (u'Reviews', u'http://rss.macworld.com/macworld/reviews'), - (u'Products: Mac', u'http://rss.macworld.com/macworld/products/mac'), - (u'Products: iPod', u'http://rss.macworld.com/macworld/products/ipod'), - (u'Products: iPhone', u'http://rss.macworld.com/macworld/products/iphone'), - (u'Products: Software', u'http://rss.macworld.com/macworld/products/mac/software'), - (u'OSX Hints', u'http://rss.macworld.com/macworld/weblogs/macosxhints'), - (u'Mac Gems', u'http://rss.macworld.com/macworld/weblogs/macgems'), - (u'Mac 911', u'http://rss.macworld.com/macworld/weblogs/mac911'), - (u'Game Room', u'http://rss.macworld.com/macworld/topics/games'), - (u'Editos notes', u'http://rss.macworld.com/macworld/weblogs/editors'), - (u'Creative notes', u'http://rss.macworld.com/macworld/weblogs/creative'), - (u'Playlist', u'http://rss.macworld.com/macworld/weblogs/ipodblog'), - (u'Mobile', u'http://rss.macworld.com/macworld/weblogs/mobile'), - (u'From the lab', u'http://rss.macworld.com/macworld/weblogs/macworldlab'), - (u'MacUser', u'http://rss.macworld.com/macworld/weblogs/macuser') - ] diff --git a/recipes/mac_world_uk.recipe b/recipes/mac_world_uk.recipe deleted file mode 100644 index 6ac402ebda..0000000000 --- a/recipes/mac_world_uk.recipe +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/env python -__license__ = 'GPL v3' -__author__ = 'Lorenzo Vigentini' -__copyright__ = '2009, Lorenzo Vigentini ' -__version__ = 'v1.01' -__date__ = '14, January 2010' -__description__ = 'Macworld is a publication of IDG Communication in the UK specifically on the Apple Mac.' - -''' -http://www.macworld.co.uk/ -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class pcMag(BasicNewsRecipe): - __author__ = 'Lorenzo Vigentini' - description = 'Macworld is a publication of IDG Communication in the UK specifically on the Apple Mac.' - cover_url = 'http://media.macworld.co.uk/images/masthead.jpg' - - title = 'Mac World UK ' - publisher = 'IDG Communication' - category = 'Apple, Mac, computing, product reviews, UK' - - language = 'en_GB' - timefmt = '[%a, %d %b, %Y]' - - max_articles_per_feed = 25 - use_embedded_content = False - recursion = 10 - - remove_javascript = True - no_stylesheets = True - auto_cleanup = True - - feeds = [ - (u'MacWorld Headlines', u'http://www.macworld.co.uk/latest/rss'), - (u'Reviews', u'http://www.macworld.co.uk/news/rss'), - (u'Masterclass', u'http://www.macworld.co.uk/how-to/rss'), - (u'MacWorld Team', u'http://www.macworld.co.uk/review/rss'), - (u'Andy Ihnatko', u'http://www.macworld.co.uk/latest/iphone/rss'), - (u'Andy Penfold', u'http://www.macworld.co.uk/latest/ipad/rss'), - (u'Jonny Evans', u'http://www.macworld.co.uk/latest/mac/rss'), - (u'Karen Haslam', u'http://www.macworld.co.uk/latest/apple/rss') - ] diff --git a/recipes/macity.recipe b/recipes/macity.recipe deleted file mode 100644 index 4a67ea3415..0000000000 --- a/recipes/macity.recipe +++ /dev/null @@ -1,25 +0,0 @@ -from calibre.web.feeds.news import BasicNewsRecipe - - -class AdvancedUserRecipe1325766771(BasicNewsRecipe): - title = u'Macity' - language = 'it' - oldest_article = 7 - max_articles_per_feed = 100 - auto_cleanup = True - - def get_article_url(self, article): - link = BasicNewsRecipe.get_article_url(self, article) - if link.split('/')[-1] == "story01.htm": - link = link.split('/')[-2] - a = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'I', 'L', 'N', 'S'] - b = ['0', '.', '/', '?', '-', '=', '&', - '_', 'http://', '.com', 'www.'] - for i in range(0, len(a)): - link = link.replace('0' + a[-i], b[-i]) - return link - - feeds = [ - (u'Macity', u'http://www.macitynet.it.feedsportal.com/c/33714/f/599513/index.rss')] - __author__ = 'faber1971' - description = 'Apple and hi-tech news' diff --git a/recipes/macleans.recipe b/recipes/macleans.recipe deleted file mode 100644 index 0b0873b86a..0000000000 --- a/recipes/macleans.recipe +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env python -from calibre.web.feeds.news import BasicNewsRecipe - - -class AdvancedUserRecipe1308306308(BasicNewsRecipe): - title = u'Macleans Magazine' - language = 'en_CA' - __author__ = 'Medius' - oldest_article = 7 - cover_url = 'http://www.rogersmagazines.com/rms_covers/md/CLE_md.jpg' - - use_embedded_content = False - - remove_empty_feeds = True - no_stylesheets = True - remove_javascript = True - remove_tags = [dict(id='header'), {'class': 'comment'}] - remove_tags_after = {'class': 'pagination'} - - feeds = [ - (u'Canada', u'http://www2.macleans.ca/category/canada/feed/'), - - (u'World', u'http://www2.macleans.ca/category/news-politics/world/feed/'), - (u'Business', u'http://www2.macleans.ca/category/business/feed/'), - (u'Arts & Culture', u'http://www2.macleans.ca/category/arts/feed/'), - (u'Opinion', u'http://www2.macleans.ca/category/opinion/feed/'), - (u'Health', u'http://www2.macleans.ca/category/life/health/feed/'), - (u'Sports', u'http://www2.macleans.ca/category/life/sports/feed/'), - (u'Environment', u'http://www2.macleans.ca/category/life/environment/feed/'), - (u'Technology', u'http://www2.macleans.ca/category/life/technology/feed/'), - (u'Travel', u'http://www2.macleans.ca/category/life/travel/feed/'), - (u'Blog Central', u'http://www2.macleans.ca/category/blog-central/feed/')] diff --git a/recipes/maekyung.recipe b/recipes/maekyung.recipe deleted file mode 100644 index 5362d7d7dd..0000000000 --- a/recipes/maekyung.recipe +++ /dev/null @@ -1,35 +0,0 @@ -# -*- coding: utf-8 -*- -__license__ = 'GPL v3' -__copyright__ = '2015, Hoje Lee ' -''' -Profile to download Maeil Business -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class MaeilBusiness(BasicNewsRecipe): - language = 'ko' - title = u'매일경제' - description = u'매일경제 신문 기사' - __author__ = 'Hoje Lee' - oldest_article = 7 - max_articles_per_feed = 10 - auto_cleanup = True - - feeds = [ - (u'헤드라인', 'http://file.mk.co.kr/news/rss/rss_30000001.xml'), - # (u'전체뉴스', 'http://file.mk.co.kr/news/rss/rss_40300001.xml'), - (u'경제', 'http://file.mk.co.kr/news/rss/rss_30100041.xml'), - (u'정치', 'http://file.mk.co.kr/news/rss/rss_30200030.xml'), - (u'사회', 'http://file.mk.co.kr/news/rss/rss_50400012.xml'), - (u'국제', 'http://file.mk.co.kr/news/rss/rss_30300018.xml'), - (u'기업ㆍ경영', 'http://file.mk.co.kr/news/rss/rss_50100032.xml'), - (u'증권', 'http://file.mk.co.kr/news/rss/rss_50200011.xml'), - (u'부동산', 'http://file.mk.co.kr/news/rss/rss_50300009.xml'), - (u'문화ㆍ연예', 'http://file.mk.co.kr/news/rss/rss_30000023.xml'), - (u'패션', 'http://file.mk.co.kr/news/rss/rss_72000001.xml'), - (u'스포츠', 'http://file.mk.co.kr/news/rss/rss_71000001.xml'), - (u'게임', 'http://file.mk.co.kr/news/rss/rss_50700001.xml'), - (u'오피니언', 'http://file.mk.co.kr/news/rss/rss_30500041.xml'), - ] diff --git a/recipes/maharashtra_times.recipe b/recipes/maharashtra_times.recipe deleted file mode 100644 index cd028c7317..0000000000 --- a/recipes/maharashtra_times.recipe +++ /dev/null @@ -1,18 +0,0 @@ -from calibre.web.feeds.news import BasicNewsRecipe - - -class HindustanTimes(BasicNewsRecipe): - title = u'Maharashtra Times' - language = 'mr' - __author__ = 'Krittika Goyal' - oldest_article = 1 # days - max_articles_per_feed = 25 - use_embedded_content = False - - no_stylesheets = True - auto_cleanup = True - - feeds = [ - ('News', - 'http://maharashtratimes.indiatimes.com/rssfeeds/2429656.cms'), - ] diff --git a/recipes/malaya_business_insight.recipe b/recipes/malaya_business_insight.recipe deleted file mode 100644 index 1adbcb1b26..0000000000 --- a/recipes/malaya_business_insight.recipe +++ /dev/null @@ -1,69 +0,0 @@ -import time - -from calibre.web.feeds.recipes import BasicNewsRecipe - - -class MalayaBusinessInsight(BasicNewsRecipe): - title = u'Malaya Business Insight' - custom_title = "Malaya Business Insight - " + \ - time.strftime('%d %b %Y %I:%M %p') - __author__ = 'jde' - __date__ = '07 June 2012' - __version__ = '1.2' - description = "The Malaya Business Insight is a broadsheet newspaper in the Philippines. The newspaper's name was derived from the Filipino word that means 'freedom'." # noqa - language = 'en_PH' - publisher = 'Malaya Business Insight' - category = 'news, Philippines' - tags = 'news, Philippines' - cover_url = 'http://www.malaya.com.ph/templates/ja_teline_iv/images/logo.png' - masthead_url = 'http://www.malaya.com.ph/templates/ja_teline_iv/images/logo.png' - oldest_article = 1.5 # days - max_articles_per_feed = 25 - simultaneous_downloads = 20 - publication_type = 'newspaper' - timefmt = ' [%a, %d %b %Y %I:%M %p]' - no_stylesheets = True - use_embedded_content = False - encoding = None - recursions = 0 - needs_subscription = False - remove_javascript = True - remove_empty_feeds = True - auto_cleanup = False - - keep_only_tags = [ - dict(name='div', attrs={'id': 'ja-main'}) - ] - - remove_tags = [ - dict(name='a', attrs={'class': 'ja-back-btn'}), dict(name='li', attrs={'class': 'print-icon'}), dict(name='li', attrs={'class': 'email-icon'}), dict(name='p', attrs={'class': 'dnn'}), dict(name='span', attrs={'class': 'breadcrumbs pathway'}), dict(name='dt', attrs={'class': 'article-info-term'}), dict(name='div', attrs={'class': 'ja-articles-mainwrap'}), dict(name='h1', attrs={'class': 'componentheading'}), dict(name='div', attrs={'id': 'ja-content-mass-top'}) # noqa - ] - - conversion_options = {'title': custom_title, - 'comments': description, - 'tags': tags, - 'language': language, - 'publisher': publisher, - 'authors': publisher, - 'smarten_punctuation': True - } - - feeds = [ - - (u'Business', u'http://www.malaya.com.ph/index.php/business?format=feed&type=rss'), - (u'Market', u'http://www.malaya.com.ph/index.php/business/market?format=feed&type=rss'), - (u'Shipping and Transportation', u'http://www.malaya.com.ph/index.php/business/shipping-and-transportation?format=feed&type=rss'), - (u'Business Incidental', u'http://www.malaya.com.ph/index.php/business/business-incidental?format=feed&type=rss'), - (u'Banking and Finance', u'http://www.malaya.com.ph/index.php/special-features/banking-and-finance?format=feed&type=rss'), - (u'Motoring', u'http://www.malaya.com.ph/index.php/special-features/motoring?format=feed&type=rss'), - (u'Info Tech - Telecoms', u'http://www.malaya.com.ph/index.php/special-features/infotech-telecoms?format=feed&type=rss'), - (u'Property', u'http://www.malaya.com.ph/index.php/special-features/property?format=feed&type=rss'), - (u'Environment', u'http://www.malaya.com.ph/index.php/special-features/environment?format=feed&type=rss'), - (u'Agriculture', u'http://www.malaya.com.ph/index.php/special-features/agriculture?format=feed&type=rss'), - (u'News - National', u'http://www.malaya.com.ph/index.php/news/nation?format=feed&type=rss'), - (u'News - International', u'http://www.malaya.com.ph/index.php/news/international?format=feed&type=rss'), - (u'Sports', u'http://www.malaya.com.ph/index.php/sports?format=feed&type=rss'), - (u'Entertainment', u'http://www.malaya.com.ph/index.php/entertainment?format=feed&type=rss'), - (u'Living', u'http://www.malaya.com.ph/index.php/living?format=feed&type=rss'), - (u'Opinion', u'http://www.malaya.com.ph/index.php/opinion?format=feed&type=rss') - ] diff --git a/recipes/malaysian_mirror.recipe b/recipes/malaysian_mirror.recipe deleted file mode 100644 index cd2c0fe1c8..0000000000 --- a/recipes/malaysian_mirror.recipe +++ /dev/null @@ -1,84 +0,0 @@ -#!/usr/bin/env python -__license__ = 'GPL v3' -__author__ = 'Tony Stegall' -__copyright__ = '2010, Tony Stegall or Tonythebookworm on mobiread.com' -__version__ = '1' -__date__ = '16, October 2010' -__docformat__ = 'English' - - -from calibre.web.feeds.news import BasicNewsRecipe - - -class MalaysianMirror(BasicNewsRecipe): - title = 'MalaysianMirror' - __author__ = 'Tonythebookworm' - description = 'The Pulse of the Nation' - language = 'en' - no_stylesheets = True - publisher = 'Tonythebookworm' - category = 'news' - use_embedded_content = False - no_stylesheets = True - oldest_article = 24 - - remove_javascript = True - remove_empty_feeds = True - conversion_options = {'linearize_tables': True} - extra_css = ''' - #content_heading{font-family:Arial,Helvetica,sans-serif; font-weight:bold;font-size:large;} - - td{text-align:right; font-size:small;margin-top:0px;margin-bottom: 0px;} - - #content_body{font-family:Helvetica,Arial,sans-serif;font-size:small;} - ''' - - keep_only_tags = [dict(name='table', attrs={'class': ['contentpaneopen']}) - ] - remove_tags = [dict(name='table', attrs={'class': ['buttonheading']})] - ########################################################################## - - max_articles_per_feed = 10 - - ''' - Make a variable that will hold the url for the main site because our links do not include the index - ''' - - INDEX = 'http://www.malaysianmirror.com' - - def parse_index(self): - feeds = [] - for title, url in [ - (u"Media Buzz", u"http://www.malaysianmirror.com/media-buzz-front"), - (u"Life Style", u"http://www.malaysianmirror.com/lifestylefront"), - (u"Features", u"http://www.malaysianmirror.com/featurefront"), - - - ]: - articles = self.make_links(url) - if articles: - feeds.append((title, articles)) - return feeds - - def make_links(self, url): - title = 'Temp' - current_articles = [] - soup = self.index_to_soup(url) - for item in soup.findAll('div', attrs={'class': 'contentheading'}): - # print 'item is: ', item - link = item.find('a') - # print 'the link is: ', link - if link: - url = self.INDEX + link['href'] - title = self.tag_to_string(link) - # print 'the title is: ', title - # print 'the url is: ', url - # print 'the title is: ', title - current_articles.append( - {'title': title, 'url': url, 'description': '', 'date': ''}) # append all this - return current_articles - - def preprocess_html(self, soup): - for item in soup.findAll(attrs={'style': True}): - del item['style'] - return soup diff --git a/recipes/mandidner.recipe b/recipes/mandidner.recipe deleted file mode 100644 index da8541dfc1..0000000000 --- a/recipes/mandidner.recipe +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env python -# vim:fileencoding=utf-8 -from __future__ import absolute_import, division, print_function, unicode_literals - -from calibre.web.feeds.news import AutomaticNewsRecipe - - -class BasicUserRecipe1541708734(AutomaticNewsRecipe): - title = 'Mandiner' - language = 'hu' - __author__ = 'pofa' - oldest_article = 1 - max_articles_per_feed = 100 - auto_cleanup = True - - feeds = [ - ('Mandiner', 'http://mandiner.hu/rss/'), - ] diff --git a/recipes/manila_standard_today.recipe b/recipes/manila_standard_today.recipe deleted file mode 100644 index 965133d307..0000000000 --- a/recipes/manila_standard_today.recipe +++ /dev/null @@ -1,57 +0,0 @@ -import time - -from calibre.web.feeds.recipes import BasicNewsRecipe - - -class ManilaStandardToday(BasicNewsRecipe): - title = u'Manila Standard Today' - custom_title = "Manila Standard Today - " + \ - time.strftime('%d %b %Y %I:%M %p') - __author__ = 'jde' - __date__ = '06 June 2012' - __version__ = '1.0' - description = 'The Manila Standard Today is the fourth-largest broadsheet newspaper in the Philippines as of 2006. Initially established as the Manila Standard, it merged with another newspaper of record, Today, on March 6, 2005. It was the first newspaper merger in the Philippines.' # noqa - language = 'en_PH' - publisher = 'Manila Standard Today' - category = 'news, Philippines' - tags = 'news, Philippines' - cover_url = 'http://www.manilastandardtoday.com/wp-content/uploads/Manila-Standard-Today-June-06-12.jpg' - masthead_url = 'http://www.manilastandardtoday.com/wp-content/uploads/Manila-Standard-Today-June-06-12.jpg' - oldest_article = 1.5 # days - max_articles_per_feed = 25 - simultaneous_downloads = 20 - publication_type = 'newspaper' - timefmt = ' [%a, %d %b %Y %I:%M %p]' - no_stylesheets = True - use_embedded_content = False - encoding = None - recursions = 0 - needs_subscription = False - remove_javascript = True - remove_empty_feeds = True - auto_cleanup = False - - keep_only_tags = [ - dict(name='div', attrs={'id': 'main'}) - ] - - conversion_options = {'title': custom_title, - 'comments': description, - 'tags': tags, - 'language': language, - 'publisher': publisher, - 'authors': publisher, - 'smarten_punctuation': True - } - - feeds = [ - - (u'Headlines', u'http://news.manilastandardtoday.com/feed/'), - (u'Nation', u'http://news.manilastandardtoday.com/archives/nation/feed/'), - (u'Business', u'http://business.manilastandardtoday.com/feed/'), - (u'Metro', u'http://news.manilastandardtoday.com/archives/metro/feed/'), - (u'Sports', u'http://sports.manilastandardtoday.com/feed/'), - (u'Entertainment', u'http://entertainment.manilastandardtoday.com/feed/'), - (u'Opinion', u'http://opinion.manilastandardtoday.com/feed/'), - (u'Lifestyle', u'http://lifestyle.manilastandardtoday.com/feed/') - ] diff --git a/recipes/marine_corps_times.recipe b/recipes/marine_corps_times.recipe deleted file mode 100644 index e8175c0fd0..0000000000 --- a/recipes/marine_corps_times.recipe +++ /dev/null @@ -1,38 +0,0 @@ -from calibre.web.feeds.news import BasicNewsRecipe - - -class MarineCorpsTimes(BasicNewsRecipe): - title = 'Marine Corps Times' - __author__ = 'jde' - __date__ = '16 May 2012' - __version__ = '1.0' - description = 'News of the U.S. Marine Corps' - language = 'en' - publisher = 'MarineCorpsTimes.com' - category = 'news, U.S. Marine Corps' - tags = 'news, U.S. Marine Corps' - cover_url = 'http://www.marinecorpstimes.com/images/logo_marinetimes-alert.jpg' - masthead_url = 'http://www.marinecorpstimes.com/images/logo_marinetimes-alert.jpg' - oldest_article = 7 # days - max_articles_per_feed = 25 - publication_type = 'newspaper' - no_stylesheets = True - use_embedded_content = False - encoding = None - recursions = 0 - needs_subscription = False - remove_javascript = True - remove_empty_feeds = True - auto_cleanup = True - - feeds = [ - - ('News', 'http://www.MarineCorpstimes.com/rss_news.php'), - ('Benefits', 'http://www.MarineCorpstimes.com/rss_benefits.php'), - ('Money', 'http://www.MarineCorpstimes.com/rss_money.php'), - ('Careers & Education', 'http://www.MarineCorpstimes.com/rss_careers.php'), - ('Community', 'http://www.MarineCorpstimes.com/rss_community.php'), - ('Off Duty', 'http://www.MarineCorpstimes.com/rss_off_duty.php'), - ('Entertainment', 'http://www.MarineCorpstimes.com/rss_entertainment.php'), - ('Guard & Reserve', 'http://www.MarineCorpstimes.com/rss_guard.php'), - ] diff --git a/recipes/marketing_sensoriale.recipe b/recipes/marketing_sensoriale.recipe deleted file mode 100644 index d1b68ba6c8..0000000000 --- a/recipes/marketing_sensoriale.recipe +++ /dev/null @@ -1,58 +0,0 @@ -from calibre.ptempfile import PersistentTemporaryFile -from calibre.utils.ipc.simple_worker import fork_job -from calibre.web.feeds.news import BasicNewsRecipe - -js_fetcher = ''' - -import calibre.web.jsbrowser.browser as jsbrowser - -def grab(url): - browser = jsbrowser.Browser() - #10 second timeout - browser.visit(url, 10) - browser.run_for_a_time(10) - html = browser.html - browser.close() - return html - - ''' - - -class MarketingSensoriale(BasicNewsRecipe): - - title = u'Marketing sensoriale' - __author__ = 'NotTaken' - description = 'Marketing Sensoriale, il Blog' - category = 'Blog' - oldest_article = 7 - max_articles_per_feed = 200 - no_stylesheets = True - encoding = 'utf8' - use_embedded_content = False - language = 'it' - remove_empty_feeds = True - recursions = 0 - requires_version = (0, 8, 58) - auto_cleanup = False - simultaneous_downloads = 1 - articles_are_obfuscated = True - - remove_tags_after = [dict(name='div', attrs={'class': ['article-footer']})] - - def get_article_url(self, article): - return article.get('feedburner_origlink', None) - - def get_obfuscated_article(self, url): - result = fork_job(js_fetcher, 'grab', (url,), - module_is_source_code=True) - - html = result['result'] - if isinstance(html, type(u'')): - html = html.encode('utf-8') - pt = PersistentTemporaryFile('.html') - pt.write(html) - pt.close() - return pt.name - - feeds = [(u'Marketing sensoriale', - u'http://feeds.feedburner.com/MarketingSensoriale?format=xml')] diff --git a/recipes/matichon.recipe b/recipes/matichon.recipe deleted file mode 100644 index 24d56b3eee..0000000000 --- a/recipes/matichon.recipe +++ /dev/null @@ -1,23 +0,0 @@ -from calibre.web.feeds.news import BasicNewsRecipe - - -class AdvancedUserRecipe1290412756(BasicNewsRecipe): - __author__ = 'Anat R.' - title = u'Matichon' - oldest_article = 7 - language = 'th' - max_articles_per_feed = 100 - no_stylesheets = True - remove_javascript = True - use_embedded_content = False - feeds = [(u'News', u'http://www.matichon.co.th/rss/news_article.xml'), - (u'Columns', u'http://www.matichon.co.th/rss/news_columns.xml'), - (u'Politics', u'http://www.matichon.co.th/rss/news_politic.xml'), - (u'Business', u'http://www.matichon.co.th/rss/news_business.xml'), - (u'World', u'http://www.matichon.co.th/rss/news_world.xml'), - (u'Sports', u'http://www.matichon.co.th/rss/news_sport.xml'), - (u'Entertainment', u'http://www.matichon.co.th/rss/news_entertainment.xml')] - keep_only_tags = [] - keep_only_tags.append(dict(name='h3', attrs={'class': 'read-h'})) - keep_only_tags.append(dict(name='p', attrs={'class': 'read-time'})) - keep_only_tags.append(dict(name='div', attrs={'class': 'news-content'})) diff --git a/recipes/mayra.recipe b/recipes/mayra.recipe deleted file mode 100644 index bd83cd0149..0000000000 --- a/recipes/mayra.recipe +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -__license__ = 'GPL v3' -__copyright__ = u'2011, Silviu Cotoar\u0103' -''' -mayra.ro -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class Mayra(BasicNewsRecipe): - title = u'Mayra' - language = 'ro' - __author__ = u'Silviu Cotoar\u0103' - description = u'Traieste urban, cool, sexy' - publisher = 'Mayra' - category = 'Ziare,Stiri,Reviste' - oldest_article = 5 - max_articles_per_feed = 100 - no_stylesheets = True - use_embedded_content = False - encoding = 'utf-8' - remove_javascript = True - cover_url = 'http://img.konkurs.ro/img/concursuri-cu-premii/147/14672_front.jpg' - - conversion_options = { - 'comments': description, 'tags': category, 'language': language, 'publisher': publisher - } - - keep_only_tags = [ - dict(name='div', attrs={'id': 'article_details'}) - ] - - remove_tags = [ - dict(name='div', attrs={'id': 'LikePluginPagelet'}), dict(name='p', attrs={ - 'id': 'tags'}), dict(name='span', attrs={'id': 'tweet-button'}) - ] - - remove_tags_after = [ - dict(name='div', attrs={'id': 'LikePluginPagelet'}) - ] - - feeds = [(u'\u0218tiri', u'http://www.mayra.ro/rss')] - - def preprocess_html(self, soup): - return self.adeify_images(soup) diff --git a/recipes/mediterraneo.recipe b/recipes/mediterraneo.recipe deleted file mode 100644 index cc23b93dce..0000000000 --- a/recipes/mediterraneo.recipe +++ /dev/null @@ -1,101 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -__license__ = 'GPL v3' -__copyright__ = 'benages, based on elperidicodearagon.com by desUBIKado' -__author__ = 'benages' -__description__ = 'Daily newspaper from Castellón' -__version__ = 'v0.10' -__date__ = '07, March 2019' -''' -elperiodicomediterraneo.com -''' -from calibre.web.feeds.news import BasicNewsRecipe - - -class elperiodicomediterraneo(BasicNewsRecipe): - title = u'El Periódico Mediterráneo' - __author__ = u'benages' - description = u'Noticias desde Castellón' - publisher = u'elperiodicomediterraneo.com' - category = u'news, politics, Spain, Castellón' - oldest_article = 1 - delay = 1 - max_articles_per_feed = 100 - no_stylesheets = True - use_embedded_content = False - language = 'es' - masthead_url = 'http://pdf.elperiodicomediterraneo.com/img/logotipo.gif' - encoding = 'iso-8859-1' - remove_empty_feeds = True - remove_javascript = True - - # The index of feeds is in https://www.elperiodicomediterraneo.com/info/rss.php - feeds = [ - (u'Portada', u'https://est.zetaestaticos.com/mediterraneo/rss/portada_es.xml'), - (u'Ultima hora', u'https://est.zetaestaticos.com/mediterraneo/rss/ultimahora_es.xml'), - (u'Castell\xf3n', u'https://est.zetaestaticos.com/mediterraneo/rss/2_es.xml'), - (u'Vila-Real', u'https://est.zetaestaticos.com/mediterraneo/rss/102_es.xml'), - (u'Comarcas', u'https://est.zetaestaticos.com/mediterraneo/rss/10_es.xml'), - (u'Comunitat', u'https://est.zetaestaticos.com/mediterraneo/rss/230_es.xml'), - (u'Espa\xf1a', u'https://est.zetaestaticos.com/mediterraneo/rss/3_es.xml'), - (u'Opini\xf3n', u'https://est.zetaestaticos.com/mediterraneo/rss/103_es.xml'), - (u'Internacional', u'https://est.zetaestaticos.com/mediterraneo/rss/4_es.xml'), - (u'Econom\xeda', u'https://est.zetaestaticos.com/mediterraneo/rss/5_es.xml'), - (u'Deportes', u'https://est.zetaestaticos.com/mediterraneo/rss/7_es.xml'), - (u'Villarreal', u'https://est.zetaestaticos.com/mediterraneo/rss/288_es.xml'), - (u'Castell\xf3n CF', u'https://est.zetaestaticos.com/mediterraneo/rss/319_es.xml'), - (u'Sucesos', u'https://est.zetaestaticos.com/mediterraneo/rss/105_es.xml'), - (u'Sociedad', u'https://est.zetaestaticos.com/mediterraneo/rss/106_es.xml'), - (u'Espectaculos', u'https://est.zetaestaticos.com/mediterraneo/rss/107_es.xml'), - (u'Televisi\xf3n', u'https://est.zetaestaticos.com/mediterraneo/rss/324_es.xml'), - ] - - remove_tags_before = dict(name='div', attrs={'class': 'Pagina'}) - remove_tags_after = dict(name='div', attrs={'class': 'ComentariosNew'}) - - keep_only_tags = [dict(name='div', attrs={'class': 'Pagina'})] - - remove_tags = [ - dict( - name='nav', - attrs={'class': ['Compartir', 'HerramientasConversacion Herramientas']} - ), - dict(name='h5', attrs={'class': ['CintilloBox']}), - dict( - name='div', - attrs={ - 'class': [ - 'BoxMenu BoxMenuConFoto', 'BxGalerias', 'ConStick', - 'HerramientasComentarioNew Herramientas', 'NumeroComentarioNew' - ] - } - ), - dict( - name='div', - attrs={ - 'class': [ - 'BoxPestanas', 'Box', 'ColumnaDerecha', - 'NoticiasRelacionadasDeNoticia', - 'CintilloNoticiasRelacionadasDeNoticia' - ] - } - ), - dict(name='a', attrs={'class': ['IrA BotonLink']}) - ] - - # Recuperamos la portada de papel (la imagen format=1 tiene mayor resolucion) - - def get_cover_url(self): - index = 'http://pdf.elperiodicomediterraneo.com/edicion.php' - soup = self.index_to_soup(index) - for image in soup.findAll('img', src=True): - if image['src'].startswith('/funciones/img-public.php?key='): - return 'http://pdf.elperiodicomediterraneo.com' + image['src'] - return None - - extra_css = ''' - h1 {font-family:Arial,Helvetica,sans-serif; font-weight:bold;font-size:28px;} - h2 {font-family:Arial,Helvetica,sans-serif; font-style:italic;font-size:14px;color:#4D4D4D;} - h3 {font-family:Arial,Helvetica,sans-serif; font-weight:bold;font-size:18px;} - ''' diff --git a/recipes/melbourne_herald_sun.recipe b/recipes/melbourne_herald_sun.recipe deleted file mode 100644 index fcd16a21f0..0000000000 --- a/recipes/melbourne_herald_sun.recipe +++ /dev/null @@ -1,84 +0,0 @@ -#!/usr/bin/env python -__license__ = 'GPL v3' -__copyright__ = '2009, Matthew Briggs' -__docformat__ = 'restructuredtext en' - -''' -http://www.herald sun.com.au/ -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class DailyTelegraph(BasicNewsRecipe): - title = u'Melbourne Herald Sun' - __author__ = u'Ray Hartley' - description = (u'Victorian and National News' - '. You will need to have a subscription to ' - 'http://www.heraldsun.com.au to get full articles.') - language = 'en_AU' - - oldest_article = 2 - needs_subscription = 'optional' - max_articles_per_feed = 30 - remove_javascript = True - no_stylesheets = True - encoding = 'utf8' - use_embedded_content = False - language = 'en_AU' - remove_empty_feeds = True - publication_type = 'newspaper' - masthead_url = 'http://resources2.news.com.au/cs/heraldsun/images/header-and-footer/logo.gif' - extra_css = """ - body{font-family: Arial,Helvetica,sans-serif } - img{margin-bottom: 0.4em; display:block} - .caption{display: inline; font-size: x-small} - """ - - conversion_options = { - 'comment': description, 'language': language - } - - keep_only_tags = [dict(attrs={'id': 'story'})] - remove_tags_before = dict(attrs={'class': 'story-header'}) - remove_tags_after = dict(attrs={'class': 'story-footer'}) - remove_tags = [ - dict(name=['meta', 'link', 'base', 'iframe', 'embed', 'object', 'media-metadata', 'media-reference', 'media-producer'] - ), dict(attrs={'class': ['story-header-tools', 'story-sidebar', 'story-footer', 'story-summary-list']}) - ] - remove_attributes = ['lang'] - - feeds = [ - (u'Breaking News', u'http://feeds.news.com.au/public/rss/2.0/heraldsun_breakingnews_206.xml'), - (u'Business', u'http://feeds.news.com.au/public/rss/2.0/heraldsun_business_207.xml'), - (u'Entertainment', u'http://feeds.news.com.au/public/rss/2.0/heraldsun_entertainment_208.xml'), - (u'Health Science', u'http://feeds.news.com.au/public/rss/2.0/heraldsun_health_212.xml'), - (u'Music', u'http://feeds.news.com.au/public/rss/2.0/heraldsun_music_449.xml'), - (u'National News', u'http://feeds.news.com.au/public/rss/2.0/heraldsun_national_209.xml'), - (u'Sport News', u'http://feeds.news.com.au/public/rss/2.0/heraldsun_sport_213.xml'), - (u'AFL News', u'http://feeds.news.com.au/public/rss/2.0/heraldsun_afl_205.xml'), - - (u'State News', u'http://feeds.news.com.au/public/rss/2.0/heraldsun_vic_214.xml'), - (u'Technology', u'http://feeds.news.com.au/public/rss/2.0/heraldsun_tech_215.xml'), - (u'World News', u'http://feeds.news.com.au/public/rss/2.0/heraldsun_world_216.xml'), - (u'Opinion', u'http://feeds.news.com.au/public/rss/2.0/heraldsun_opinion_210.xml'), - (u'Andrew Bolt', u'http://blogs.news.com.au/heraldsun/andrewbolt/index.php/xml/rss_2.0/heraldsun/hs_andrewbolt/'), - (u'Afl - St Kilda', u'http://feeds.news.com.au/public/rss/2.0/heraldsun_afl_stkilda_565.xml'), - (u'Terry McCrann', u'http://feeds.news.com.au/public/rss/2.0/heraldsun_tmccrann_224.xml'), - (u'The Other side', u'http://feeds.news.com.au/public/rss/2.0/heraldsun_otherside_211.xml')] - - def get_browser(self): - br = BasicNewsRecipe.get_browser(self) - if self.username and self.password: - br.open('http://www.heraldsun.com.au') - br.select_form(nr=1) - br['username'] = self.username - br['password'] = self.password - raw = br.submit().read() - if b'>log out' not in raw.lower(): - raise ValueError('Failed to log in to www.heralsun' - ' are your username and password correct?') - return br - - def get_article_url(self, article): - return article.id diff --git a/recipes/men24_gr.recipe b/recipes/men24_gr.recipe deleted file mode 100644 index 6eee068037..0000000000 --- a/recipes/men24_gr.recipe +++ /dev/null @@ -1,53 +0,0 @@ -from calibre.web.feeds.recipes import BasicNewsRecipe - - -class Men24(BasicNewsRecipe): - title = 'Men24.gr' - __author__ = 'Stelios' - description = 'Greek Mens portal' - oldest_article = 14 - max_articles_per_feed = 100 - language = 'el' - cover_url = 'http://www.men24.gr/ast/img/men24Logo.jpg' - category = 'magazines, GR' - language = 'el' - encoding = 'windows-1253' - no_stylesheets = True - use_embedded_content = False - remove_empty_feeds = True - extra_css = ''' - .artPrintTitle{font-family :Arial,Helvetica,sans-serif; font-weight: bold; font-size:large;} - .artPrintSubtitle{font-family :Arial,Helvetica,sans-serif; font-size:x-small;} - ''' - remove_tags = [ - dict(name='td', attrs={'class': ['artPrintCategory']}), - dict(name='table', attrs={'class': ['footer']}), - dict(name='img') - ] - feeds = [ - (u'\u038C\u03BB\u03B5\u03C2 \u03BF\u03B9 \u03B5\u03B9\u03B4\u03AE\u03C3\u03B5\u03B9\u03C2', - 'http://www.men24.gr/svc/rss/lastNews/'), - (u'\u03A3\u03C4\u03C5\u03BB', - 'http://www.men24.gr/svc/rss/categoryNews/?category=style'), - (u'Fitness', 'http://www.men24.gr/svc/rss/categoryNews/?category=fitness'), - (u'Gadgets', 'http://www.men24.gr/svc/rss/categoryNews/?category=gadgets'), - (u'\u0394\u03B9\u03B1\u03C3\u03BA\u03AD\u03B4\u03B1\u03C3\u03B7', - 'http://www.men24.gr/svc/rss/categoryNews/?category=fun'), - (u'\u03A7\u03C1\u03AE\u03BC\u03B1 \u03BA\u03B1\u03B9 \u039A\u03B1\u03C1\u03B9\u03AD\u03C1\u03B1', - 'http://www.men24.gr/svc/rss/categoryNews/?category=money'), - (u'Special Edition', 'http://www.men24.gr/svc/rss/categoryNews/?category=special'), - (u'\u0388\u03C1\u03C9\u03C4\u03B1\u03C2 \u03BA\u03B1\u03B9 Sex', - 'http://www.men24.gr/svc/rss/categoryNews/?category=love'), - (u'\u0386\u03BD\u03C4\u03C1\u03B5\u03C2 \u03C4\u03BF\u03C5 24', - 'http://www.men24.gr/svc/rss/categoryNews/?category=men'), - (u'\u0393\u03C5\u03BD\u03B1\u03AF\u03BA\u03B5\u03C2', - 'http://www.men24.gr/svc/rss/categoryNews/?category=women'), - (u'\u039F\u03B4\u03B7\u03B3\u03BF\u03AF', - 'http://www.men24.gr/svc/rss/categoryNews/?category=guides'), - (u'\u03A4\u03B6\u03CC\u03B3\u03BF\u03C2', - 'http://www.men24.gr/svc/rss/categoryNews/?category=gamble') - - ] - - def print_version(self, url): - return url.replace('.asp', '.print.asp') diff --git a/recipes/mens_day_out.recipe b/recipes/mens_day_out.recipe deleted file mode 100644 index 4d80e000e4..0000000000 --- a/recipes/mens_day_out.recipe +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env python -# vim:fileencoding=utf-8 -from calibre.web.feeds.news import BasicNewsRecipe - - -def classes(classes): - q = frozenset(classes.split(' ')) - return dict( - attrs={'class': lambda x: x and frozenset(x.split()).intersection(q)}) - - -class MensDayOut(BasicNewsRecipe): - title = 'Mens Day Out' - __author__ = 'Vishvas Vasuki' - language = 'en_IN' - oldest_article = 7 - max_articles_per_feed = 100 - auto_cleanup = True - - feeds = [ - ('MDO main', 'https://mensdayout.com/feed/'), - ] diff --git a/recipes/mens_health.recipe b/recipes/mens_health.recipe deleted file mode 100644 index eac730a9de..0000000000 --- a/recipes/mens_health.recipe +++ /dev/null @@ -1,11 +0,0 @@ -from calibre.web.feeds.news import BasicNewsRecipe - - -class AdvancedUserRecipe1305636254(BasicNewsRecipe): - title = u'Mens Health (US)' - language = 'en' - __author__ = 'Anonymous' - oldest_article = 14 - max_articles_per_feed = 100 - - feeds = [(u'News', u'http://blogs.menshealth.com/health-headlines/feed')] diff --git a/recipes/metro_montreal.recipe b/recipes/metro_montreal.recipe deleted file mode 100644 index bd7bb3a0e7..0000000000 --- a/recipes/metro_montreal.recipe +++ /dev/null @@ -1,31 +0,0 @@ -from calibre.web.feeds.news import BasicNewsRecipe - - -class Metro_Montreal(BasicNewsRecipe): - - title = u'M\xe9tro Montr\xe9al' - __author__ = 'Jerry Clapperton' - description = 'Le quotidien le plus branch\xe9 sur le monde' - language = 'fr' - - oldest_article = 7 - max_articles_per_feed = 20 - use_embedded_content = False - remove_javascript = True - no_stylesheets = True - auto_cleanup = True - encoding = 'utf-8' - extra_css = '.headline {font-size: x-large;} \n .fact {padding-top: 10pt}' - - remove_tags = [dict(attrs={'id': 'buttons'})] - - feeds = [ - (u"L'info", u'http://journalmetro.com/linfo/rss'), - (u'Monde', u'http://journalmetro.com/monde/rss'), - (u'Culture', u'http://journalmetro.com/culture/rss'), - (u'Sports', u'http://journalmetro.com/sports/rss'), - (u'Paroles', u'http://journalmetro.com/paroles/rss') - ] - - def print_version(self, url): - return url.replace('article', 'ArticlePrint') + '?language=fr' diff --git a/recipes/metro_news_nl.recipe b/recipes/metro_news_nl.recipe deleted file mode 100644 index c3e16c0b41..0000000000 --- a/recipes/metro_news_nl.recipe +++ /dev/null @@ -1,234 +0,0 @@ -# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai -from __future__ import print_function - -import re - -from calibre.utils.magick import Image -from calibre.web.feeds.news import BasicNewsRecipe - -''' Version 1.2, updated cover image to match the changed website. - added info date on title - version 1.4 Updated tags, delay and added autoclean 22-09-2011 - version 1.5 Changes due to changes in site - version 1.6 Added css, removed auto cleanup, added buitenland section, added use_embedded_content, added remove_attributes - Added some processing on pictures - Removed links in html - Removed extre white characters - changed handling of self closing span - Version 1.7 11-11-2011 Changed oldest_article back to 1.5 - changed è into è - updated remove tags - removed keep_only tags - Version 1.8 26-11-2022 - added remove tag: article-slideshow - Version 1.9 31-1-2012 - removed some left debug settings - extended timeout from 2 to 10 - changed oldest article from 10 to 1.2 - changed max articles from 15 to 25 - Version 1.9.1 18-04-2012 - removed some debug settings - updated code to match new metro-layout - Version 1.9.2 24-04-2012 - updated code to match new metro-layout - Version 1.9.3 25-04-2012 - Changed a lot of custom code into calibre code as the default code of calibre has become much faster since the first version fo this recipe - Added new feeds - Updated css - Changed order of regex to speedup process - Version 1.9.3 23-05-2012 - Updated Cover image - Version 1.9.4 19-04-2013 - Added regex filter for mailto - Updated for new layout of metro-site - Version 1.9.5 28-05-2013 - Added some extra id's and classes to remove -''' - - -class AdvancedUserRecipe1306097511(BasicNewsRecipe): - title = u'Metro Nieuws NL' - oldest_article = 1.2 - max_articles_per_feed = 25 - __author__ = u'DrMerry' - description = u'Metro Nederland v1.9.5 2013-05-28, Download nieuws van de Nederlandse editie van de krant Metro' - language = u'nl' - simultaneous_downloads = 5 - masthead_url = 'http://blog.metronieuws.nl/wp-content/themes/metro/images/header.gif' - timeout = 10 - center_navbar = True - timefmt = ' [%A, %d %b %Y]' - no_stylesheets = True - remove_javascript = True - remove_empty_feeds = True - cover_url = 'http://www.readmetro.com/en/holland/metro-holland/image/large/last/' - publication_type = 'newspaper' - encoding = 'utf-8' - remove_attributes = ['style', 'font', 'width', 'height', - 'itemtype', 'itemprop', 'itemscope'] # , 'href'] - use_embedded_content = False - extra_css = 'body{font-size:1em;padding:5px 0}body,a,h2{background-color:#fff;text-decoration:none;color:#000}#date,div.byline,p.article-image-caption .credits,.calibrenavbar,.calibre5{font-size:.5em}.article-box-fact.module-title,#date,div.byline{clear:both}.article-box-fact{font-size:0.7em}.article-box-fact.module-title{margin:8px 0; font-size:0.8em}h2{font-size:1em}h1.title{font-size:1.4em}h1.title,.article-body p,div.article-image-caption-2column,div.article-image-caption-3column,#date,div.byline{margin-bottom:.6em}div.article-box-fact div.subtitle,.article-box-fact.module-title,h1.title,p.article-image-caption{font-weight:700}div.column-1-3{margin-left:19px}div.column-1-2{display:inline}div.column-1-2,div.column-1-3{margin-right:7px}p.article-image-caption{font-size:.6em;margin-top:5px}p.article-image-caption,#date,div.byline{color:#616262}p.article-image-caption .credits{font-style:italic}div.article-image-caption{width:246px}div.article-image-caption-2column{width:373px}div.column-3{background-color:#eee;float:right;width:50%}div.column-3 module-title{border:1px solid #aaa}div.article-box-fact div.subtitle,.article-box-fact.module-title{color:#24763b}div.byline{border-top:2px solid #24763b}div.column-3,img,div.column-3,p.small,div.article-image-caption{margin:.5em}img,p.small,.column1,h2,.calibre5,.calibrenavbar{border:0;padding:0}.column1,h1,h2,.calibrenavbar{margin:0}' # noqa - - preprocess_regexps = [ - (re.compile(r'( |\s|]+metronieuws\.nl/([^>]+/templates/[^>]+\.jpe?g|internal\-roxen\-unit\.gif)[^>]+>)', - re.DOTALL | re.IGNORECASE), lambda match: ' '), - ] - - remove_tags_before = dict(id='subwrapper') - remove_tags_after = dict( - name='div', attrs={'class': ['body-area', 'article-main-area']}) -# name='div', attrs={'class':['subwrapper']})] -# 'column-1-3','gallery-text']})]#id='share-and-byline')] - - filter_regexps = [r'mailto:.*'] - - remove_tags = [ - dict(name=['iframe', 'script', 'noscript', 'style']), - dict(name='div', attrs={'class': ['fact-related-box', 'aside clearfix', 'aside clearfix middle-col-line', 'comments', 'share-tools', 'article-right-column', 'column-4-5', 'column-1-5', 'ad-msg', 'col-179 ', 'col-373 ', 'clear', 'ad', 'navigation', re.compile('share-tools(-top)?'), 'tools', 'metroCommentFormWrap', 'article-tools-below-title', 'related-links', 'padding-top-15', re.compile('^promo.*?$'), 'teaser-component', re.compile('fb(-comments|_iframe_widget)'), 'promos', 'header-links', 'promo-2']}), # noqa - dict(id=['super-carousel', 'article-2', 'googleads', 'column-1-5-bottom', 'column-4-5', re.compile('^ad(\\d+|adcomp.*?)?$'), 'adadcomp-4', 'margin-5', 'sidebar', re.compile('^article-\\d'), 'comments', 'gallery-1', 'sharez_container', 'ts-container', 'topshares', 'ts-title']), # noqa - dict(name='a', attrs={'name': 'comments'}), - dict(name='img', attrs={'class': 'top-line', - 'title': 'volledig scherm'}), - dict(attrs={'style': re.compile('^(.*(display\\s?:\\s?none|img-mask|white)\\s?;?.*)$'), 'title': 'volledig scherm'})] - - '''removed by before/after: - id: - column-1-5-top,'hidden_div','footer', - class: - 'header',re.compile('^footer-[a-zA-Z0-9]+$),'header-links', - ''' - - def preprocess_html(self, soup): - myProcess = MerryProcess() - myProcess.moveTitleAndAuthor(soup) - myProcess.removeUnwantedTags(soup) - return soup - - def postprocess_html(self, soup, first): - myProcess = MerryProcess() - myProcess.optimizeLayout(soup) - return soup - - feeds = [ - (u'Binnenland', u'http://www.metronieuws.nl/rss.xml?c=1277377288-3'), - (u'Economie', u'http://www.metronieuws.nl/rss.xml?c=1278070988-0'), - (u'Den Haag', u'http://www.metronieuws.nl/rss.xml?c=1289013337-3'), - (u'Rotterdam', u'http://www.metronieuws.nl/rss.xml?c=1289013337-2'), - (u'Amsterdam', u'http://www.metronieuws.nl/rss.xml?c=1289013337-1'), - (u'Buitenland', u'http://www.metronieuws.nl/rss.xml?c=1277377288-4'), - (u'Columns', u'http://www.metronieuws.nl/rss.xml?c=1277377288-17'), - (u'Entertainment', u'http://www.metronieuws.nl/rss.xml?c=1277377288-2'), - (u'Strips', u'http://www.metronieuws.nl/rss.xml?c=1325037714-0'), - (u'Tech', u'http://www.metronieuws.nl/rss.xml?c=1283166782-12'), - (u'Familie', u'http://www.metronieuws.nl/rss.xml?c=1283166782-9'), - (u'Blogs', u'http://www.metronieuws.nl/rss.xml?c=1295586825-6'), - (u'Reizen', u'http://www.metronieuws.nl/rss.xml?c=1277377288-13'), - (u'Carrière', u'http://www.metronieuws.nl/rss.xml?c=1278070988-1'), - (u'Wetenschap', u'http://www.metronieuws.nl/rss.xml?c=1303088437-0'), - (u'Planeet', u'http://www.metronieuws.nl/rss.xml?c=1277377288-14'), - (u'Gezondheid', u'http://www.metronieuws.nl/rss.xml?c=1277377288-15'), - (u'Sport', u'http://www.metronieuws.nl/rss.xml?c=1277377288-12') - ] - - -class MerryPreProcess(): - - def optimizePicture(self, soup): - for tag in soup.findAll('img', src=True): - try: - iurl = tag['src'] - img = Image() - img.open(iurl) - img.trim(0) - img.save(iurl) - except: - print('\n!!image optimize failed!!\n') - continue - return soup - - -class MerryExtract(): - - def safeRemovePart(self, killingSoup, soupIsArray): - if killingSoup and killingSoup is not None: - try: - if soupIsArray is True: - for killer in killingSoup: - killer.extract() - else: - killingSoup.extract() - except: - return False - else: - return False - return killingSoup - - -class MerryProcess(object): - myKiller = MerryExtract() - myPrepare = MerryPreProcess() - - def optimizeLayout(self, soup): - self.myPrepare.optimizePicture(soup) - return soup - - def insertFacts(self, soup): - thefactpart = re.compile('^article-box-fact.*$') - allfacts = soup.findAll('div', {'class': thefactpart}) - if allfacts and allfacts is not None: - allfactsparent = soup.find('div', {'class': thefactpart}).parent - for part in allfactsparent: - if part not in allfacts: - self.myKiller.safeRemovePart(part, True) - articlefacts = soup.find('div', {'class': 'article-box-fact column'}) - if (articlefacts and articlefacts is not None): - try: - contenttag = soup.find('div', {'class': 'article-body'}) - foundrighttag = False - if contenttag and contenttag is not None: - foundrighttag = True - if foundrighttag is True: - contenttag.insert(0, allfactsparent) - except: - pass - return soup - - def moveTitleAndAuthor(self, soup): - moveitem = soup.h1 - pubdate = soup.find(id="date") - if moveitem and moveitem is not None and pubdate and pubdate is not None: - try: - pubdate.parent.insert(0, moveitem) - except: - print('\n!!error in moving title!!\n') - pass - moveitem = None - moveitem = soup.find('div', {'class': 'byline'}) - if moveitem and moveitem is not None: - try: - moveitem.parent.parent.insert(-1, moveitem) - except: - print('\n!!error in moving byline!!\n') - pass - return soup - - def removeUnwantedTags(self, soup): - self.insertFacts(soup) - self.removeEmptyTags(soup) - # at end to keep author - self.removeArrayOfTags(soup.findAll( - attrs={'class': 'share-tools-bottom'})) - return soup - - def removeArrayOfTags(self, souparray): - return self.myKiller.safeRemovePart(souparray, True) - - def removeEmptyTags(self, soup, run=0): - emptymatches = re.compile('^[ \\s\n\r\t ]*$') - emptytags = soup.findAll(lambda tag: tag.find(True) is None and ( - tag.string is None or tag.string.strip() == "" or tag.string.strip() == emptymatches) and not tag.isSelfClosing) - if emptytags and not (emptytags is None or emptytags == []): - self.removeArrayOfTags(emptytags) - # recursive in case removing empty tag creates new empty tag - self.removeEmptyTags(soup, run=run) - return soup diff --git a/recipes/metro_uk.recipe b/recipes/metro_uk.recipe deleted file mode 100644 index 22b02b9583..0000000000 --- a/recipes/metro_uk.recipe +++ /dev/null @@ -1,62 +0,0 @@ -from __future__ import print_function - -import re - -from calibre.web.feeds.news import BasicNewsRecipe - - -class AdvancedUserRecipe1390146870(BasicNewsRecipe): - title = u'Metro UK' - language = 'en_GB' - __author__ = 'D Asbury' - # 20.6.2015 rss using feed 43 - D Asbury - # item repeatable string =

{%}

- oldest_article = 1 - max_articles_per_feed = 10 - scale_news_images_to_device = True - compress_news_images = True - compress_news_images_max_size = 16 - ignore_duplicate_articles = {'title', 'url'} - masthead_url = 'http://cdn.images.dailyexpress.co.uk/img/page/express_logo.png' - auto_cleanup = True - no_stylesheets = True - cover_url = 'https://lh4.ggpht.com/aaKY88SbQyB-vK-pgjo22-QVi6dUnOt7aVsRueTU8Fg-zPwOdsDdOVElGM8O0BBDSIsuB9rciyc=w300' - masthead_url = 'http://s1.wp.com/wp-content/themes/vip/metrouk/img/branding/metro_logo_300x95.png?m=1363331170g' - - preprocess_regexps = [ - (re.compile(r'\| Metro News', re.IGNORECASE | re.DOTALL), lambda match: ''), - - ] - - feeds = [ - # 'http://metro.co.uk/news/uk/rss'), - (u'UK', 'http://feed43.com/5636207287684703.xml'), - (u'World News', 'http://feed43.com/4555301018714738.xml'), - (u'Weird', 'http://feed43.com/0483673464615441.xml'), - (u'Sport', 'http://feed43.com/4655536887165433.xml'), - (u'Entertainment', 'http://feed43.com/6342124113153248.xml'), - (u'Lifestyle', 'http://feed43.com/7603240345000555.xml'), - ] - -# starsons code - def parse_feeds(self): - feeds = BasicNewsRecipe.parse_feeds(self) - for feed in feeds: - for article in feed.articles[:]: - print('article.title is: ', article.title) - if 'VIDEO:' in article.title.upper(): - feed.articles.remove(article) - - return feeds - - extra_css = ''' - h1{font-weight:bold;font-size:175%;} - h2{display: block;margin-left: auto;margin-right: auto;width:125%;font-weight:bold;font-size:150%;} - #p{font-size:14px;} - #body{font-size:14px;} - .figcaption {display: block;margin-left: auto;margin-right: auto;width:100%;font-size:40%;} - .alignnone{display: block;margin-left: auto;margin-right: auto;width:100%;font-size:40%;} - .publish-info {font-size:50%;} - .aligncenter{display: block;margin-left: auto;margin-right: auto;width:100%;} - ''' diff --git a/recipes/metropol_tv.recipe b/recipes/metropol_tv.recipe deleted file mode 100644 index 6a2d6e9b88..0000000000 --- a/recipes/metropol_tv.recipe +++ /dev/null @@ -1,29 +0,0 @@ -# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai -from __future__ import unicode_literals - -from calibre.web.feeds.recipes import BasicNewsRecipe - - -class metropolRecipe(BasicNewsRecipe): - __author__ = 'bubak' - title = u'Metropol TV' - publisher = u'' - description = 'metropol.cz' - oldest_article = 1 - max_articles_per_feed = 20 - use_embedded_content = False - - feeds = [ - (u'Metropolcv.cz', u'http://www.metropol.cz/rss/') - ] - - language = 'cs' - cover_url = 'http://www.metropol.cz/public/css/../images/logo/metropoltv.png' - remove_javascript = True - no_stylesheets = True - extra_css = """ - """ - - remove_attributes = [] - - keep_only_tags = [dict(name='div', attrs={'id': ['art-full']})] diff --git a/recipes/military_times.recipe b/recipes/military_times.recipe deleted file mode 100644 index c2e98cfbf5..0000000000 --- a/recipes/military_times.recipe +++ /dev/null @@ -1,39 +0,0 @@ -from calibre.web.feeds.news import BasicNewsRecipe - - -class MilitaryTimes(BasicNewsRecipe): - title = 'Military Times' - __author__ = 'jde' - __date__ = '16 May 2012' - __version__ = '1.0' - description = 'News of the U.S. Military' - language = 'en' - publisher = 'MilitaryTimes.com' - category = 'news, U.S. Military' - tags = 'news, U.S. Military' - cover_url = 'http://www.militarytimes.com/images/logo_militarytimes_landing-s.gif' - masthead_url = 'http://www.militarytimes.com/images/logo_militarytimes_landing-s.gif' - oldest_article = 7 # days - max_articles_per_feed = 25 - publication_type = 'newspaper' - no_stylesheets = True - use_embedded_content = False - encoding = None - recursions = 0 - needs_subscription = False - remove_javascript = True - remove_empty_feeds = True - auto_cleanup = True - - feeds = [ - - ('News', 'http://www.militarytimes.com/rss_news.php'), - ('Benefits', 'http://www.militarytimes.com/rss_benefits.php'), - ('Money', 'http://www.militarytimes.com/rss_money.php'), - ('Careers & Education', 'http://www.militarytimes.com/rss_careers.php'), - ('Community', 'http://www.militarytimes.com/rss_community.php'), - ('Off Duty', 'http://www.militarytimes.com/rss_off_duty.php'), - ('Entertainment', 'http://www.militarytimes.com/rss_entertainment.php'), - ('Guard & Reserve', 'http://www.militarytimes.com/rss_guard.php'), - - ] diff --git a/recipes/mlody_technik_pl.recipe b/recipes/mlody_technik_pl.recipe deleted file mode 100644 index 535f900ca8..0000000000 --- a/recipes/mlody_technik_pl.recipe +++ /dev/null @@ -1,38 +0,0 @@ -# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai -import re - -from calibre.web.feeds.news import BasicNewsRecipe - - -class Mlody_technik(BasicNewsRecipe): - title = u'Młody technik' - __author__ = 'fenuks' - description = u'Młody technik' - category = 'science' - language = 'pl' - no_stylesheets = True - extra_css = 'img.alignleft {float: left; margin-right: 5px;}' - preprocess_regexps = [ - (re.compile(r"

Podobne

", re.IGNORECASE), lambda m: '')] - oldest_article = 7 - max_articles_per_feed = 100 - remove_empty_feeds = True - use_embedded_content = False - keep_only_tags = [dict(id='content')] - remove_tags = [dict(attrs={'class': 'st-related-posts'})] - remove_tags_after = dict(attrs={'class': 'entry-content clearfix'}) - feeds = [(u'Wszystko', u'http://www.mt.com.pl/feed'), - # (u'MT NEWS 24/7', u'http://www.mt.com.pl/kategoria/mt-newsy-24-7/feed'), - (u'Info zoom', u'http://www.mt.com.pl/kategoria/info-zoom/feed'), - (u'm.technik', u'http://www.mt.com.pl/kategoria/m-technik/feed'), - (u'Szkoła', u'http://www.mt.com.pl/kategoria/szkola-2/feed'), - (u'Na Warsztacie', u'http://www.mt.com.pl/kategoria/na-warsztacie/feed'), - (u'Z pasji do...', u'http://www.mt.com.pl/kategoria/z-pasji-do/feed'), - (u'MT testuje', u'http://www.mt.com.pl/kategoria/mt-testuje/feed')] - - def get_cover_url(self): - soup = self.index_to_soup('http://www.mt.com.pl/') - tag = soup.find(attrs={'class': 'xoxo'}) - if tag: - self.cover_url = tag.find('img')['src'] - return getattr(self, 'cover_url', self.cover_url) diff --git a/recipes/mobilenations.recipe b/recipes/mobilenations.recipe deleted file mode 100644 index d4a13af10f..0000000000 --- a/recipes/mobilenations.recipe +++ /dev/null @@ -1,18 +0,0 @@ -from calibre.web.feeds.news import BasicNewsRecipe - - -class HindustanTimes(BasicNewsRecipe): - title = u'Mobile Nations' - language = 'en' - __author__ = 'Krittika Goyal' - oldest_article = 1 # days - max_articles_per_feed = 25 - use_embedded_content = False - - no_stylesheets = True - auto_cleanup = True - - feeds = [ - ('News', - 'http://www.mobilenations.com/about?format=RSS'), - ] diff --git a/recipes/moldovaazi.recipe b/recipes/moldovaazi.recipe deleted file mode 100644 index 5629de19ef..0000000000 --- a/recipes/moldovaazi.recipe +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -__license__ = 'GPL v3' -__copyright__ = u'2011, Silviu Cotoar\u0103' -''' -azi.md -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class MoldovaAzi(BasicNewsRecipe): - title = u'Moldova Azi' - language = 'ro' - __author__ = u'Silviu Cotoar\u0103' - description = u'Moldova pe internet' - publisher = 'Moldova Azi' - category = 'Ziare,Stiri,Moldova' - oldest_article = 5 - max_articles_per_feed = 100 - no_stylesheets = True - use_embedded_content = False - encoding = 'utf-8' - remove_javascript = True - cover_url = 'http://www.azi.md/images/logo.gif' - - conversion_options = { - 'comments': description, 'tags': category, 'language': language, 'publisher': publisher - } - - keep_only_tags = [dict(name='div', attrs={'id': 'in'}) - ] - - remove_tags = [ - dict(name='div', attrs={'class': 'in-more-stories'}) - ] - - remove_tags_after = [ - dict(name='div', attrs={'id': 'comment_wrapper'}), dict( - name='div', attrs={'class': 'box-title4'}) - ] - - feeds = [(u'\u0218tiri', u'http://www.azi.md/ro/feeds/0/rss201')] - - def preprocess_html(self, soup): - return self.adeify_images(soup) diff --git a/recipes/monbiot.recipe b/recipes/monbiot.recipe deleted file mode 100644 index 80c0e816f3..0000000000 --- a/recipes/monbiot.recipe +++ /dev/null @@ -1,41 +0,0 @@ -__license__ = 'GPL v3' -__copyright__ = '2012, Darko Miletic ' -''' -www.monbiot.com -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class GeorgeMonbiot(BasicNewsRecipe): - title = 'George Monbiot - blog' - __author__ = 'Darko Miletic' - description = 'Tell people something they know already and they will thank you for it. Tell people something new and they will hate you for it.' - publisher = 'George Monbiot' - category = 'news, politics, UK, World' - oldest_article = 15 - max_articles_per_feed = 200 - no_stylesheets = True - encoding = 'utf8' - use_embedded_content = False - language = 'en_GB' - remove_empty_feeds = True - publication_type = 'blog' - extra_css = """ - body{font-family: Arial,Helvetica,sans-serif } - img{margin-bottom: 0.4em; display:block} - """ - - conversion_options = { - 'comment': description, 'tags': category, 'publisher': publisher, 'language': language - } - - remove_tags = [ - dict(name=['meta', 'link']), - dict(attrs={'class': 'shareinpost'}), - dict(attrs={'id': 'paging'}) - ] - remove_attributes = ['lang'] - keep_only_tags = [dict(attrs={'id': 'content'})] - - feeds = [(u'Articles', u'http://www.monbiot.com/feed/atom/')] diff --git a/recipes/mondedurable.recipe b/recipes/mondedurable.recipe deleted file mode 100644 index 2e3c30bc2b..0000000000 --- a/recipes/mondedurable.recipe +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/bin/env python - -__license__ = 'GPL v3' -__copyright__ = '2009, Darko Miletic ' -''' -mondedurable.science-et-vie.com -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class AdventureGamers(BasicNewsRecipe): - title = 'Monde durable' - language = 'fr' - - __author__ = 'Darko Miletic' - description = 'science news' - publisher = 'Monde durable' - category = 'environnement, developpement durable, science & vie, science et vie' - oldest_article = 30 - delay = 2 - max_articles_per_feed = 100 - no_stylesheets = True - auto_cleanup = True - encoding = 'utf-8' - remove_javascript = True - use_embedded_content = False - - html2lrf_options = [ - '--comment', description, '--category', category, '--publisher', publisher - ] - - html2epub_options = 'publisher="' + publisher + \ - '"\ncomments="' + description + '"\ntags="' + category + '"' - - feeds = [(u'Articles', u'http://mondedurable.science-et-vie.com/comments/feed/')] - - def preprocess_html(self, soup): - mtag = '' - soup.head.insert(0, mtag) - for item in soup.findAll(style=True): - del item['style'] - return soup diff --git a/recipes/money_pl.recipe b/recipes/money_pl.recipe deleted file mode 100644 index bc0275ef8e..0000000000 --- a/recipes/money_pl.recipe +++ /dev/null @@ -1,82 +0,0 @@ -import re - -from calibre.web.feeds.news import BasicNewsRecipe - - -class FocusRecipe(BasicNewsRecipe): - __license__ = 'GPL v3' - __author__ = u'Artur Stachecki ' - language = 'pl' - version = 1 - - title = u'Money.pl' - category = u'News' - description = u'Informacje finansowe z kraju i ze świata. Aktualne i archiwalne: notowania giełdowe, kursy walut, wskaźniki gospodarcze.' - remove_empty_feeds = True - no_stylesheets = True - oldest_article = 1 - max_articles_per_feed = 100000 - recursions = 0 - - no_stylesheets = True - remove_javascript = True - - simultaneous_downloads = 2 - - r = re.compile( - r'.*(?Phttp:\/\/(www.money.pl)|(rss.feedsportal.com\/c)\/.*\.html?).*') - keep_only_tags = [] - keep_only_tags.append(dict(name='div', attrs={'class': 'artykul'})) - remove_tags = [dict(name='ul', attrs={'class': 'socialStuff'})] - - extra_css = ''' - body {font-family: Arial,Helvetica,sans-serif ;} - h1{text-align: left;} - h2{font-size: medium; font-weight: bold;} - p.lead {font-weight: bold; text-align: left;} - .authordate {font-size: small; color: #696969;} - .fot{font-size: x-small; color: #666666;} - ''' - - feeds = [ - ('Wiadomosci z kraju', 'http://money.pl.feedsportal.com/c/33900/f/612847/index.rss'), - ('Wiadomosci ze swiata', - 'http://money.pl.feedsportal.com/c/33900/f/612848/index.rss'), - ('Gospodarka', 'http://money.pl.feedsportal.com/c/33900/f/612849/index.rss'), - ('Waluty', 'http://money.pl.feedsportal.com/c/33900/f/612850/index.rss'), - ('Gielda', 'http://money.pl.feedsportal.com/c/33900/f/612851/index.rss'), - ('Banki', 'http://money.pl.feedsportal.com/c/33900/f/612852/index.rss'), - ('Fundusze', 'http://money.pl.feedsportal.com/c/33900/f/612853/index.rss'), - ('Emerytury', 'http://money.pl.feedsportal.com/c/33900/f/612854/index.rss'), - ('Podatki', 'http://money.pl.feedsportal.com/c/33900/f/612855/index.rss'), - ('Ubezpieczenia', - 'http://money.pl.feedsportal.com/c/33900/f/612856/index.rss'), - ('Poradniki', 'http://money.pl.feedsportal.com/c/33900/f/612857/index.rss'), - ('Raporty', 'http://money.pl.feedsportal.com/c/33900/f/612858/index.rss'), - ('Motoryzacja', 'http://money.pl.feedsportal.com/c/33900/f/612859/index.rss'), - ('Manager', 'http://money.pl.feedsportal.com/c/33900/f/612860/index.rss'), - ('Dla firm', 'http://money.pl.feedsportal.com/c/33900/f/612861/index.rss'), - ('Prawo', 'http://money.pl.feedsportal.com/c/33900/f/612862/index.rss'), - ('Nieruchomosci', - 'http://money.pl.feedsportal.com/c/33900/f/612863/index.rss'), - ('Praca', 'http://money.pl.feedsportal.com/c/33900/f/612864/index.rss'), - - - ] - - def print_version(self, url): - if url.count('money.pl.feedsportal.com'): - u = url.find('0Cartykul0C') - u = 'http://www.m.money.pl/wiadomosci/artykul/' + url[u + 21:] - u = u.replace('0C', '/') - u = u.replace('A', '') - u = u.replace('0E', '-') - u = u.replace('0P', ';') - u = u.replace('0H', ',') - u = u.replace('0B', '.') - u = u.replace(',0,', ',-1,') - u = u.replace( - '0Tutm0Isource0Frss0Gutm0Imedium0Frss0Gutm0Icampaign0Frss/story01.htm', '') - else: - u = url.replace('/nc/1', '/do-druku/1') - return u diff --git a/recipes/moneyro.recipe b/recipes/moneyro.recipe deleted file mode 100644 index fe22bddcac..0000000000 --- a/recipes/moneyro.recipe +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -__license__ = 'GPL v3' -__copyright__ = u'2011, Silviu Cotoar\u0103' -''' -money.ro -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class MoneyRo(BasicNewsRecipe): - title = 'Money Ro' - __author__ = u'Silviu Cotoar\u0103' - description = u'\u0218tiri din Rom\u00e2nia' - publisher = 'MoneyRo' - oldest_article = 5 - language = 'ro' - max_articles_per_feed = 100 - no_stylesheets = True - use_embedded_content = False - category = 'Ziare,Stiri,Romania' - encoding = 'utf-8' - remove_javascript = True - cover_url = 'http://assets.moneyweb.ro/images/logo_money.jpg' - - conversion_options = { - 'comments': description, 'tags': category, 'language': language, 'publisher': publisher - } - - keep_only_tags = [dict(name='div', attrs={'id': 'titluArticol'}), dict(name='img', attrs={'id': 'objImage'}), dict(name='div', attrs={'class': 'leftColumnArticle'}) # noqa - ] - - remove_tags_after = [dict(name='div', attrs={'id': 'articleTags'})] - - remove_tags = [dict(name='div', attrs={'id': 'ads'}), dict(name='div', attrs={'id': 'aus'}), dict(name='div', attrs={'id': 'bb-comment-create-form'}), dict(name='div', attrs={'id': 'articleTags'}), dict(name='div', attrs={'class': 'breadcrumb'}) # noqa - ] - - feeds = [ - (u'\u0218tiri', u'http://moneyro.feedsportal.com/c/32533/fe.ed/rss.money.ro/stiri.xml')] - - def preprocess_html(self, soup): - return self.adeify_images(soup) diff --git a/recipes/more_intelligent_life.recipe b/recipes/more_intelligent_life.recipe deleted file mode 100644 index f060df077a..0000000000 --- a/recipes/more_intelligent_life.recipe +++ /dev/null @@ -1,34 +0,0 @@ -__license__ = 'GPL v3' -__copyright__ = '2013 - 2015, Darko Miletic ' -''' -moreintelligentlife.com -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class MoreIntelligentLife(BasicNewsRecipe): - title = 'More Intelligent Life' - __author__ = 'Darko Miletic' - description = "More Intelligent Life (moreintelligentlife.com) is the online version of Intelligent Life, a lifestyle and culture magazine from The Economist. The website offers not only content from the print edition, trickled out over the course of its shelf-life, but also the Editors' Blog, which carries daily posts from the editorial team-quickfire observations and opinions that allow readers to eavesdrop on the conversation in the office." # noqa - publisher = 'The Economist Newspaper ltd' - category = 'arts,lifestyle,intelligent life,the economist,ideas,style,culture' - oldest_article = 60 - max_articles_per_feed = 200 - no_stylesheets = True - encoding = 'utf8' - use_embedded_content = False - language = 'en' - remove_empty_feeds = True - publication_type = 'website' - auto_cleanup = True - extra_css = """ - body{font-family: "DTL Fleischmann-Regular", serif} - img{margin-bottom: 0.4em; display:block} - """ - - conversion_options = { - 'comment': description, 'tags': category, 'publisher': publisher, 'language': language - } - - feeds = [(u'Articles', u'http://www.intelligentlifemagazine.com/rss/content')] diff --git a/recipes/movie_web.recipe b/recipes/movie_web.recipe deleted file mode 100644 index c9a2cb0318..0000000000 --- a/recipes/movie_web.recipe +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/env python -# vim:fileencoding=utf-8 -from calibre.web.feeds.news import BasicNewsRecipe - - -class AdvancedUserRecipe1716109041(BasicNewsRecipe): - title = 'MovieWeb' - description = ( - 'MovieWeb was one of the first digital publications to appear on the web.' - ' Covering the industry from our teams in NY, LA, and beyond, MovieWeb continues' - ' to be one of the most trusted movie and TV entertainment destinations for the connected generation.' - ' MovieWeb is the go-to for enthusiasts, providing the latest news on movie and TV castings and development,' - ' release dates, trailers, interviews, and more.') - __author__ = 'Spicy Poison' - encoding = 'utf-8' - use_embedded_content = False - masthead_url = 'https://www.valnetinc.com/images/brand/mw-logo-full-colored-dark.svg' - no_stylesheets = True - ignore_duplicate_articles = {'title', 'url'} - oldest_article = 30 - max_articles_per_feed = 100 - auto_cleanup = True - - feeds = [ - ('Trailers', 'https://movieweb.com/feed/trailers/'), - ('Movie News', 'https://movieweb.com/feed/movie-news/'), - ('TV News', 'https://movieweb.com/feed/tv-news/'), - ('Marvel Cinematic Universe News', 'https://movieweb.com/feed/mcu-news/'), - ('DC Universe News', 'https://movieweb.com/feed/tag/dcu-news/'), - ('Action', 'https://movieweb.com/feed/tag/action/'), - ('Comedy', 'https://movieweb.com/feed/tag/comedy/'), - ('Fantasy', 'https://movieweb.com/feed/tag/fantasy/'), - ('Horror', 'https://movieweb.com/feed/tag/horror/'), - ('Sci-Fi', 'https://movieweb.com/feed/tag/sci-fi/'), - ('Western', 'https://movieweb.com/feed/tag/western/'), - ('Apple TV+', 'https://movieweb.com/feed/tag/apple-tv-plus/'), - ('Criterion Collection', 'https://movieweb.com/feed/tag/criterion-collection/'), - ('Disney+', 'https://movieweb.com/feed/tag/disney-plus/'), - ('Hulu', 'https://movieweb.com/feed/tag/hulu/'), - ('HBO Max', 'https://movieweb.com/feed/tag/hbo-max/'), - ('Netflix', 'https://movieweb.com/feed/tag/netflix/'), - ('Paramount+', 'https://movieweb.com/feed/tag/paramount-plus/'), - ('Amazon Prime Video', 'https://movieweb.com/feed/tag/prime-video/'), - ('Shudder', 'https://movieweb.com/feed/tag/shudder/'), - ('Tubi', 'https://movieweb.com/feed/tag/tubi/'), - ('Features', 'https://movieweb.com/feed/features/'), - ('Movie Lists', 'https://movieweb.com/feed/movie-lists/'), - ('TV Lists', 'https://movieweb.com/feed/tv-lists/'), - ('Interviews', 'https://movieweb.com/feed/celebrity-interviews/'), - ('Movie and TV Reviews', 'https://movieweb.com/feed/movie-reviews/'), - ] diff --git a/recipes/msdnmag_en.recipe b/recipes/msdnmag_en.recipe deleted file mode 100644 index 3b0191f750..0000000000 --- a/recipes/msdnmag_en.recipe +++ /dev/null @@ -1,64 +0,0 @@ -#!/usr/bin/env python - -__license__ = 'GPL v3' -__copyright__ = '2009, Darko Miletic ' -''' -msdn.microsoft.com/en-us/magazine -''' -from calibre.ebooks.BeautifulSoup import BeautifulSoup, BeautifulStoneSoup -from calibre.web.feeds.news import BasicNewsRecipe - - -class MSDNMagazine_en(BasicNewsRecipe): - title = 'MSDN Magazine' - __author__ = 'Darko Miletic' - description = 'The Microsoft Journal for Developers' - masthead_url = 'http://i3.msdn.microsoft.com/Platform/MasterPages/MsdnMagazine/smalllogo.png' - publisher = 'Microsoft Press' - category = 'news, IT, Microsoft, programming, windows' - oldest_article = 31 - max_articles_per_feed = 100 - no_stylesheets = True - use_embedded_content = False - encoding = 'utf-8' - language = 'en' - - base_url = 'http://msdn.microsoft.com/en-us/magazine/default.aspx' - rss_url = 'http://msdn.microsoft.com/en-us/magazine/rss/default.aspx?z=z&iss=1' - - keep_only_tags = [dict(name='div', attrs={'id': 'MainContent'})] - - remove_tags = [ - dict(name='div', attrs={'class': 'DivRatingsOnly'}), dict( - name='div', attrs={'class': 'ShareThisButton4'}) - ] - - def find_articles(self): - idx_contents = self.browser.open(self.rss_url).read() - idx = BeautifulStoneSoup( - idx_contents, convertEntities=BeautifulStoneSoup.XML_ENTITIES) - - for article in idx.findAll('item'): - desc_html = self.tag_to_string(article.find('description')) - description = self.tag_to_string(BeautifulSoup(desc_html)) - - a = { - 'title': self.tag_to_string(article.find('title')), - 'url': self.tag_to_string(article.find('link')), - 'description': description, - 'date': self.tag_to_string(article.find('pubdate')), - } - yield a - - def parse_index(self): - soup = self.index_to_soup(self.base_url) - - # find issue name, eg "August 2011" - issue_name = self.tag_to_string(soup.find('h1')) - - # find cover pic - img = soup.find('img', attrs={'alt': issue_name}) - if img is not None: - self.cover_url = img['src'] - - return [(issue_name, list(self.find_articles()))] diff --git a/recipes/msnsankei.recipe b/recipes/msnsankei.recipe deleted file mode 100644 index ae9781c6a3..0000000000 --- a/recipes/msnsankei.recipe +++ /dev/null @@ -1,25 +0,0 @@ - -__license__ = 'GPL v3' -__copyright__ = '2010,2014, Hiroshi Miura ' -''' -sankei.jp.msn.com -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class MSNSankeiNewsProduct(BasicNewsRecipe): - title = u'MSN\u7523\u7d4c\u30cb\u30e5\u30fc\u30b9(\u65b0\u5546\u54c1)' - __author__ = 'Hiroshi Miura' - description = 'Products release from Japan' - oldest_article = 7 - max_articles_per_feed = 100 - encoding = 'utf-8' - language = 'ja' - cover_url = 'http://sankei.jp.msn.com/images/common/sankeShinbunLogo.jpg' - masthead_url = 'http://sankei.jp.msn.com/images/common/sankeiNewsLogo.gif' - - feeds = [(u'\u65b0\u5546\u54c1', - u'http://sankei.jp.msn.com/rss/news/release.xml')] - - keep_only_tags = [dict(id=['MainContent'])] diff --git a/recipes/nacionred.recipe b/recipes/nacionred.recipe deleted file mode 100644 index 5450c78197..0000000000 --- a/recipes/nacionred.recipe +++ /dev/null @@ -1,11 +0,0 @@ -from calibre.web.feeds.news import BasicNewsRecipe - - -class AdvancedUserRecipe1291022049(BasicNewsRecipe): - title = u'NacionRed.com' - oldest_article = 7 - max_articles_per_feed = 100 - language = 'es' - __author__ = 'Arturo Martinez Nieves' - - feeds = [(u'NacionRed.com', u'http://feeds.weblogssl.com/nacionred?format=xml')] diff --git a/recipes/nadacni_fond_proti_korupci.recipe b/recipes/nadacni_fond_proti_korupci.recipe deleted file mode 100644 index 8d841d316e..0000000000 --- a/recipes/nadacni_fond_proti_korupci.recipe +++ /dev/null @@ -1,29 +0,0 @@ -# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai -from __future__ import unicode_literals - -from calibre.web.feeds.recipes import BasicNewsRecipe - - -class nfpkRecipe(BasicNewsRecipe): - __author__ = 'bubak' - title = u'Nadační fond proti korupci' - publisher = u'' - description = 'nfpk.cz' - oldest_article = 7 - max_articles_per_feed = 20 - use_embedded_content = False - remove_empty_feeds = True - - feeds = [ - (u'Aktuality', u'http://feeds.feedburner.com/nfpk') - ] - - language = 'cs' - cover_url = 'http://www.nfpk.cz/_templates/nfpk/_images/logo.gif' - remove_javascript = True - no_stylesheets = True - extra_css = """ - """ - - remove_attributes = [] - keep_only_tags = [dict(name='div', attrs={'id': 'content'})] diff --git a/recipes/nation_ke.recipe b/recipes/nation_ke.recipe deleted file mode 100644 index e4fad18ea3..0000000000 --- a/recipes/nation_ke.recipe +++ /dev/null @@ -1,58 +0,0 @@ -__license__ = 'GPL v3' -__copyright__ = '2010, Hans Donner ' -''' -www.standardmedia.co.ke -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class NationKeRecipe(BasicNewsRecipe): - - __author__ = 'Hans Donner' - - title = u'Sunday Nation' - description = 'News from Kenia' - language = 'en' - country = 'KE' - publication_type = 'newspaper' - publisher = 'nation.co.ke' - category = 'news, politics, Kenia' - - masthead_url = 'http://www.nation.co.ke/image/view/-/465228/medRes/33884/-/maxh/85/-/12e8pptz/-/Sunday_Logo.gif' - - max_articles_per_feed = 200 - oldest_article = 2 - - use_embedded_content = False - remove_empty_feeds = True - - no_stylesheets = True - extra_css = ' body{font-family: Verdana,Arial,Helvetica,sans-serif; font-size:0.7em } ' + \ - ' .image{margin-bottom: 1em} ' - - keep_only_tags = dict(id='articlebody') - - feeds = [(u'News', u'http://www.nation.co.ke/News/-/1056/1056/-/view/asFeed/-/14nfs48z/-/index.xml'), - (u'Business', u'http://www.nation.co.ke/business/-/996/996/-/view/asFeed/-/14lpkvc/-/index.xml'), - (u'InDepth', u'http://www.nation.co.ke/InDepth/-/452898/452898/-/view/asFeed/-/14ndbk6/-/index.xml'), - (u'Sports', u'http://www.nation.co.ke/sports/-/1090/1090/-/view/asFeed/-/hlukmj/-/index.xml'), - (u'Magazines', u'http://www.nation.co.ke/magazines/-/1190/1190/-/view/asFeed/-/fcxm6jz/-/index.xml'), - (u'Op/Ed', u'http://www.nation.co.ke/oped/-/1192/1192/-/view/asFeed/-/unsp8mz/-/index.xml'), - (u'Blogs', u'http://www.nation.co.ke/blogs/-/620/620/-/view/asFeed/-/28ia05z/-/index.xml')] - - conversion_options = { - 'comment': description, 'tags': category, 'publisher': publisher, 'language': language - } - - def print_version(self, url): - from calibre.ebooks.BeautifulSoup import BeautifulSoup - soup = BeautifulSoup(self.browser.open(url).read()) - printversion = soup.find('a', text='Print') - if printversion is None: - return url - else: - return 'http://www.nation.co.ke' + printversion.parent['href'] - - def preprocess_html(self, soup): - return self.adeify_images(soup) diff --git a/recipes/national_geographic_it.recipe b/recipes/national_geographic_it.recipe deleted file mode 100644 index b981252a95..0000000000 --- a/recipes/national_geographic_it.recipe +++ /dev/null @@ -1,18 +0,0 @@ -__version__ = 'v1.0' -__date__ = '5, May 2012' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class AdvancedUserRecipe1336226255(BasicNewsRecipe): - title = u'National Geographic' - __author__ = 'faber1971' - description = 'Science magazine' - language = 'it' - - oldest_article = 15 - max_articles_per_feed = 100 - auto_cleanup = True - remove_tags = [dict(name='div', attrs={'class': 'banner-abbonamenti'})] - feeds = [(u'National Geographic', - u'http://www.nationalgeographic.it/rss/all/rss2.0.xml')] diff --git a/recipes/nationalgeoro.recipe b/recipes/nationalgeoro.recipe deleted file mode 100644 index f0d14312df..0000000000 --- a/recipes/nationalgeoro.recipe +++ /dev/null @@ -1,46 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -__license__ = 'GPL v3' -__copyright__ = u'2011, Silviu Cotoar\u0103' -''' -natgeo.ro -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class NationalGeoRo(BasicNewsRecipe): - title = u'National Geographic RO' - __author__ = u'Silviu Cotoar\u0103' - description = u'S\u0103 avem grij\u0103 de planet\u0103' - publisher = 'National Geographic' - oldest_article = 35 - language = 'ro' - max_articles_per_feed = 100 - no_stylesheets = True - use_embedded_content = False - category = 'Reviste' - encoding = 'utf-8' - cover_url = 'http://wiki.benecke.com/images/c/c4/NatGeographic_Logo.jpg' - - conversion_options = { - 'comments': description, 'tags': category, 'language': language, 'publisher': publisher - } - - keep_only_tags = [ - dict(name='h2', attrs={'class': 'contentheading clearfix'}), dict( - name='div', attrs={'class': 'article-content'}) - - ] - - remove_tags = [ - dict(name='div', attrs={'class': ['phocagallery']}) - ] - - feeds = [ - (u'Feeds', u'http://www.natgeo.ro/index.php?format=feed&type=rss') - ] - - def preprocess_html(self, soup): - return self.adeify_images(soup) diff --git a/recipes/nationalreviewonline.recipe b/recipes/nationalreviewonline.recipe deleted file mode 100644 index 38ad5e3cf3..0000000000 --- a/recipes/nationalreviewonline.recipe +++ /dev/null @@ -1,49 +0,0 @@ -__license__ = 'GPL v3' -__copyright__ = '2010, Walt Anthony ' -''' -www.nationalreview.com -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class NRO(BasicNewsRecipe): - title = u'National Review Online' - __author__ = 'Walt Anthony' - description = "National Review is America's most widely read and influential magazine and web site for Republican/conservative news, commentary, and opinion." # noqa - publisher = 'National Review, Inc.' - category = 'news, politics, USA' - oldest_article = 3 - max_articles_per_feed = 100 - summary_length = 150 - language = 'en' - encoding = 'utf-8' - use_embedded_content = True - remove_javascript = True - - conversion_options = { - 'comment': description, 'tags': category, 'publisher': publisher, 'language': language - } - - remove_tags = [ - dict(name=['embed', 'object', 'iframe']), - - ] - - feeds = [ - - (u'National Review', u'http://www.nationalreview.com/articles/feed'), - (u'The Corner', u'http://www.nationalreview.com/corner/feed'), - (u'The Agenda', u'http://www.nationalreview.com/agenda/feed'), - (u'Bench Memos', u'http://www.nationalreview.com/bench-memos/feed'), - (u'Campaign Spot', u'http://www.nationalreview.com/campaign-spot/feed'), - (u'Battle 10', u'http://www.nationalreview.com/battle10/feed'), - (u'Critical Care', u'http://www.nationalreview.com/critical-condition/feed'), - (u"Kudlow's Money Politic$", - u'http://www.nationalreview.com/kudlows-money-politics/feed'), - (u'Media Blog', u'http://www.nationalreview.com/media-blog/feed'), - (u'Exchequer', u'http://www.nationalreview.com/exchequer/feed'), - (u'Phi Beta Cons', u'http://www.nationalreview.com/phi-beta-cons/feed'), - (u'Planet Gore', u'http://www.nationalreview.com/planet-gore/feed') - - ]