From 3943d95dcd89129406d9cb02ead97113f17c6f46 Mon Sep 17 00:00:00 2001 From: unkn0w7n <51942695+unkn0w7n@users.noreply.github.com> Date: Sat, 7 Dec 2024 22:53:21 +0530 Subject: [PATCH] remove dead recipes These recipes are based on RSS feeds that no longer work. --- recipes/houston_chronicle.recipe | 246 ----------------------- recipes/icons/houston_chronicle.png | Bin 170 -> 0 bytes recipes/icons/poetrymagazine.png | Bin 341 -> 0 bytes recipes/icons/ultimahora.png | Bin 504 -> 0 bytes recipes/icons/unica.png | Bin 289 -> 0 bytes recipes/icons/united_daily.png | Bin 184 -> 0 bytes recipes/icons/unperiodico.png | Bin 1207 -> 0 bytes recipes/icons/valbybladet_dk.png | Bin 262 -> 0 bytes recipes/icons/vanloesebladet_dk.png | Bin 262 -> 0 bytes recipes/icons/vardelokalavisen_dk.png | Bin 801 -> 0 bytes recipes/icons/veintitres.png | Bin 98 -> 0 bytes recipes/icons/vejlelokalavisen_dk.png | Bin 801 -> 0 bytes recipes/icons/vesterbrobladet_dk.png | Bin 262 -> 0 bytes recipes/icons/vfr_magazine.png | Bin 504 -> 0 bytes recipes/icons/vice.png | Bin 647 -> 0 bytes recipes/icons/vice_magazine.png | Bin 266 -> 0 bytes recipes/icons/vice_magazine_de.png | Bin 266 -> 0 bytes recipes/icons/vijesti.png | Bin 267 -> 0 bytes recipes/icons/virtualshackles.png | Bin 1033 -> 0 bytes recipes/icons/viva.png | Bin 667 -> 0 bytes recipes/icons/vnexpress.png | Bin 911 -> 0 bytes recipes/icons/voetbal_belgie.png | Bin 1941 -> 0 bytes recipes/icons/voice_of_america.png | Bin 78 -> 0 bytes recipes/icons/vrijnederland.png | Bin 3571 -> 0 bytes recipes/icons/wallstreetro.png | Bin 680 -> 0 bytes recipes/icons/wapo_cartoons.png | Bin 147 -> 0 bytes recipes/icons/wikinews_en.png | Bin 810 -> 0 bytes recipes/icons/winsupersite.png | Bin 446 -> 0 bytes recipes/icons/wolne_media.png | Bin 314 -> 0 bytes recipes/icons/workers_world.png | Bin 867 -> 0 bytes recipes/icons/wvhooligan.png | Bin 718 -> 0 bytes recipes/icons/yakima_herald.png | Bin 2477 -> 0 bytes recipes/icons/yazihane.png | Bin 1268 -> 0 bytes recipes/icons/yementimes.png | Bin 652 -> 0 bytes recipes/icons/yomiuri.png | Bin 236 -> 0 bytes recipes/icons/zaman.png | Bin 433 -> 0 bytes recipes/icons/zaufana_trzecia_strona.png | Bin 224 -> 0 bytes recipes/icons/zaxid_net.png | Bin 111 -> 0 bytes recipes/icons/zdnet.png | Bin 239 -> 0 bytes recipes/icons/zerocalcare.png | Bin 846 -> 0 bytes recipes/icons/zita_be.png | Bin 994 -> 0 bytes recipes/icons/zougla.png | Bin 749 -> 0 bytes recipes/poetrymagazine.recipe | 135 ------------- recipes/ultimahora.recipe | 52 ----- recipes/unica.recipe | 51 ----- recipes/united_daily.recipe | 86 -------- recipes/unperiodico.recipe | 22 -- recipes/utrinski.recipe | 83 -------- recipes/valbybladet_dk.recipe | 28 --- recipes/vanloesebladet_dk.recipe | 28 --- recipes/vardelokalavisen_dk.recipe | 32 --- recipes/veintitres.recipe | 83 -------- recipes/vejlelokalavisen_dk.recipe | 32 --- recipes/vesterbrobladet_dk.recipe | 28 --- recipes/vfr_magazine.recipe | 18 -- recipes/vice.recipe | 59 ------ recipes/vice_magazine.recipe | 42 ---- recipes/vice_magazine_de.recipe | 42 ---- recipes/vijesti.recipe | 48 ----- recipes/virtualshackles.recipe | 31 --- recipes/viva.recipe | 68 ------- recipes/vnexpress.recipe | 40 ---- recipes/voetbal_belgie.recipe | 26 --- recipes/voice_of_america.recipe | 25 --- recipes/vrijnederland.recipe | 86 -------- recipes/waco_tribune.recipe | 26 --- recipes/wallstreetro.recipe | 50 ----- recipes/wapo_cartoons.recipe | 149 -------------- recipes/watchingamerica.recipe | 102 ---------- recipes/what_if.recipe | 28 --- recipes/wichita_eagle.recipe | 30 --- recipes/wikinews_en.recipe | 71 ------- recipes/winnipeg_sun.recipe | 36 ---- recipes/winsupersite.recipe | 31 --- recipes/wired_it.recipe | 60 ------ recipes/wolne_media.recipe | 51 ----- recipes/workers_world.recipe | 26 --- recipes/works_in_progress.recipe | 38 ---- recipes/wow.recipe | 18 -- recipes/wvhooligan.recipe | 61 ------ recipes/xpatloop.recipe | 34 ---- recipes/yagmur_dergisi.recipe | 32 --- recipes/yakima_herald.recipe | 22 -- recipes/yazihane.recipe | 22 -- recipes/yementimes.recipe | 39 ---- recipes/yeni_umit_dergisi.recipe | 31 --- recipes/yomiuri.recipe | 59 ------ recipes/zaman.recipe | 70 ------- recipes/zaufana_trzecia_strona.recipe | 21 -- recipes/zaxid_net.recipe | 57 ------ recipes/zdnet.recipe | 40 ---- recipes/zerocalcare.recipe | 20 -- recipes/zita_be.recipe | 36 ---- recipes/zougla.recipe | 12 -- 94 files changed, 2663 deletions(-) delete mode 100644 recipes/houston_chronicle.recipe delete mode 100644 recipes/icons/houston_chronicle.png delete mode 100644 recipes/icons/poetrymagazine.png delete mode 100644 recipes/icons/ultimahora.png delete mode 100644 recipes/icons/unica.png delete mode 100644 recipes/icons/united_daily.png delete mode 100644 recipes/icons/unperiodico.png delete mode 100644 recipes/icons/valbybladet_dk.png delete mode 100644 recipes/icons/vanloesebladet_dk.png delete mode 100644 recipes/icons/vardelokalavisen_dk.png delete mode 100644 recipes/icons/veintitres.png delete mode 100644 recipes/icons/vejlelokalavisen_dk.png delete mode 100644 recipes/icons/vesterbrobladet_dk.png delete mode 100644 recipes/icons/vfr_magazine.png delete mode 100644 recipes/icons/vice.png delete mode 100644 recipes/icons/vice_magazine.png delete mode 100644 recipes/icons/vice_magazine_de.png delete mode 100644 recipes/icons/vijesti.png delete mode 100644 recipes/icons/virtualshackles.png delete mode 100644 recipes/icons/viva.png delete mode 100644 recipes/icons/vnexpress.png delete mode 100644 recipes/icons/voetbal_belgie.png delete mode 100644 recipes/icons/voice_of_america.png delete mode 100644 recipes/icons/vrijnederland.png delete mode 100644 recipes/icons/wallstreetro.png delete mode 100644 recipes/icons/wapo_cartoons.png delete mode 100644 recipes/icons/wikinews_en.png delete mode 100644 recipes/icons/winsupersite.png delete mode 100644 recipes/icons/wolne_media.png delete mode 100644 recipes/icons/workers_world.png delete mode 100644 recipes/icons/wvhooligan.png delete mode 100644 recipes/icons/yakima_herald.png delete mode 100644 recipes/icons/yazihane.png delete mode 100644 recipes/icons/yementimes.png delete mode 100644 recipes/icons/yomiuri.png delete mode 100644 recipes/icons/zaman.png delete mode 100644 recipes/icons/zaufana_trzecia_strona.png delete mode 100644 recipes/icons/zaxid_net.png delete mode 100644 recipes/icons/zdnet.png delete mode 100644 recipes/icons/zerocalcare.png delete mode 100644 recipes/icons/zita_be.png delete mode 100644 recipes/icons/zougla.png delete mode 100644 recipes/poetrymagazine.recipe delete mode 100644 recipes/ultimahora.recipe delete mode 100644 recipes/unica.recipe delete mode 100644 recipes/united_daily.recipe delete mode 100644 recipes/unperiodico.recipe delete mode 100644 recipes/utrinski.recipe delete mode 100644 recipes/valbybladet_dk.recipe delete mode 100644 recipes/vanloesebladet_dk.recipe delete mode 100644 recipes/vardelokalavisen_dk.recipe delete mode 100644 recipes/veintitres.recipe delete mode 100644 recipes/vejlelokalavisen_dk.recipe delete mode 100644 recipes/vesterbrobladet_dk.recipe delete mode 100644 recipes/vfr_magazine.recipe delete mode 100644 recipes/vice.recipe delete mode 100644 recipes/vice_magazine.recipe delete mode 100644 recipes/vice_magazine_de.recipe delete mode 100644 recipes/vijesti.recipe delete mode 100644 recipes/virtualshackles.recipe delete mode 100644 recipes/viva.recipe delete mode 100644 recipes/vnexpress.recipe delete mode 100644 recipes/voetbal_belgie.recipe delete mode 100644 recipes/voice_of_america.recipe delete mode 100644 recipes/vrijnederland.recipe delete mode 100644 recipes/waco_tribune.recipe delete mode 100644 recipes/wallstreetro.recipe delete mode 100644 recipes/wapo_cartoons.recipe delete mode 100644 recipes/watchingamerica.recipe delete mode 100644 recipes/what_if.recipe delete mode 100644 recipes/wichita_eagle.recipe delete mode 100644 recipes/wikinews_en.recipe delete mode 100644 recipes/winnipeg_sun.recipe delete mode 100644 recipes/winsupersite.recipe delete mode 100644 recipes/wired_it.recipe delete mode 100644 recipes/wolne_media.recipe delete mode 100644 recipes/workers_world.recipe delete mode 100644 recipes/works_in_progress.recipe delete mode 100644 recipes/wow.recipe delete mode 100644 recipes/wvhooligan.recipe delete mode 100644 recipes/xpatloop.recipe delete mode 100644 recipes/yagmur_dergisi.recipe delete mode 100644 recipes/yakima_herald.recipe delete mode 100644 recipes/yazihane.recipe delete mode 100644 recipes/yementimes.recipe delete mode 100644 recipes/yeni_umit_dergisi.recipe delete mode 100644 recipes/yomiuri.recipe delete mode 100644 recipes/zaman.recipe delete mode 100644 recipes/zaufana_trzecia_strona.recipe delete mode 100644 recipes/zaxid_net.recipe delete mode 100644 recipes/zdnet.recipe delete mode 100644 recipes/zerocalcare.recipe delete mode 100644 recipes/zita_be.recipe delete mode 100644 recipes/zougla.recipe diff --git a/recipes/houston_chronicle.recipe b/recipes/houston_chronicle.recipe deleted file mode 100644 index 2f65c07fb4..0000000000 --- a/recipes/houston_chronicle.recipe +++ /dev/null @@ -1,246 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -from __future__ import print_function - -__license__ = 'GPL v3' -__copyright__ = '2018, Dale Furrow dkfurrow@gmail.com' -''' -chron.com -''' -import re -import sys -import time -import traceback -from collections import OrderedDict -from datetime import datetime - -from calibre.ebooks.BeautifulSoup import NavigableString -from calibre.utils.cleantext import clean_ascii_chars -from calibre.utils.date import dt_factory, local_tz, utcfromtimestamp -from calibre.web.feeds.recipes import BasicNewsRecipe - -regex_date_only = re.compile(r"""(?:January|February|March|April| - {8}May|June|July|August|September|October|November| - {8}December)\s[0-9]{1,2},\s20[01][0-9]""") -regex_time_only = re.compile(r"""[0-9]{1,2}:[0-9]{1,2} \w{2}""") -sentence_regex = re.compile(r"(\S.+?[.!?])(?=\s+|$)") -blog_regex = re.compile(r'post-\d+') - -pages = OrderedDict([('news', ('/news/houston-texas/', ['business', 'sports'])), - ('business', ('/business/', ['sports'])), - ('sports', ('/sports/', ['business']))]) - -base_url = "http://www.chron.com" - -# sports has 'core-package sports' class -xpath_general = """//div[contains(@class, 'centerpiece-tabs') or - contains(@class, 'wrapper') or - contains(@class, 'contentGroups') or - contains(@class, 'headline-list') or - contains(@class, 'core-package sports') or - contains(@class, 'news')] - //a[contains(@class, 'hdn-analytics')]""" - -excluded_titles = ["Winning numbers", "TV-radio listings"] - - -def validate_link(page, link, title): - other_category = page[1][1] - if not title or len(title.strip()) < 5: - print("{0} rejected, title too short".format(link)) - return None - parts = link.split('/') - if len(parts) > 3 and parts[3] in other_category: - print("{0} rejected, covered in other section".format(link)) - return None - for excluded_title in excluded_titles: - if title.find(excluded_title) != -1: - print("{0} rejected, excluded title".format(link)) - return None - return link, title - - -def get_article_parsed(index_to_soup, this_url): - return index_to_soup(this_url, as_tree=True) - - -def sort_subject(element_list): - # priority of subjects - subjects = ['news', 'neighborhood', 'entertainment'] - subjects.reverse() - subject_dict = OrderedDict(zip(subjects, range(len(subjects)))) - rank_dict = OrderedDict([(rank, []) for rank in range(len(subjects) + 1)]) - for element in element_list: - try: - subj = element[0].split('/')[3] - except Exception: - subj = 'unknown' - if subject_dict.get(subj) is not None: - rank_dict[subject_dict[subj] + 1].append(element) - else: - rank_dict[0].append(element) - # now return in reverse order, sorted - combined_list = [] - for rank in range(len(subjects), -1, -1): - article_list = rank_dict[rank] - article_list.sort() - combined_list.extend(article_list) - return combined_list - - -def get_links_from_section_page(index_to_soup, page): - page_doc = get_article_parsed(index_to_soup, base_url + page[1][0]) - els = page_doc.xpath(xpath_general) - element_list = [] - for el in els: - link = el.get('href').split('?')[0] - title = el.text - if title is None or len(title.strip()) < 5: - link_id = link.split('/')[-1][:-3].split('-')[:-1] - title = ' '.join(link_id) - if link[:4] != 'http': - link = base_url + link - validated_link = validate_link(page=page, link=link, title=title) - if validated_link is not None: - element_list.append(validated_link) - sorted_element_list = sort_subject(element_list) - return [page[0], sorted_element_list] - - -def get_all_links_from_sections(index_to_soup): - all_sections = [] - article_set = set() - final_dict = OrderedDict() - for item in pages.items(): - print("getting links from {0}".format(item[0])) - all_sections.append(get_links_from_section_page(index_to_soup, item)) - for section in all_sections: - section_id = section[0] - article_list = section[1] - final_dict[section_id] = [] - for article in article_list: - if article[0] not in article_set: - article_set.add(article[0]) - final_dict[section_id].append(article) - return final_dict - - -# noinspection PyAbstractClass -class HoustonChronicle(BasicNewsRecipe): - title = u'The Houston Chronicle' - description = 'News from Houston, Texas' - __author__ = 'Dale Furrow' - language = 'en' - no_stylesheets = True - remove_attributes = ['style', 'xmlns'] - remove_empty_feeds = True - timefmt = '[%a, %d %b %Y]' - timestampfmt = '%Y%m%d%H%M%S' - # ignore_duplicate_articles = {'url'} # defaults to None - extra_css = '.article_date {display: none}' - category = 'news, USA' - masthead_url = 'http://www.chron.com/apple-touch-icon-76x76.png' - keep_only_tags = [dict(name='div', attrs={'class': ['article-content', 'article-wrap']})] - remove_tags = [dict(name='div', attrs={'social-title': True}), - dict(name='div', attrs={'class': - ['control-panel', 'gallery-overlay-inner', - 'most-popular', 'asset-media mos-playlist', - 'asset_media asset-media']}), - dict(name='li', attrs={'class': ['hst-resgalleryitem taboola-frame hidden', - 'hst-resgalleryitem hidden']}), - dict(name='ul', attrs={'class': 'clearfix'})] - - # max_articles_per_feed = 5 # for use in testing - - def get_article_description_from_doc(self, soup): - description_chars_break = 140 - description_max_chars = 300 - try: - els = soup.findAll('p') - if len(els) > 0: - out_text = "" - this_ellipsis = "" - for el in els: - if el is not None: - result = [] - for descendant in el.contents: - if isinstance(descendant, NavigableString): - result.append(type(u'')(descendant).strip()) - all_text = u' '.join(result) - if len(all_text) > 1: - sentences = re.findall(sentence_regex, all_text) - if sentences is not None and len(sentences) > 0: - for sentence in sentences: - if len(out_text) < description_chars_break: - out_text += sentence + " " - else: - if len(out_text) > description_max_chars: - this_ellipsis = "..." - return out_text[:description_max_chars] + this_ellipsis - return out_text - else: - return "No Article description returned" - except Exception as ex: - self.log('Error on Article Description') - traceback.print_exc(file=sys.stdout) - print(str(ex)) - return "" - - @staticmethod - def get_published_time_from_doc(page_doc): - - def get_regular_timestamp(date_string): - try: - out_date = datetime.strptime(date_string, "%Y-%m-%dT%H:%M:%SZ") - return out_date - except ValueError: - return None - - el = page_doc.findAll( - lambda this_tag: this_tag.name == "time" and ('itemprop', 'datePublished') in this_tag.attrs) - if len(el) == 1: - return get_regular_timestamp(el[0].get('datetime')) - else: - return None - - def populate_article_metadata(self, article, soup, first): - """ - Called when each HTML page belonging to article is downloaded. - Intended to be used to get article metadata like author/summary/etc. - from the parsed HTML (soup). - - :param article: A object of class :class:`calibre.web.feeds.Article`. - If you change the summary, remember to also change the text_summary - :param soup: Parsed HTML belonging to this article - :param first: True iff the parsed HTML is the first page of the article. - """ - summary = self.get_article_description_from_doc(soup) - article_date = self.get_published_time_from_doc(soup) - if article_date is not None: - article_timestamp = float((article_date - utcfromtimestamp(0)).total_seconds()) - article.date = article_timestamp - article.utctime = dt_factory(article_date.timetuple(), assume_utc=True, as_utc=True) - article.localtime = article.utctime.astimezone(local_tz) - summary_date = article.localtime.strftime("%Y-%m-%d %H:%M") if article_date is not None else "No Date" - article.summary = "{0}: {1}".format(summary_date, summary) - article.text_summary = clean_ascii_chars(article.summary) - - def parse_index(self): - self.timefmt = ' [%a, %d %b, %Y]' - self.log('starting parse_index: ', time.strftime(self.timestampfmt)) - feeds = [] - sections = get_all_links_from_sections(self.index_to_soup) - for section_id, article_list in sections.items(): - self.log("Getting {0} section, {1:d} articles".format(section_id, len(article_list))) - articles = [] - for article_info in article_list: - self.log("Adding {0} to feed".format(article_info[0])) - articles.append({'title': article_info[1], 'url': article_info[0], - 'description': '', 'date': ""}) - self.log("Appending {0:d} articles for {1}".format(len(articles), section_id)) - feeds.append((section_id, articles)) - self.log('finished parse_index: ', time.strftime(self.timestampfmt)) - return feeds - - def preprocess_html(self, soup): - return soup diff --git a/recipes/icons/houston_chronicle.png b/recipes/icons/houston_chronicle.png deleted file mode 100644 index 2c4f5d366eba2a23b822e0a3fee66298b33dee8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 170 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!P=HT}>;M1%4;(nq(9rOofuR8? z$iOgDaE%<03ifny45?sbJ=n;2K!Jx@VbZJr;_LYsgcuySEgBd^92gvKGpQ@AX7sGg zaf&GEik`{&V#>Yht|W7XfDa;=JYpprCPp zPl)UP|NmLpIY>e(?(1xT+6792{DK(-6bu{!5(*k7EZA`1!h;VX4_2H2%B}HqaSV}= ze0q>O?63h3%Ym&r>i;w@-TS{~i|4|=$^wQN2jdsd`Z)Va)04!l9Ab;UUil#uW~>%< zcIT&_nOhzlDp2n&mktn0Ta(iu t{mqQ03F3QHkNRXq96R6lLh}C|_6^K@iyi#WCjs5f;OXk;vd$@?2>`xKdv*W- diff --git a/recipes/icons/ultimahora.png b/recipes/icons/ultimahora.png deleted file mode 100644 index 9fc6785752c31405a9404049d2f636539d7c0e7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 504 zcmVT!2M!!CP*vBM9p&a)d&$G0^Ng+O^qU2l(m>2`r=mFJgrUZg z+hqklKnyX!$J=`mkoq4P5itRX8MbcS8p6QH_}@lN_3mi{^>;^{ zBNz8?1|T2q0;mE;Q2hS+`1I0000z{vr{`~s$=i8q@pT7Kg z_vO#4FMpoB`E%{bmqS;+?7Q-17Z9EKvhB>5bwG6F%c4DRy4Jj@TkZYaSC;#|u`}FA#7hQ(r j{jpE~6-O~J1TZkfFVT`|-8VfB6aWmKu6{1-oD!McE^+9 z&LoEatAI%L{|=A;$Fl!l>HGg5i2ifz+-wL`>f`C+7*cU->bb3q2Mh$91LsQS{Vz>^ zrWJp8HB0@n2X6zJFG?$<`1>$;dj4Qt%iO@-A$G_9-tu#sikGGNGV)cL9ea_avtX^} dYt0p_Sk4UEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10f+@+{-G$+Qd;gjJKptm- zM`SSr1Gf+eGhVt|_XjA*UgGKN%Kn^9SVUJwwYJfnfq{9Ir;B5V$MM{&k;S)9h_*ds z*XAs^oRqz%Cv8&96RV&9_bZ34yyA1yPisBc<$xD zbK*b$3rZS%Jk-m2&8~XO?_W>LmH!^LnkLz)x-9PJMbl|XJztxy1^$pz__b?aS@xTR zH|g~sh4|CFdSf2j%gLUvZhzkJP$ogW_;FPF8~=N=7Ed^FHOc$C)#1+}m+YU&y$Ka_ z^U|pmI_b(a_t-VRAGNyk7&^~zY?RD$chtJkq3g0uYwiuzs^)8f|9L0O*tNl6(##!4 z+?EPQc7JJdpSx4OCsbhVQF=v(qP*J zi>!Iq7koW==*og`_w1*xdlF@A-}NU+*)dtaB6&mc`?zW*7Y?(1H%@-#(>k-oZdbw5 z@7-IYuPd>yRj`PPeC^uyrDpNWn4T-#`97)F+^qPcq*qGUPu>05QEBR_rB%!;B^+NX zOnxDncXmxl-84zd8MCV2o;s-D(etJ6*5&3ZrU36$t6sff8cIIVI{d37yh{go`)+@2m$sh!>{_b#oE-WlK}a_`oSSDpu2_y3+9q%5(;Osez7 zz5H!WajDufs-G@Bbj3Sa`|D-XV_wD=Ej!t_#%RttRdR3QY>5=5jT^5#`SSV6YO&*L zP1Wyhtt57TJG6A?9fj=^R<60C7S~bxL4UsNe1>MftR-d790~- zZ@9dj%U{-}?vSd$#XA-=oW6+ zDx~w&&T5y{_lAjQJo46U`nRmrC3loO2%{Do_8-*He$D4d&e=Qo!k7G*4De8y(c9L3IvvTDK|SlTH(}rDlln6^;7kw zQ_JhVdKNPsd7c*|ox;`Wm!^36)ZG~`j;1Y3Tj#s=-QM!$jyXTBO>I7Q%w<{djM<(p zd9F$B=4w*x(QCK<%F$zfd3}3X*W#;|Csf7QCTbsae8g5>#^(6{OvgFiREzT=iq~#+ ziX1bVs4(68$~UW-F8^wiC3%dN9=R5ly2L>IFy9%f4|e+@AUR?o3b!&kYJFhAY+FFf%@VA z0053jL_t(|+U?Rs5&|&*MA7cJ0{1^{6dzr~ubSwaUBI1w2WS9-EdfBAI!KOV)q$EP zq-`m98<)V`=Q@gIU{T|x4tg1+2D);~p#R*yz!h-CNUQ-f zfnEb{0`~$SYkmR-v;tp2E8c-XORR!mW)c`$!a0KEtWIk)?T-2eap M07*qoM6N<$g3Oz77XSbN diff --git a/recipes/icons/vanloesebladet_dk.png b/recipes/icons/vanloesebladet_dk.png deleted file mode 100644 index 6fc915ca3d02e694a22ee54cbf96f9b91c94898f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 262 zcmV+h0r~!kP)Fy9%f4|e+@AUR?o3b!&kYJFhAY+FFf%@VA z0053jL_t(|+U?Rs5&|&*MA7cJ0{1^{6dzr~ubSwaUBI1w2WS9-EdfBAI!KOV)q$EP zq-`m98<)V`=Q@gIU{T|x4tg1+2D);~p#R*yz!h-CNUQ-f zfnEb{0`~$SYkmR-v;tp2E8c-XORR!mW)c`$!a0KEtWIk)?T-2eap M07*qoM6N<$g3Oz77XSbN diff --git a/recipes/icons/vardelokalavisen_dk.png b/recipes/icons/vardelokalavisen_dk.png deleted file mode 100644 index 70464fce89f6a09dfde9717982aa2e0b0901dfd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 801 zcmV++1K#|JP)K;?EmdAg2pJ4kv>DYmLC|x#>I*FbVwbW38eN z{}}HqGXVG9bP8yv2`_}&en372$`O%T%-WXzshDy#9J8(lVwb!hIy*aA|EvQP_<9Nj z4D$y9&IRoF^y^rAp?Da`KKf-lgTZg|KuHDrPRJX$f%|GA1)~lysy=o#>$;D!& zbU2pY48&o1H(0ty;+s{P*mK1MHGmR4AKMq&4LOE`E%Ag7=d z*A=bs;SWK;?EmdAg2pJ4kv>DYmLC|x#>I*FbVwbW38eN z{}}HqGXVG9bP8yv2`_}&en372$`O%T%-WXzshDy#9J8(lVwb!hIy*aA|EvQP_<9Nj z4D$y9&IRoF^y^rAp?Da`KKf-lgTZg|KuHDrPRJX$f%|GA1)~lysy=o#>$;D!& zbU2pY48&o1H(0ty;+s{P*mK1MHGmR4AKMq&4LOE`E%Ag7=d z*A=bs;SWFy9%f4|e+@AUR?o3b!&kYJFhAY+FFf%@VA z0053jL_t(|+U?Rs5&|&*MA7cJ0{1^{6dzr~ubSwaUBI1w2WS9-EdfBAI!KOV)q$EP zq-`m98<)V`=Q@gIU{T|x4tg1+2D);~p#R*yz!h-CNUQ-f zfnEb{0`~$SYkmR-v;tp2E8c-XORR!mW)c`$!a0KEtWIk)?T-2eap M07*qoM6N<$g3Oz77XSbN diff --git a/recipes/icons/vfr_magazine.png b/recipes/icons/vfr_magazine.png deleted file mode 100644 index aa7a668a50f34be4f1ab840eea477586013ace0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 504 zcmV^ZwCS#&`4iUd-d&tC&d(%ll1ANSuEM5w*O(1XW1PaZ&jP0b0s9*CN|W0-jSpMc5YORvaGDh0 zJSHH9{s$61ZG+>G881deg-4f}HOt+6zd9l zSmD|lBi7bhzQ=Ow>TEdDLkFC0UBr%BEjBe7@u+r$73`^6QS7W)Vk`i&rCy6uJqD0_ z{Tdu=>XL)1$e($;-wNW~v5JR{8eDJF;YPb27dx!DK%Hu{{D3wvSDQ^Z-)6w;K{JTo zkQUE+w0P2I`Xl<&eu+KqHqh0h0}`k82plxPW61nlwE4Gjw_!69rs;sP*%ibM+T=o2 uqA7V7lU}_Ujk7$eRyb9vS9x^nd3*uxFIx_xKbckl0000Uu_tE;Q5tgNoC zuCueVx3;#ox3{>rx4F5wySlo^#>U9U$H>UY&d$!y&(G7+($&<|+S=ON+uPjS+~VTm z=H=z+=;-O`>FVn0?Ck9B?(XmJ@ALEX^z-xg_V)St`TF|$`}_O-{r&#^{r>*`|NsAe zZ#V-0009R{L_t(|+TF^7nJhpQMB#c^+qP|+y|#DElYatZb%!wZ;i7((O)4&p>6WBj zW5zUN%!;HQW0niz8CKKK4};nQU$ry>X9chi=aO0>)|>{6I$#>!Bn`u-GT_DmZ4jxG zHsK-*B26~<=Y?+R8WyvFMH}c2W~DFa$$=LKY`}pUql9WQz(c&l1_SV@UU*Ul>_^$L zL4BOS|0USVf`xm2CM=*2;;lz8nFDihYJ+1KeudT?Xb2Ou!947Q@&3&LU4acc;Tvw1 z2jecN3IePbKyAPQdI0Dz0G+sC8;I5y!GH@!fp--_<*x%;;&503wC8|7Q!_K|nXPYa htxHnd+S-uHCP^(_XIcOEnwJ0o002ovPDHLkV1f)iC}02p diff --git a/recipes/icons/vice_magazine.png b/recipes/icons/vice_magazine.png deleted file mode 100644 index 53a6516b27ce7630d3bd5b70475d3ea8b69ad49a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 266 zcmeAS@N?(olHy`uVBq!ia0vp^3Lwk@BpAX3RW*RrMNb#U5R2Zemo9R)81OJ$D4A~6 z?i>*w;9kJAyOH}!y{yCE>-m@SWgpeeUfi+#d8h6PRxjqtrHw2P_z&Kw+IEMxtW-zV zNZmqQX1~>qt8dwkEqS?V%2N|fR)wcF#e5DaJd5OKJYS?B#1yEh*z@vt;)Vq}k8kjo z$SMgoux5H4*(o4)qrJ|-OX>DGwnG74$9i7w()r9B=yJt`Au2pnVqaXYbzk;m&qwSz zn&%}~XKU)Z^DrG-#u=Dx|G{=^ccj(9r*F;|GJh-m?K*$ye%ABV6*Bo+=7-iU5Im^| O@}#G$pUXO@geCwkd}hi3 diff --git a/recipes/icons/vice_magazine_de.png b/recipes/icons/vice_magazine_de.png deleted file mode 100644 index 53a6516b27ce7630d3bd5b70475d3ea8b69ad49a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 266 zcmeAS@N?(olHy`uVBq!ia0vp^3Lwk@BpAX3RW*RrMNb#U5R2Zemo9R)81OJ$D4A~6 z?i>*w;9kJAyOH}!y{yCE>-m@SWgpeeUfi+#d8h6PRxjqtrHw2P_z&Kw+IEMxtW-zV zNZmqQX1~>qt8dwkEqS?V%2N|fR)wcF#e5DaJd5OKJYS?B#1yEh*z@vt;)Vq}k8kjo z$SMgoux5H4*(o4)qrJ|-OX>DGwnG74$9i7w()r9B=yJt`Au2pnVqaXYbzk;m&qwSz zn&%}~XKU)Z^DrG-#u=Dx|G{=^ccj(9r*F;|GJh-m?K*$ye%ABV6*Bo+=7-iU5Im^| O@}#G$pUXO@geCwkd}hi3 diff --git a/recipes/icons/vijesti.png b/recipes/icons/vijesti.png deleted file mode 100644 index be3da204135644b3d5e962be2c4abf45d453e7d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dy#sNMdu0Z<3m!A(`e!h73?V(FA zHXnbqWY3)`8?Uu4yHGy+bozv&5v}_@t9DxDZ_!F#CmpeZ$9K_{3dt6rHpY@5zhDN3 zXE)M-oHkDv$B>F!SI@BK9S#s+xM;Z9_Pc%V*3=&tR2JDBY?sx2uXn#8@!9rc1xzw4 zEoD~OI(oj?XJ$QV(Jn!ilNT5!tHiGIj#0@Bw_Q-GzS8`_D~DN(Q-TbxG;I~oX}j0k zb8N%y$;BB8*#>8xNY08npnPyyoJh$lm(E+)ndG?B_`9mYPi>o){)I_HoAd0Ps|jI1 P7cqFc`njxgN@xNAUC?j{ diff --git a/recipes/icons/virtualshackles.png b/recipes/icons/virtualshackles.png deleted file mode 100644 index b8cee80363e4c632ddcd7f88a8a020747b1cbdba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1033 zcmV+k1or!hP)*srrSF%sw@20OT*8gO!XFOg_BB z`;Pf!)o8MPh-Z@Nm=yFB2ol2so%Jqc+eAk%)lo*;A+up{~x75x6jJBx(bl zClLXPi;fnmBHGsnNBi~swTblZhKmzMi?gqDTYdy6`Y)d$J|q|gdAT4wjSTQ$*&=cA z8?&du@Xbp^c(`-qit_VeDfJcmy0mM!z>nOTJEKg%*bw?Jo}wT(2Q?Aq?#hqAkv`qw zZ*7J8z>5I2x<07ixyg^f*W-s#S9G5~=4TTA$eo3AV6UQt>L@KKfwi18&Wsq$+bZCM zJtN@ZoT>0O)JJYc1_+vrW^Z5O$->!S|Dv_d{^oTM*uzeK(zX#kw&$j}ARmQUS>n&C zQ%55}?i&o&FQf0Z%KbJX?5Ig#CoBG{UD*YnIyHsTgrTrHz8~fXcOo}20Yp|*B#4rt zA`m7!H{f&U=CzV|*j9vX)d}2XmYi1S=b^SFd%8nmRKF^Vo9*8Q#~T;%de)@M1x~c& z7MJSV5&7w9_(6VJDu`HHE12%t44vikpfPt6G#5;R!G`51{=R$qOMQXUt!psavYPJ0 z&Y6sy_*jmtv#K&zUIMW;o1ebJh+9A9U6;QOJ&ew;MpPl$^7H`iac^ykF;)UipW0>LVZusXJ1 z{Mqm82ULfvhFXc>S=&ZAoU!lI0shjTp*CxLr3Fd~3qXA9-L8tswjF^Aan>M6$?mtlYTEKr3&n6^5!7R}Hifz>RKR17w* zKv8Zkekab}8lO8iqvO*^;4cvvu?wC00000NkvXXu0mjf D2c7r- diff --git a/recipes/icons/viva.png b/recipes/icons/viva.png deleted file mode 100644 index 5456e393eba82094778cac38432d2e18579299f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 667 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 ba611Rc=CR2Yv9{L00000NkvXXu0mjfPQ1y+ diff --git a/recipes/icons/voice_of_america.png b/recipes/icons/voice_of_america.png deleted file mode 100644 index 18e35f03950af90af78fc2fa8862593e4026086e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`qMj~}Ar-fhfA}j(n6dRp8Dt$; a!N?F>@kg)H_&p;~0fVQjpUXO@geCxdR})+S diff --git a/recipes/icons/vrijnederland.png b/recipes/icons/vrijnederland.png deleted file mode 100644 index 6fe2f9649f07a016e16baa80beb21837533fcef7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3571 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 diff --git a/recipes/icons/wallstreetro.png b/recipes/icons/wallstreetro.png deleted file mode 100644 index 8af51dcfd9f838c1d83fccb79b3e04d8e40d28b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 680 zcmV;Z0$2TsP)$#(pBv+6W#DA* z@vg#)nT7F7!=+-5Ac5C&iw`HJecu<82zmM3kb5N4l0JNXs83>1XQ01Z!N2~#(E%7} z`0CBl#`ezo=B~g1MjdBsd+*XnzX(J`a@mZV&A$J%BBaoMSN5YYH zYS7~qKu3VExhc_EbU%DvSFHoGw7fn%cw%g*cXH-qy&3@U{exsvB9&|=Ob7@gUdOSu zt=($19%?W-{b8`r8$Equ>*t@0O5ZblN>(cvX4pt O0000Q|LM*|=FQQTof8M{h#3f4;dA^zZG$rJScO?9^E(VK_}p?8dQEmnPka$XqHa wy?V_OmY9B3wi~}H8lsLfhrE8gJpJzv=Fgowd-lgy7=vu{boFyt=akR{0Lhj+nE(I) diff --git a/recipes/icons/wikinews_en.png b/recipes/icons/wikinews_en.png deleted file mode 100644 index 5251d897d09069afb8e8f39e6c426f46a8c42d14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 810 zcmV+_1J(SAP);7XO@O_$+Bm*Ya0;zOO~H=pS?o#!-+ z-#3fiRH5foqUTzlw-q2ytw=w_$qZmH;QspN60=xwm-ZLsTfyY73t?s~uQ zio5NOyzP*`?vuXpn85Lw!tI{H=b^;up~&u?#_*ZS@14rK z@W-x=KR#<`_i^p3 z|J&;O-s}6`>iXa7`rz#Q-|YM0?fc>G{pIlg=J5aK@c!rV{^#-k+UWV%=l0m<_t)n3 z+vfA!=JVX<^wZ<^(&F{d;r7nr_RZt=%;NXbsYSrS*Ynvrs?bo%m)Af00DGTPE!Ct=GbNc008nyL_t(|+G7BNz6cNZh&~1w z=#5LSN}E=d5#I~phbNR*mh{gktxWO>0m~-@luYgD>h73P=otl46I+!RR@2_t&|Vi> zWakewFSTOAbbYJp#LDni0b+!1~K%d_&OBmC@kP-7qOXG zl>&5bOm?QDI5RJwl($oUP7Kf;J<)-gk&=wUniKN_qkF+lkIu@KVd7EE&590(dM+l# oM8Y&VB?cr9^?s0xYY@cy0CtH-O>J6VV*mgE07*qoM6N<$f;6WG#sB~S diff --git a/recipes/icons/winsupersite.png b/recipes/icons/winsupersite.png deleted file mode 100644 index d4c5442770bd395dcfa63f451871e0e1ca582450..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 446 zcmV;v0YUzWP)uPz z$XSrdK7PPllFD9_%3qYrV3f;XmCIt5%VUkF?s7w%e4q+(LlCJ$=8KyWOC`;HAUiuF2%M(CE3)=)2MAywd5v z)at<0>cG|N!PV-+*XzXB>&4jY$=mJ9+wDbz!qwyP*W~ip5p006Oj^;z4tZQI&^moCu+{=hECgv&MRvXN`$tKi!<>4@%|lx^IXY7}VO z7JIXp5WVZw%Sr(SHLVS&jvbY^K6U|t$HbP=WpF diff --git a/recipes/icons/wolne_media.png b/recipes/icons/wolne_media.png deleted file mode 100644 index ecc45d4a866dade26d13c93ced7f280cb9adc014..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 314 zcmV-A0mc4_P)a* zXBm&%m`pl29uMTVp3Qm~44R0dI!2==L2YBxX$P!TaV*mBS4^-5t+(V{n}QaCKp_mP z=ynxB&6v$$tu^3I!Aj?x(~nWJZIzDVAM;WF`fmQCy`msnZyH!XjEroX@Q3m_Sm4ZRUxZ2$lO M07*qoM6N<$f*Pofgzt-w>w<>wgNN;Xf$n~S>u+}G zbb0A>c1%Q7ZgcBrZRcid>St`~WoYA1ROeS*P>CgC6^;UFgAASRpD zqWk~=0C{v$PE!B`1_%lZ4Gs?y6BZjB9v>efBO@p&EiNxKIYCEAN={HzRa#$RVr6D$ zYiw<9aBy*UdV79>gocWbl9ZI5qo${*sj927v9!0jyu7}?!N$nR%+1fw&(YJ<)YaG7 z+S}dU-{Ruq+bLG@bmNY^!E4q`~3ct9C9@P00ApWL_t(|+I`LAVzxmLgWg*>LP>(XU+zE$_%*PdC3>w?(x{J{WNeky5$?XXV#{{8*^&)QYv z(AGyqwpr0B1B`u}O@F4ra?{4#g$IoB!WT*DS~pm|F{V>peZ3u3-|p&AqK16~atak1 t&?=9g0W`|zH<-o{u&XKhiq=JoW){6U2 z?q0lf!FIg>)G7ZruT5I$Bq+tfs|H#hIJX@Wx(#&Y@>LPgoxOKB~KTIMd%Aqzi4B0RfP0b!Z z{rvj6C|c z>AVj}$XFthfGuOdAzPWKVQ!&iTGFna<=!o8q@T1Dq!K`=lt`EmMyFfH#dK0+X|ZA5 z8o@GGMZzQz)`Iu` z-|UC-1EtlLP34a-AD=#cQ;xGg3zsA&*GZgS&HpKrl&Xm81mj8$$PSy7lrh427fAX*2z^Xu zMzI%=AfP8i0LFsHzyTq~qC;RD7z6-x@r#820nhzC=6Jw4IRF3v07*qoM6N<$f_XMr AtN;K2 diff --git a/recipes/icons/yakima_herald.png b/recipes/icons/yakima_herald.png deleted file mode 100644 index 7e8de676aa63e7e5a2e67fb24b132f82fbbc13c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2477 zcmV;e2~zfnP)JT1eK~45mkE?ZfGm@rm9*RmI{#)2}Cat6(thT&?*-}DaEA3_Sk7W z&e*fhIdk@NzU6)2r;b(n`;mwM7>-5<-R^WU69Ng|MI<7GcL@fxVWH4qfw{Vx8A!K{t><2A(MUXkLz=-?4^Is zzx!{4=l*cvkq5J{e9asj?9DZ6pZ-*7I?KNDH9hF>uN-TA>i6{JtNx{Lq$|t*{xjwE z4gJx_?86UBQ5eEuuOCGb4~8Q{Y>zBP&paKz{Y`i7q58@S)oRhX_wS!rYW?zu;^m{| zk3T;B_BZX*zt)&8X!rPd}AjyK2fM z#cXXf9F187CbAqPI(?cSe5XStJ!S z>$SPIo6VHgUMT?T4q|ew1khR;V*-0pghFYpIDmqLO2wGiC>10Cq^(i7O&Achx*DB( z%>DFYN9%=?r>xdwv^KiXIsm2=m6LKHxX1#~hK*6e0I?`Um5Lhlcfa~YeDO=wY9*vI z%^HBd4R?rysL`nW!S5VA`}>m@U%dPLqvD(~N*N8M3^4w|e{5Y^_XK+LO$Ib8tCc5W ztyQm&;b`xbSNebQ+0z#;SQ2jyKmfEc26ssC%IM1Z4|afsm6bS-i!>u*R$6J}fcp8f zOJ`OC(>QWNKpUe?L=<4-u)qJ#m%g06{*(87^~<%nrpt0;Ebd_S3tAfmM70_L#ux^O z9ES~!E56tPU>c=lZnxUHX=(=oNSLx;Gqj1k%MUzo`p-VwbYbi7|1JoOG3pms{Xb>` zhys8-8v!8FF5iLN(y~K9@Q`$XqATe{fKcp_+=TxhxV$*ZqrQV2ZmU;sXZJl)o^9{lxC%oHFlQrIhYz7N)jAMm?Z4WP9Z zvH4`CY@z_ad9lb(=y+ZRJDjh(%%{pLegm z{e>5bn|>_w(lANqpYm{*Gk0%%{yDih-=A-nntO7vb?fD>^f4O0*8Jq(9=!VR`=9wt z*3HxRe5`%)z5?657ruUoBEJ9rsM;nnhXi2_Sw7 zzbpP`nD%_W$hA|hx1PTJFVQ_u%B<)5H&k3@w!tK>vqs4gE;VKIhunUjI&wC<{F1KR z6`gvLZHcf?VIRz-+JaV~3Z>IE5(bxmM97L86uWO^yKB1jUe!2O99#`1=3+7)^`?h= zb)M(ixbef&@^+!t5!}x)MeRhvJ8Dvtlrn zJP}>?X6(K*6vGRE-f9A#sj5$e^pnPdYe~OnzD^t{~e@XgTqO>_DX&0>$-N7O7o-|1t={Yb&bVk0aafZqFwB&32<)Z2$p6fCA|>EB3FvS`OQ+qY%80=UXREYc|ej>9E`D z%5->h_1-8dslp-4FwGNX@2k`n=x0BC*_yyKlj>4y`DiUEl%jN2FzY0#krY9SAcf1e zl<`Vw5)T3~;B$lku&{pXZFj7#lOz*3Vgdsqo30!?pW3)? ztE+4hMOnxv${(^!$730~GOL&wY3c@hRIci3or|m}h2Zm$GDRihUE!SgKpG)Yn_5Nb zc&43Kkx|Ad@St4wnjOu?K{m-Yb8o#fK7-|~BJOaMjYDT$3ML@D0t z9cEciv(JMRPN#W9qqo1+>C&yPUs}i(nm&#|AV>h<#fy+qW#J@sYCI_*c_Rr-j!1w2 zgu>URMXf)I#=}8|TSIri+Q-agf`Wz!^)A0m({0bu#8WV2jVF~Su_8vSh)F^S4uJ`P znx@1|*07);V3s#>U(G^NpuW?SPOraI8C3J1wC&V-srpe~xl7x*Q~iz0w$iAUjN_=2 z@uj`J?yNJ&(vu0QHd=^yC5fD_>$s%LRWZrPWkw}CgL<=)x0;1e7F?&Dc&YBt==%D= zUmcXjp5nas;D;X9<;A_vmCR9$dSzv0qA}$*?~ix!qJx#WA}f!zdpD60S%ya=7XbZ zE8Bh}_}mp@OK4OR3jVI%em^N4*hQ5z3+B{^C`d({oymI(v=a=LlD>1v&)?d-ksh{n r8NTV6;?I00000NkvXXu0mjfcEQ@J diff --git a/recipes/icons/yazihane.png b/recipes/icons/yazihane.png deleted file mode 100644 index 05290b90c4d3325b3e26946a2e0be112e9c690d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1268 zcmVkdg00004XF*Lt006O% z3;baP0000WV@Og>004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 zVoOIv0RM-N%)bBt00(qQO+^Rh2Nnk!G+#}ghX4Qr{7FPXR7l6&m48gsbr{D#Tbl{} z7@7i-{BT5>U!^N9Jz!|0H@u2-9Y4gFWAjQuv7kxr-0;VhXI>f0Ydb6^Kja@}(CF$! zG{|dl7Ok6b$W5>g?NW&NaoUXo#;bp^5hbw_vKicSt>^a2jg77Du;!+QlZ@8QZn|3Hk45zhX+dk@G`gojc1P zJ~f9$=x`VI=N>^u7L^lShB3uo00pG8g9ewq)@kU^?bf$gkFXCdauyQH{eM*7vm`@zbD4@~lDxH+w z26P(h`nIx$2NBFCh(}07$;*^san$wYvVl&c5NB*pumla+#1hVGbkq*DS{+& z@;%z?dBf`Z-W`}Q%PmvzNNk;3QA zLY%R!WIYa(FQwYIj7$cyg%ILu{>8F$%_qEvd7tx*(*RdWj6B0GE|v+=WJ_T=?{eB+ zOaxmQ$i9(O*tvG4CN{E{ zuTCNfF|f+=-a%JYgF7t%;B3oIVhCjcK|~Tl6mr&5&ev5pm9rY7_KH2^@DiJOg?#c@ zO*ji#%=4V^4yk7W7*V-OyY<8B>vH0ok-y+yyWxyHJ%w5{V?U zo;+SawhtoHVbOM0i_l73J#q;9KS#eJ0VYihus z_=`r1!(Qvr{_*47(H$ir93`NT9mcm<$p-X%?CQ}WO-X+aS#yhwD9rq#2>`fKVkVJ! zMDZw_&~w`Ut@%6CPk9bgldXt{QPAid4&(&C;z#YNzPH)L1Ki6z;#fxpFYqF3NZ@IT zm|-(acj2JMX)v>sB%UIUP+|xpflT&tzHxN6R`x0fHLlW6+pB$M4r8XqYqfV7yvl#Q z;>P7(<+yxQ^-tpc277?1CHpU^h5!HnC3HntbYx+4WjbSWWnpw>05UK#GA%GSEiy7x zFgH3eGCD9hD=;uRFfbPW-Rl4V03~!qSaf7zbY(hiZ)9m^c>ppnGBPbNH!U(UR4_L> eF)}(ZIV&(QIxsM2qh(hB0000{Q3F$`1tty`}_Cz_xASo_4W1j^z`%c^6~KS@bB;M?(Xa9>FMX^=;r45_V(xH z<>ut%^6u{7-QD2a-0bJ){rLFS(9rem?fmrg&&0&e!^6$M!OFe8$-BJBxViP`=f$(L z?%CSGtE~CrCe!-qN2Q@q3X=dx|^N4o1D9woVk~oxRR8&kCF4t&9{qhALM^!54r`~3bh_(+NX0078IL_t(|+U?5YLIiOD0P)GTZF6&*ZM)|EUn9Hj zz8+`y?;pugQ}1hyQ1QCy?EO(abzAD`SS93jZTc{^;O*7b)xF+7FLzEr@rmwc05I$# z;a)DVp=&_F!82e`?E%O?z9=J{=L@j>0y1}WKMNQ)fPv=kprae0RULtn^P_x#Pw>^c zo)j`;9}z(9jZT(dZ)ZdT%<1KdEkp!GXX+}E0i$X|G|;YA#W|>1QiD?7%Wgl^{kAMV ms-AsqI)}H0-p>7``|JsBOg`6o#8{C40000Eakt5qI>IV%`x40hf#S7xT^DMvb;YrrBk8$2zte%)Vr`6El z{-37f#`ztKGN-+6yKwDta^u#|!W(upzO=emP{6ow`Og*7Dsg7qv$imEI|*^Kc_cZi k-u-nN_V9`9!Ux006LJt)78&qol`;+0PLz^_y7O^ diff --git a/recipes/icons/zaman.png b/recipes/icons/zaman.png deleted file mode 100644 index 11a741f2fadeff022f4174e765955bb6a5fb16e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 433 zcmV;i0Z#sjP)=y*oAU7X zud&h_Jd*YF_x=3*DMy%yk-jHNnmA6JEKHl_hmp1nIJxr^z-=C z&*I9+-WNBHW^}RH+UhS*oiR?F?(g<7Ntje(rVuWPY~L~H00022Nklp$S7-gUKK*kvtkcP1e=T=cyWC@s2I((Tkjne7 b=~VJRXzLManLuHP00000NkvXXu0mjf1y<9Q diff --git a/recipes/icons/zaufana_trzecia_strona.png b/recipes/icons/zaufana_trzecia_strona.png deleted file mode 100644 index dda45170e777d3834e4735b57acff4bad2597637..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`%ROBjLn>~)?PFwPaujKME>hZm zlljWhN$Y~dBTAZC0u)X-F}Pf4*syxm_bTgOk(=uyIbJ+(e)#*@PXF%PE4P`fX0l+K z%D}`Tv_h=T+$7-a-wh5l{o&K6PtTq``~UdL z|0^H_DhO z(2505z?<*}JOv9Rgg^*Ui7p~h6;*{mS}M1Mq$G}GyGeW;`*_Zo8CDfy!}koI=zi-@ zT{Mb2o%p;Oe|jU4V?z?iAO+R~-)|OpE;I4D_udZ&t=N0-y-TdsGcTK8L|{A!ufsOC z_uB`0IIUl*tSoy8T1+2RV)wLebcsF}|-&+O_5;PLR!v3D3o>|0UNLR0{=Wov*Y!oC4t$^^n*%g$p)JS0| zy;_(WG#4l90kw386-cCl1$gt!FaXZ6C?7Jvk# z#PamkDdmYpByOA_W#>U!&i2|2nc6Pl5fY+~<@l=yhY`{_rzIzMj>%oFzLOwG6*DByhCKNu z&V5u%v_~ttw~okXu9iWOAxqLv@woeiYFtmWKpI*PFG*$hj_>{4!lJnR>mDaedVvG9 z=CoBz&rJ4r!ol`}KoK49@3e`GK>)hlJj9HT&dj5wQXfqzYnt9Pi3u?o(5K%uiRks7 zQe9s~k*{2IIzNHo{BktukfH-pO08JGxq@JJyFrkaCo3||B?bU_qi0Nsz2XTzU?wYw6f2l%yAN#tgq$hz&Xt>u*>WQqlL7E0 z;7*zv)GT(3)-fOoY@UmSwZik4qkz`7ZziXyygTKF{00ro*43T#@y~)dP{0IUU?FRW zzhMmvqd;CCxp&I{vhJR++x?*_1v<=y$zx@d#>VIs5nX9dTiT>(O9#5qi_-dgL|%d1 zrt)Xh-4hwdC>zb#D+cfaCXX#~dPIz40@rY5ifb9iNKT~}d)2XpjnPd0UFM0%QrW;4 zac;C`ulRz6L=-TEUzm@IO(faC7QW+6uAn(dd!n`cr_B>_E|m?8HB|w%k9k)H@;vV{ zpI;OF%uE*ZJM(#nft;SOCko{E2~C*quILhEqGvo2ISc@b7|1hxow5hku!U_@)e633 z5(Ok*9Zy6v2aAkBQC!EB3C8dw-?5NTKk*7f>B3%#K43eq6vr8lJ%lcW6aHqe`sxtRNy!y-b>;~O4j3YV}i2T;ad@b?-hWC%|)i`w-a zcXAfHQ^X#WQSlcVNW2epViX_pGb+C4Nv`G+P9)1-Y4W=d%&ZhZJEpUUxv032Vmh!B zyV5dYUC^E`^rSS8J7MCppfy*qg=MJtio3X-$y}M>Y9=z3Gw7Mevmo(l*p7#&Ut8J6 zdNw84#v&FlovwL24HMS`-RQ%kyv0&xGnbkC%&!S%@g+YnmX3L>2NG9A*;*Y>2B$u^drGdL>_7@vyX8a#pG(;Q#0Jgds;v?Y{ Q>i_@%07*qoM6N<$f+rc_9{>OV diff --git a/recipes/icons/zougla.png b/recipes/icons/zougla.png deleted file mode 100644 index 95461dd86501a59276eb39df575c7b0854da11da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 749 zcmV+%SSv||7O0X9iQK~#9!h127@^e_~L;ZEmWLEVn=+2*!w+qQN5+wPU=Qzp6pE=`N; zC5merk4TI0lEpOr?sxrPL$zs|zVDlf|3~~b{Q(r@WkgbffjTBaU~PqN%D@HTa|rNu zqFqP=Hl!h)w_&i~JU%i!G}zV4fb2kH2we6l2r6oMfdTS64}rT*m|!efrv@!#!Fa=! z;0H)j4OfEA1<8bas0L*QK)<*Wyp#m$ey;{?MvmBPt^_}`kSOO$u)Vk^*wU67Q~^x< z;Y#qzk_Kz#N)U7k7|shd_$@p_C0Bx-c|nvMQ-bAsxE>{rKjz=%KNO1xA@Bv(Dgllq zgdjN1*XN)qV=;iG0P@I?n0pTX5>XCFT|NwFlJ!3aJ>N!WrtK+v(zfk%dbaQM8BnH2 fj~oz_00000NkvXXu0mjf36VNs diff --git a/recipes/poetrymagazine.recipe b/recipes/poetrymagazine.recipe deleted file mode 100644 index 0aeae8c4f3..0000000000 --- a/recipes/poetrymagazine.recipe +++ /dev/null @@ -1,135 +0,0 @@ -import re -from collections import OrderedDict -from urllib.parse import urlparse - -from calibre.web.feeds.news import BasicNewsRecipe - -_issue_url = "" - -COMMA_SEP_RE = re.compile(r"\s*,\s*") -SPACE_SEP_RE = re.compile(r"\s+") -NON_NUMERIC_RE = re.compile(r"[^\d]+") - - -class Poetry(BasicNewsRecipe): - title = "Poetry Magazine" - __author__ = "ping" - description = ( - "Founded in Chicago by Harriet Monroe in 1912, Poetry is the oldest monthly " - "devoted to verse in the English-speaking world. https://www.poetryfoundation.org/poetrymagazine" - ) - publication_type = "magazine" - language = "en" - encoding = "utf-8" - remove_javascript = True - no_stylesheets = True - auto_cleanup = False - ignore_duplicate_articles = {"url"} - compress_news_images = False - - remove_attributes = ["style", "font"] - keep_only_tags = [dict(name="article")] - - remove_tags = [ - dict(name="button"), - dict( - attrs={ - "class": [ - "c-socialBlocks", - "c-index", - "o-stereo", - "u-hideAboveSmall", - "c-slideTrigger", - "js-slideshow", - ] - } - ), - ] - - extra_css = """ - h1 { font-size: 1.8rem; margin-bottom: 0.5rem; } - .o-titleBar-summary { font-size: 1.2rem; font-style: italic; margin-bottom: 1rem; } - div.o-titleBar-meta, div.c-feature-sub { font-weight: bold; color: #444; margin-bottom: 1.5rem; } - div.pcms_media img, div.o-mediaEnclosure img { max-width: 100%; height: auto; } - div.o-mediaEnclosure .o-mediaEnclosure-metadata { font-size: 0.8rem; margin-top: 0.2rem; } - div.c-feature-bd { margin-bottom: 2rem; } - div.c-auxContent { color: #222; font-size: 0.85rem; margin-top: 2rem; } - """ - - def extract_from_img_srcset(self, srcset: str, max_width=0): - sources = [s.strip() for s in COMMA_SEP_RE.split(srcset) if s.strip()] - if len(sources) == 1: - # just a regular img url probably - return sources[0] - parsed_sources = [] - for src in sources: - src_n_width = [s.strip() for s in SPACE_SEP_RE.split(src) if s.strip()] - if len(src_n_width) != 2: - raise ValueError(f"Not a valid srcset: {srcset}") - parsed_sources.append( - ( - src_n_width[0].strip(), - int(NON_NUMERIC_RE.sub("", src_n_width[1].strip())), - ) - ) - parsed_sources = list(set(parsed_sources)) - parsed_sources = sorted(parsed_sources, key=lambda x: x[1], reverse=True) - if not max_width: - return parsed_sources[0][0] - for img, width in parsed_sources: - if width <= max_width: - return img - return parsed_sources[-1][0] - - def preprocess_html(self, soup): - for img in soup.select("div.o-mediaEnclosure img"): - if not img.get("srcset"): - continue - img["src"] = self.extract_from_img_srcset(img["srcset"], max_width=1000) - return soup - - def parse_index(self): - if _issue_url: - soup = self.index_to_soup(_issue_url) - else: - soup = self.index_to_soup("https://www.poetryfoundation.org/poetrymagazine") - current_issue = soup.select("div.c-cover-media a") - if not current_issue: - self.abort_recipe_processing("Unable to find latest issue") - current_issue = current_issue[0] - soup = self.index_to_soup(current_issue["href"]) - - issue_edition = self.tag_to_string(soup.find("h1")) - self.timefmt = f" [{issue_edition}]" - cover_image = soup.select("div.c-issueBillboard-cover-media img")[0] - parsed_cover_url = urlparse( - cover_image["srcset"].split(",")[-1].strip().split(" ")[0] - ) - self.cover_url = f"{parsed_cover_url.scheme}://{parsed_cover_url.netloc}{parsed_cover_url.path}" - - sectioned_feeds = OrderedDict() - - tabs = soup.find_all("div", attrs={"class": "c-tier_tabbed"}) - for tab in tabs: - tab_title = tab.find("div", attrs={"class": "c-tier-tab"}) - tab_content = tab.find("div", attrs={"class": "c-tier-content"}) - if not (tab_title and tab_content): - continue - tab_title = self.tag_to_string(tab_title) - sectioned_feeds[tab_title] = [] - for li in tab_content.select("ul.o-blocks > li"): - author = self.tag_to_string( - li.find("span", attrs={"class": "c-txt_attribution"}) - ) - for link in li.find_all("a", attrs={"class": "c-txt_abstract"}): - self.log("Found article:", self.tag_to_string(link)) - sectioned_feeds[tab_title].append( - { - "title": self.tag_to_string(link), - "url": link["href"], - "author": author, - "description": author, - } - ) - - return sectioned_feeds.items() diff --git a/recipes/ultimahora.recipe b/recipes/ultimahora.recipe deleted file mode 100644 index e2b16570b7..0000000000 --- a/recipes/ultimahora.recipe +++ /dev/null @@ -1,52 +0,0 @@ -__license__ = 'GPL v3' -__copyright__ = '2010, Darko Miletic ' -''' -ultimahora.com -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class UltimaHora_py(BasicNewsRecipe): - title = 'Ultima Hora' - __author__ = 'Darko Miletic' - description = 'Noticias de Paraguay y el resto del mundo' - publisher = 'EDITORIAL EL PAIS S.A.' - category = 'news, politics, Paraguay' - oldest_article = 2 - max_articles_per_feed = 200 - no_stylesheets = True - encoding = 'cp1252' - use_embedded_content = False - language = 'es_PY' - remove_empty_feeds = True - publication_type = 'newspaper' - masthead_url = 'http://www.ultimahora.com/imgs/uh-com.gif' - extra_css = ' body{font-family: Arial,Helvetica,sans-serif } img{margin-bottom: 0.4em} .sub_titulo_mediano,.TituloNota{font-family: Georgia,"Times New Roman",Times,serif} .sub_titulo_mediano{font-weight: bold} ' # noqa - - conversion_options = { - 'comment': description, 'tags': category, 'publisher': publisher, 'language': language - } - - remove_tags = [ - dict(name=['form', 'iframe', 'embed', 'object', 'link', 'base', 'table'])] - keep_only_tags = [ - dict(attrs={'id': ['nota_titulo', 'nota_copete', 'texto']})] - - feeds = [ - - (u'Arte y Espectaculos', u'http://www.ultimahora.com/adjuntos/rss/UHEspectaculos.xml'), - (u'Ciudad del Este', u'http://www.ultimahora.com/adjuntos/rss/UHCDE.xml'), - (u'Deportes', u'http://www.ultimahora.com/adjuntos/rss/UHDeportes.xml'), - (u'Ultimo momento', u'http://www.ultimahora.com/adjuntos/rss/UltimoMomento.xml'), - (u'Nacionales', u'http://www.ultimahora.com/adjuntos/rss/uh-rss-nacionales.xml'), - (u'Politica', u'http://www.ultimahora.com/adjuntos/rss/uh-rss-politica.xml'), - (u'Sucesos', u'http://www.ultimahora.com/adjuntos/rss/uh-rss-sucesos.xml'), - (u'Economia', u'http://www.ultimahora.com/adjuntos/rss/uh-rss-economia.xml'), - (u'Ciencia y Tecnologia', u'http://www.ultimahora.com/adjuntos/rss/uh-rss-ciencia.xml') - ] - - def preprocess_html(self, soup): - for item in soup.findAll(style=True): - del item['style'] - return soup diff --git a/recipes/unica.recipe b/recipes/unica.recipe deleted file mode 100644 index 9f1a117ae5..0000000000 --- a/recipes/unica.recipe +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -__license__ = 'GPL v3' -__copyright__ = u'2011, Silviu Cotoar\u0103' -''' -unica.ro -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class Unica(BasicNewsRecipe): - title = u'Unica' - __author__ = u'Silviu Cotoar\u0103' - description = 'Asa cum esti tu' - publisher = 'Unica' - oldest_article = 5 - language = 'ro' - max_articles_per_feed = 100 - no_stylesheets = True - use_embedded_content = False - category = 'Ziare,Reviste,Femei' - encoding = 'utf-8' - cover_url = 'http://www.unica.ro/fileadmin/images/logo.gif' - - conversion_options = { - 'comments': description, 'tags': category, 'language': language, 'publisher': publisher - } - - keep_only_tags = [ - dict(name='div', attrs={'id': 'sticky'}), dict( - name='p', attrs={'class': 'bodytext'}) - - ] - - remove_tags = [ - dict(name='div', attrs={'class': ['top-links']}), dict(name='div', attrs={'id': ['autor_name']}), dict(name='div', attrs={ - 'class': ['box-r']}), dict(name='div', attrs={'class': ['category']}), dict(name='div', attrs={'class': ['data']}) - ] - - remove_tags_after = [ - dict(name='ul', attrs={'class': 'pager'}) - ] - - feeds = [ - (u'Feeds', u'http://www.unica.ro/rss.html') - ] - - def preprocess_html(self, soup): - return self.adeify_images(soup) diff --git a/recipes/united_daily.recipe b/recipes/united_daily.recipe deleted file mode 100644 index 3a10566772..0000000000 --- a/recipes/united_daily.recipe +++ /dev/null @@ -1,86 +0,0 @@ -# -*- coding: utf-8 -*- -__license__ = 'GPL v3' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class UnitedDaily(BasicNewsRecipe): - title = u'聯合新聞網' - oldest_article = 1 - max_articles_per_feed = 100 - - feeds = [(u'焦點', u'http://udn.com/udnrss/focus.xml'), - (u'政治', u'http://udn.com/udnrss/politics.xml'), - (u'社會', u'http://udn.com/udnrss/social.xml'), - (u'生活', u'http://udn.com/udnrss/life.xml'), - (u'綜合', u'http://udn.com/udnrss/education.xml'), - (u'意見評論', u'http://udn.com/udnrss/opinion.xml'), - (u'校園博覽會', u'http://mag.udn.com/udnrss/campus_rss.xml'), - (u'大台北', u'http://udn.com/udnrss/local_taipei.xml'), - (u'桃竹苗', u'http://udn.com/udnrss/local_tyhcml.xml'), - (u'中彰投', u'http://udn.com/udnrss/local_tcchnt.xml'), - (u'雲嘉南', u'http://udn.com/udnrss/local_ylcytn.xml'), - (u'高屏離島', u'http://udn.com/udnrss/local_ksptisland.xml'), - (u'基宜花東', u'http://udn.com/udnrss/local_klilhltt.xml'), - (u'台灣百寶鄉', u'http://udn.com/udnrss/local_oddlyenough.xml'), - (u'台灣人物', u'http://mag.udn.com/udnrss/people_rss.xml'), - (u'兩岸要聞', u'http://udn.com/udnrss/mainland.xml'), - (u'國際焦點', u'http://udn.com/udnrss/international.xml'), - (u'台商經貿', u'http://udn.com/udnrss/financechina.xml'), - (u'國際財經', u'http://udn.com/udnrss/financeworld.xml'), - (u'全球觀察', u'http://mag.udn.com/udnrss/world_rss.xml'), - (u'財經焦點', u'http://udn.com/udnrss/financesfocus.xml'), - (u'股市要聞', u'http://udn.com/udnrss/stock.xml'), - (u'股市快訊', u'http://udn.com/udnrss/stklatest.xml'), - (u'稅務法務', u'http://udn.com/udnrss/tax.xml'), - (u'房市情報', u'http://udn.com/udnrss/houses.xml'), - (u'個人理財', u'http://mag.udn.com/udnrss/wealth_rss.xml'), - (u'研究報告', u'http://mag.udn.com/udnrss/report_rss.xml'), - (u'基金', u'http://mag.udn.com/udnrss/fund_rss.xml'), - (u'理財會客室', u'http://mag.udn.com/udnrss/m_forum_rss.xml'), - (u'棒球', u'http://udn.com/udnrss/baseball.xml'), - (u'籃球', u'http://udn.com/udnrss/basketball.xml'), - (u'體壇動態', u'http://udn.com/udnrss/sportsfocus.xml'), - (u'熱門星聞', u'http://udn.com/udnrss/starsfocus.xml'), - (u'廣電港陸', u'http://udn.com/udnrss/tv.xml'), - (u'海外星球', u'http://udn.com/udnrss/starswestern.xml'), - (u'日韓星情', u'http://udn.com/udnrss/starsjk.xml'), - (u'電影世界', u'http://udn.com/udnrss/movie.xml'), - (u'流行音樂', u'http://udn.com/udnrss/music.xml'), - (u'觀點專題', u'http://udn.com/udnrss/starssubject.xml'), - (u'消費流行', u'http://mag.udn.com/udnrss/happylife_rss.xml'), - (u'食樂指南', u'http://udn.com/udnrss/food.xml'), - (u'數位資訊', u'http://mag.udn.com/udnrss/digital_rss.xml'), - (u'折扣好康', u'http://udn.com/udnrss/shopping.xml'), - (u'發燒車訊', u'http://mag.udn.com/udnrss/car_rss.xml'), - (u'醫藥新聞', u'http://udn.com/udnrss/health.xml'), - (u'家婦繽紛', u'http://udn.com/udnrss/benfen.xml'), - (u'談星論命', u'http://udn.com/udnrss/astrology.xml'), - (u'文化副刊', u'http://udn.com/udnrss/reading.xml'), - (u'旅遊休閒', u'http://travel.udn.com/udnrss/travel_rss.xml'), - (u'健康醫藥', u'http://mag.udn.com/udnrss/life_rss.xml'), - ] - - extra_css = '''div[id='story_title'] {font-size:200%; font-weight:bold;} td[class='story_title'] {font-size:200%; font-weight:bold;} td[class='story_title'] td[class='story_title']>div {font-size:200%; font-weight:bold;}''' # noqa - - __author__ = 'Eddie Lau' - __version__ = '1.2' - language = 'zh_TW' - publisher = 'United Daily News Group' - description = 'United Daily (Taiwan)' - category = 'News, Chinese, Taiwan' - remove_javascript = True - use_embedded_content = False - no_stylesheets = True - encoding = 'utf-8' - conversion_options = {'linearize_tables': True} - masthead_url = 'http://udn.com/NEWS/2004/images/logo_udn.gif' - cover_url = 'http://udn.com/NEWS/2004/images/logo_udn.gif' - auto_cleanup = True - # keep_only_tags = [dict(name='td', attrs={'class':['story_title']}), - # dict(name='div', attrs={'id':['story_title']}), - # dict(name='td', attrs={'class':['story_author']}), - # dict(name='div', attrs={'id':['story_author']}), - # dict(name='td', attrs={'class':['story']}), - # dict(name='div', attrs={'id':['story']}), - # ] diff --git a/recipes/unperiodico.recipe b/recipes/unperiodico.recipe deleted file mode 100644 index 2c9be63762..0000000000 --- a/recipes/unperiodico.recipe +++ /dev/null @@ -1,22 +0,0 @@ -# -*- coding: utf-8 -*- -# https://github.com/iemejia/calibrecolombia - -''' -http://www.unperiodico.unal.edu.co/ -''' - -from calibre.web.feeds.news import BasicNewsRecipe - - -class UNPeriodico(BasicNewsRecipe): - title = u'UN Periodico' - language = 'es_CO' - __author__ = 'Ismael Mejia ' - cover_url = 'http://www.unperiodico.unal.edu.co/fileadmin/templates/periodico/img/logoperiodico.png' - description = 'UN Periodico' - oldest_article = 30 - max_articles_per_feed = 100 - publication_type = 'newspaper' - feeds = [ - (u'UNPeriodico', u'http://www.unperiodico.unal.edu.co/rss/type/rss2/') - ] diff --git a/recipes/utrinski.recipe b/recipes/utrinski.recipe deleted file mode 100644 index 79efed89f9..0000000000 --- a/recipes/utrinski.recipe +++ /dev/null @@ -1,83 +0,0 @@ -#!/usr/bin/env python - -__author__ = 'Darko Spasovski' -__license__ = 'GPL v3' -__copyright__ = '2011, Darko Spasovski ' -''' -utrinski.com.mk -''' - -import datetime -import re - -from calibre import browser -from calibre.ebooks.BeautifulSoup import BeautifulSoup -from calibre.web.feeds.news import BasicNewsRecipe - - -class UtrinskiVesnik(BasicNewsRecipe): - - INDEX = 'http://www.utrinski.com.mk/' - title = 'Utrinski Vesnik' - description = 'Daily Macedonian newspaper' - masthead_url = 'http://www.utrinski.com.mk/images/LogoTop.jpg' - language = 'mk' - remove_javascript = True - publication_type = 'newspaper' - category = 'news, Macedonia' - max_articles_per_feed = 100 - no_stylesheets = True - use_embedded_content = False - preprocess_regexps = [(re.compile(i[0], re.IGNORECASE | re.DOTALL), i[1]) for i in - [ - # Remove anything before the start of the article. - (r'', lambda match: ''), - - # Remove anything after the end of the article. - (r'