mirror of
https://github.com/FreshRSS/FreshRSS.git
synced 2026-05-05 21:55:24 -04:00
Conditional retrieval
fix https://github.com/FreshRSS/FreshRSS/issues/6149
This commit is contained in:
@@ -299,6 +299,7 @@ class FreshRSS_subscription_Controller extends FreshRSS_ActionController {
|
||||
}
|
||||
}
|
||||
|
||||
$feed->_attribute('path_entries_condition', Minz_Request::paramTextToArray('path_entries_condition', plaintext: true));
|
||||
$feed->_attribute('path_entries_filter', Minz_Request::paramString('path_entries_filter', true));
|
||||
|
||||
$values = [
|
||||
|
||||
@@ -814,6 +814,22 @@ HTML;
|
||||
if ($url === '' || $feed === null || $feed->pathEntries() === '') {
|
||||
return '';
|
||||
}
|
||||
if (!empty($feed->attributeArray('path_entries_condition'))) {
|
||||
$found = false;
|
||||
foreach ($feed->attributeArray('path_entries_condition') as $condition) {
|
||||
if (trim($condition) === '') {
|
||||
continue;
|
||||
}
|
||||
$booleanSearch = new FreshRSS_BooleanSearch($condition);
|
||||
if ($this->matches($booleanSearch)) {
|
||||
$found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!$found) {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
$cachePath = $feed->cacheFilename($url . '#' . $feed->pathEntries());
|
||||
$html = httpGet($url, $cachePath, 'html', $feed->attributes(), $feed->curlOptions());
|
||||
|
||||
@@ -57,13 +57,14 @@ return array(
|
||||
'prepend' => 'Přidat před existující obsah',
|
||||
'replace' => 'Nahradit existující obsah',
|
||||
),
|
||||
'content_retrieval' => 'Content retrieval', // TODO
|
||||
'css_cookie' => 'Použít cookies při načítání obsahu článku',
|
||||
'css_cookie_help' => 'Příklad: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>',
|
||||
'css_help' => 'Načte oříznuté kanály RSS (pozor, náročnější na čas!)',
|
||||
'css_path' => 'Přepínač CSS článku na původních webových stránkách',
|
||||
'css_path_filter' => array(
|
||||
'_' => 'selektor CSS prvků, které mají být odstraněny',
|
||||
'help' => 'Selektor CSS může být seznam, například: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>',
|
||||
'help' => 'Selektor CSS může být seznam, například: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>',
|
||||
),
|
||||
'description' => 'Popis',
|
||||
'empty' => 'Tento kanál je prázdný. Ověřte prosím, zda je stále udržován.',
|
||||
@@ -201,6 +202,7 @@ return array(
|
||||
'no_selected' => 'Nejsou vybrány žádné kanály.',
|
||||
'number_entries' => '%d článků',
|
||||
'open_feed' => 'Open feed %s', // TODO
|
||||
'path_entries_condition' => 'Condition for content retrieval', // TODO
|
||||
'priority' => array(
|
||||
'_' => 'Viditelnost',
|
||||
'archived' => 'Nezobrazovat (archivováno)',
|
||||
|
||||
@@ -57,13 +57,14 @@ return array(
|
||||
'prepend' => 'Artikelinhalt vor Feed-Inhalt hinzufügen',
|
||||
'replace' => 'Artikelinhalt ersetzt Feed-Inhalt (Standard)',
|
||||
),
|
||||
'content_retrieval' => 'Content retrieval', // TODO
|
||||
'css_cookie' => 'Verwende Cookies beim Herunterladen des Feed-Inhalts mit CSS-Filtern',
|
||||
'css_cookie_help' => 'Beispiel: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>',
|
||||
'css_help' => 'Ruft bei gekürzten RSS-Feeds den vollständigen Artikelinhalt ab (Achtung, benötigt mehr Zeit!)',
|
||||
'css_path' => 'CSS-Selektor des Artikelinhaltes auf der Original-Webseite',
|
||||
'css_path_filter' => array(
|
||||
'_' => 'CSS-Selector für die Elemente, die entfernt werden sollen',
|
||||
'help' => 'CSS-Selector könnte eine Liste sein, wie z.B.: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>',
|
||||
'help' => 'CSS-Selector könnte eine Liste sein, wie z.B.: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>',
|
||||
),
|
||||
'description' => 'Beschreibung',
|
||||
'empty' => 'Dieser Feed ist leer. Bitte stellen Sie sicher, dass er noch gepflegt wird.',
|
||||
@@ -201,6 +202,7 @@ return array(
|
||||
'no_selected' => 'Kein Feed ausgewählt.',
|
||||
'number_entries' => '%d Artikel',
|
||||
'open_feed' => 'Feed %s öffnen',
|
||||
'path_entries_condition' => 'Condition for content retrieval', // TODO
|
||||
'priority' => array(
|
||||
'_' => 'Sichtbarkeit',
|
||||
'archived' => 'Nicht anzeigen (archiviert)',
|
||||
|
||||
@@ -57,13 +57,14 @@ return array(
|
||||
'prepend' => 'Add before existing content', // TODO
|
||||
'replace' => 'Replace existing content', // TODO
|
||||
),
|
||||
'content_retrieval' => 'Content retrieval', // TODO
|
||||
'css_cookie' => 'Use Cookies when fetching the article content', // TODO
|
||||
'css_cookie_help' => 'Example: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>', // TODO
|
||||
'css_help' => 'Retrieves truncated RSS feeds (caution, requires more time!)', // TODO
|
||||
'css_path' => 'Article CSS selector on original website', // TODO
|
||||
'css_path_filter' => array(
|
||||
'_' => 'CSS selector of the elements to remove', // TODO
|
||||
'help' => 'A CSS selector may be a list such as: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>', // TODO
|
||||
'help' => 'A CSS selector may be a list such as: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>', // TODO
|
||||
),
|
||||
'description' => 'Description', // TODO
|
||||
'empty' => 'This feed is empty. Please verify that it is still maintained.', // TODO
|
||||
@@ -201,6 +202,7 @@ return array(
|
||||
'no_selected' => 'No feed selected.', // TODO
|
||||
'number_entries' => '%d articles', // TODO
|
||||
'open_feed' => 'Open feed %s', // TODO
|
||||
'path_entries_condition' => 'Condition for content retrieval', // TODO
|
||||
'priority' => array(
|
||||
'_' => 'Visibility', // TODO
|
||||
'archived' => 'Do not show (archived)', // TODO
|
||||
|
||||
@@ -57,13 +57,14 @@ return array(
|
||||
'prepend' => 'Add before existing content', // IGNORE
|
||||
'replace' => 'Replace existing content', // IGNORE
|
||||
),
|
||||
'content_retrieval' => 'Content retrieval', // IGNORE
|
||||
'css_cookie' => 'Use Cookies when fetching the article content', // IGNORE
|
||||
'css_cookie_help' => 'Example: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>', // IGNORE
|
||||
'css_help' => 'Retrieves truncated RSS feeds (caution, requires more time!)', // IGNORE
|
||||
'css_path' => 'Article CSS selector on original website', // IGNORE
|
||||
'css_path_filter' => array(
|
||||
'_' => 'CSS selector of the elements to remove', // IGNORE
|
||||
'help' => 'A CSS selector may be a list such as: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>', // IGNORE
|
||||
'help' => 'A CSS selector may be a list such as: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>', // IGNORE
|
||||
),
|
||||
'description' => 'Description', // IGNORE
|
||||
'empty' => 'This feed is empty. Please verify that it is still maintained.', // IGNORE
|
||||
@@ -201,6 +202,7 @@ return array(
|
||||
'no_selected' => 'No feed selected.', // IGNORE
|
||||
'number_entries' => '%d articles', // IGNORE
|
||||
'open_feed' => 'Open feed %s', // IGNORE
|
||||
'path_entries_condition' => 'Condition for content retrieval', // IGNORE
|
||||
'priority' => array(
|
||||
'_' => 'Visibility', // IGNORE
|
||||
'archived' => 'Do not show (archived)', // IGNORE
|
||||
|
||||
@@ -57,13 +57,14 @@ return array(
|
||||
'prepend' => 'Add before existing content',
|
||||
'replace' => 'Replace existing content',
|
||||
),
|
||||
'content_retrieval' => 'Content retrieval',
|
||||
'css_cookie' => 'Use Cookies when fetching the article content',
|
||||
'css_cookie_help' => 'Example: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>',
|
||||
'css_help' => 'Retrieves truncated RSS feeds (caution, requires more time!)',
|
||||
'css_path' => 'Article CSS selector on original website',
|
||||
'css_path_filter' => array(
|
||||
'_' => 'CSS selector of the elements to remove',
|
||||
'help' => 'A CSS selector may be a list such as: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>',
|
||||
'help' => 'A CSS selector may be a list such as: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>',
|
||||
),
|
||||
'description' => 'Description',
|
||||
'empty' => 'This feed is empty. Please verify that it is still maintained.',
|
||||
@@ -201,6 +202,7 @@ return array(
|
||||
'no_selected' => 'No feed selected.',
|
||||
'number_entries' => '%d articles',
|
||||
'open_feed' => 'Open feed %s',
|
||||
'path_entries_condition' => 'Condition for content retrieval',
|
||||
'priority' => array(
|
||||
'_' => 'Visibility',
|
||||
'archived' => 'Do not show (archived)',
|
||||
|
||||
@@ -57,13 +57,14 @@ return array(
|
||||
'prepend' => 'Añadir antes del contenido existente',
|
||||
'replace' => 'Reemplazar contenido existente',
|
||||
),
|
||||
'content_retrieval' => 'Content retrieval', // TODO
|
||||
'css_cookie' => 'Usar cookies al obtener el contenido del artículo',
|
||||
'css_cookie_help' => 'Ejemplo: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>',
|
||||
'css_help' => 'Recibir fuentes RSS truncadas (aviso, ¡necesita más tiempo!)',
|
||||
'css_path' => 'Ruta a la CSS de los artículos en la web original',
|
||||
'css_path_filter' => array(
|
||||
'_' => 'Selector CSS de los elementos a remover',
|
||||
'help' => 'Un selector CSS puede ser una lista, por ejemplo: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>',
|
||||
'help' => 'Un selector CSS puede ser una lista, por ejemplo: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>',
|
||||
),
|
||||
'description' => 'Descripción',
|
||||
'empty' => 'La fuente está vacía. Por favor, verifica que siga activa.',
|
||||
@@ -201,6 +202,7 @@ return array(
|
||||
'no_selected' => 'No hay fuentes seleccionadas.',
|
||||
'number_entries' => '%d artículos',
|
||||
'open_feed' => 'Fuente abierta %s',
|
||||
'path_entries_condition' => 'Condition for content retrieval', // TODO
|
||||
'priority' => array(
|
||||
'_' => 'Visibilidad',
|
||||
'archived' => 'No mostrar (archivado)',
|
||||
|
||||
@@ -57,6 +57,7 @@ return array(
|
||||
'prepend' => ' قبل از محتوای موجود اضافه کنید',
|
||||
'replace' => ' محتوای موجود را جایگزین کنید',
|
||||
),
|
||||
'content_retrieval' => 'Content retrieval', // TODO
|
||||
'css_cookie' => ' هنگام واکشی محتوای مقاله از کوکی ها استفاده کنید',
|
||||
'css_cookie_help' => ' مثال: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>',
|
||||
'css_help' => ' فیدهای RSS کوتاه شده را بازیابی می کند (احتیاط',
|
||||
@@ -201,6 +202,7 @@ return array(
|
||||
'no_selected' => ' هیچ خوراکی انتخاب نشده است.',
|
||||
'number_entries' => ' %d مقاله',
|
||||
'open_feed' => 'Open feed %s', // TODO
|
||||
'path_entries_condition' => 'Condition for content retrieval', // TODO
|
||||
'priority' => array(
|
||||
'_' => ' دید',
|
||||
'archived' => ' نشان داده نشود (بایگانی شده)',
|
||||
|
||||
@@ -57,13 +57,14 @@ return array(
|
||||
'prepend' => 'Lisää ennen aiempaa sisältöä',
|
||||
'replace' => 'Korvaa aiempi sisältö',
|
||||
),
|
||||
'content_retrieval' => 'Content retrieval', // TODO
|
||||
'css_cookie' => 'Käytä evästeitä noudettaessa artikkelin sisältö',
|
||||
'css_cookie_help' => 'Esimerkki: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>',
|
||||
'css_help' => 'Noutaa lyhennetyt RSS-syötteet (huomautus: kestää pidempään!)',
|
||||
'css_path' => 'Artikkelin CSS-valitsin alkuperäisellä sivustolla',
|
||||
'css_path_filter' => array(
|
||||
'_' => 'Poistettavien elementtien CSS-valitsin',
|
||||
'help' => 'CSS-valitsin voi olla luettelo, kuten: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>',
|
||||
'help' => 'CSS-valitsin voi olla luettelo, kuten: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>',
|
||||
),
|
||||
'description' => 'Kuvaus',
|
||||
'empty' => 'Syöte on tyhjä. Varmista, että sitä ylläpidetään edelleen.',
|
||||
@@ -201,6 +202,7 @@ return array(
|
||||
'no_selected' => 'Syötettä ei ole valittu.',
|
||||
'number_entries' => '%d artikkelia',
|
||||
'open_feed' => 'Avaa syöte %s',
|
||||
'path_entries_condition' => 'Condition for content retrieval', // TODO
|
||||
'priority' => array(
|
||||
'_' => 'Näkyvyys',
|
||||
'archived' => 'Älä näytä (arkistoitu)',
|
||||
|
||||
@@ -57,13 +57,14 @@ return array(
|
||||
'prepend' => 'Ajouter avant le contenu existant',
|
||||
'replace' => 'Remplacer le contenu existant',
|
||||
),
|
||||
'content_retrieval' => 'Récupération de contenu',
|
||||
'css_cookie' => 'Utiliser des cookies pour la réception du contenu des articles',
|
||||
'css_cookie_help' => 'Exemple : <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>',
|
||||
'css_help' => 'Permet de récupérer les flux tronqués (attention, demande plus de temps !)',
|
||||
'css_path' => 'Sélecteur CSS des articles sur le site d’origine',
|
||||
'css_path_filter' => array(
|
||||
'_' => 'Sélecteur CSS des éléments à supprimer',
|
||||
'help' => 'Un sélecteur CSS peut être une liste comme : <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>',
|
||||
'help' => 'Un sélecteur CSS peut être une liste comme : <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>',
|
||||
),
|
||||
'description' => 'Description', // IGNORE
|
||||
'empty' => 'Ce flux est vide. Veuillez vérifier qu’il est encore maintenu.',
|
||||
@@ -201,6 +202,7 @@ return array(
|
||||
'no_selected' => 'Aucun flux sélectionné.',
|
||||
'number_entries' => '%d articles', // IGNORE
|
||||
'open_feed' => 'Ouvrir le flux %s',
|
||||
'path_entries_condition' => 'Condition pour la récupération de contenu',
|
||||
'priority' => array(
|
||||
'_' => 'Visibilité',
|
||||
'archived' => 'Ne pas afficher (archivé)',
|
||||
|
||||
@@ -57,13 +57,14 @@ return array(
|
||||
'prepend' => 'Add before existing content', // TODO
|
||||
'replace' => 'Replace existing content', // TODO
|
||||
),
|
||||
'content_retrieval' => 'Content retrieval', // TODO
|
||||
'css_cookie' => 'Use Cookies when fetching the article content', // TODO
|
||||
'css_cookie_help' => 'Example: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>', // TODO
|
||||
'css_help' => 'קבלת הזנות RSS קטומות (זהירות, לוקח זמן רב יותר!)',
|
||||
'css_path' => 'נתיב הCSS של המאמר באתר המקורי',
|
||||
'css_path_filter' => array(
|
||||
'_' => 'CSS selector of the elements to remove', // TODO
|
||||
'help' => 'A CSS selector may be a list such as: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>', // TODO
|
||||
'help' => 'A CSS selector may be a list such as: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>', // TODO
|
||||
),
|
||||
'description' => 'תיאור',
|
||||
'empty' => 'הזנה זו ריקה. אנא ודאו שהיא עדיין מתוחזקת.',
|
||||
@@ -201,6 +202,7 @@ return array(
|
||||
'no_selected' => 'אף הזנה לא נבחרה.',
|
||||
'number_entries' => '%d מאמרים',
|
||||
'open_feed' => 'Open feed %s', // TODO
|
||||
'path_entries_condition' => 'Condition for content retrieval', // TODO
|
||||
'priority' => array(
|
||||
'_' => 'Visibility', // TODO
|
||||
'archived' => 'Do not show (archived)', // TODO
|
||||
|
||||
@@ -57,13 +57,14 @@ return array(
|
||||
'prepend' => 'Hozzáadás a létező tartalom elé',
|
||||
'replace' => 'Cserélje ki a létező tartalmat',
|
||||
),
|
||||
'content_retrieval' => 'Content retrieval', // TODO
|
||||
'css_cookie' => 'Használjon sütiket a cikkek letöltésénél',
|
||||
'css_cookie_help' => 'Példa: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>',
|
||||
'css_help' => 'Csonkított RSS hírforrások beszerzése (vigyázz, több időt igényel!)',
|
||||
'css_path' => 'Cikk CSS selector az eredeti weblapon',
|
||||
'css_path_filter' => array(
|
||||
'_' => 'A törlendő elemek CSS selectora',
|
||||
'help' => 'Egy CSS selector lehet egy lista például: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>',
|
||||
'help' => 'Egy CSS selector lehet egy lista például: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>',
|
||||
),
|
||||
'description' => 'Leírás',
|
||||
'empty' => 'Ez a hírforrás üres. Ellenőrizd hogy van e tartalom rajta.',
|
||||
@@ -201,6 +202,7 @@ return array(
|
||||
'no_selected' => 'Nincsen hírforrás kiválasztva.',
|
||||
'number_entries' => '%d cikkek',
|
||||
'open_feed' => 'Open feed %s', // TODO
|
||||
'path_entries_condition' => 'Condition for content retrieval', // TODO
|
||||
'priority' => array(
|
||||
'_' => 'Láthatóság',
|
||||
'archived' => 'Ne jelenjen meg (archivált)',
|
||||
|
||||
@@ -57,13 +57,14 @@ return array(
|
||||
'prepend' => 'Add before existing content', // TODO
|
||||
'replace' => 'Replace existing content', // TODO
|
||||
),
|
||||
'content_retrieval' => 'Content retrieval', // TODO
|
||||
'css_cookie' => 'Use Cookies when fetching the article content', // TODO
|
||||
'css_cookie_help' => 'Example: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>', // TODO
|
||||
'css_help' => 'Retrieves truncated RSS feeds (caution, requires more time!)', // TODO
|
||||
'css_path' => 'Article CSS selector on original website', // TODO
|
||||
'css_path_filter' => array(
|
||||
'_' => 'CSS selector of the elements to remove', // TODO
|
||||
'help' => 'A CSS selector may be a list such as: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>', // TODO
|
||||
'help' => 'A CSS selector may be a list such as: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>', // TODO
|
||||
),
|
||||
'description' => 'Description', // TODO
|
||||
'empty' => 'This feed is empty. Please verify that it is still maintained.', // TODO
|
||||
@@ -201,6 +202,7 @@ return array(
|
||||
'no_selected' => 'No feed selected.', // TODO
|
||||
'number_entries' => '%d articles', // TODO
|
||||
'open_feed' => 'Open feed %s', // TODO
|
||||
'path_entries_condition' => 'Condition for content retrieval', // TODO
|
||||
'priority' => array(
|
||||
'_' => 'Visibility', // TODO
|
||||
'archived' => 'Do not show (archived)', // TODO
|
||||
|
||||
@@ -57,13 +57,14 @@ return array(
|
||||
'prepend' => 'Aggiungi prima del contenuto esistente',
|
||||
'replace' => 'Rimpiazza il contenuto esistente',
|
||||
),
|
||||
'content_retrieval' => 'Content retrieval', // TODO
|
||||
'css_cookie' => 'Usa i cookie quando viene recuperato il contenuto di un articolo',
|
||||
'css_cookie_help' => 'Esempio: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>',
|
||||
'css_help' => 'In caso di feed RSS troncati (attenzione, richiede molto tempo!)',
|
||||
'css_path' => 'Percorso del foglio di stile CSS del sito di origine',
|
||||
'css_path_filter' => array(
|
||||
'_' => 'Il selettore CSS degli elementi da rimuovere',
|
||||
'help' => 'Il selettore CSS potrebbe essere una lista, ad esempio: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>',
|
||||
'help' => 'Il selettore CSS potrebbe essere una lista, ad esempio: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>',
|
||||
),
|
||||
'description' => 'Descrizione',
|
||||
'empty' => 'Questo feed non contiene articoli. Per favore verifica il sito direttamente.',
|
||||
@@ -201,6 +202,7 @@ return array(
|
||||
'no_selected' => 'Nessun feed selezionato.',
|
||||
'number_entries' => '%d articoli',
|
||||
'open_feed' => 'Aprire il feed %s',
|
||||
'path_entries_condition' => 'Condition for content retrieval', // TODO
|
||||
'priority' => array(
|
||||
'_' => 'Visibilità',
|
||||
'archived' => 'Non mostrare (archiviato)',
|
||||
|
||||
@@ -57,13 +57,14 @@ return array(
|
||||
'prepend' => '既に存在するコンテンツの前に追加する',
|
||||
'replace' => '既に存在するコンテンツを置換する',
|
||||
),
|
||||
'content_retrieval' => 'Content retrieval', // TODO
|
||||
'css_cookie' => '記事のコンテンツを読み出したとき、クッキーを使用する',
|
||||
'css_cookie_help' => '例: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>',
|
||||
'css_help' => '省略されたRSSフィードを復元します (ただし、時間がかかります)',
|
||||
'css_path' => '元のWebサイトから記事を抽出するCSSセレクタ',
|
||||
'css_path_filter' => array(
|
||||
'_' => '要素を削除するCSSセレクタ',
|
||||
'help' => 'CSSセレクタは次のようなリストです: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>',
|
||||
'help' => 'CSSセレクタは次のようなリストです: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>',
|
||||
),
|
||||
'description' => '説明',
|
||||
'empty' => 'このフィードは空です。サイトが運営されているかどうかを確認してみてください。',
|
||||
@@ -201,6 +202,7 @@ return array(
|
||||
'no_selected' => 'どのフィードも選択されていません',
|
||||
'number_entries' => '%d 記事数',
|
||||
'open_feed' => 'Open feed %s', // TODO
|
||||
'path_entries_condition' => 'Condition for content retrieval', // TODO
|
||||
'priority' => array(
|
||||
'_' => '表示する場所',
|
||||
'archived' => '非表示にする(アーカイブ)',
|
||||
|
||||
@@ -57,13 +57,14 @@ return array(
|
||||
'prepend' => '이미 존재하는 콘텐츠 이전에 추가',
|
||||
'replace' => '이미 존재하는 콘텐츠 대체',
|
||||
),
|
||||
'content_retrieval' => 'Content retrieval', // TODO
|
||||
'css_cookie' => '글 콘텐츠를 가져올 때 쿠키를 사용',
|
||||
'css_cookie_help' => '예시: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>',
|
||||
'css_help' => '글의 일부가 포함된 RSS 피드를 가져옵니다 (주의, 시간이 좀 더 걸립니다!)',
|
||||
'css_path' => '웹사이트 상의 글 본문에 해당하는 CSS 경로',
|
||||
'css_path_filter' => array(
|
||||
'_' => '제거할 요소의 CSS 선택자',
|
||||
'help' => 'CSS 선택자는 다음과 같은 목록일 수 있습니다: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>',
|
||||
'help' => 'CSS 선택자는 다음과 같은 목록일 수 있습니다: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>',
|
||||
),
|
||||
'description' => '설명',
|
||||
'empty' => '이 피드는 비어있습니다. 피드가 계속 운영되고 있는지 확인하세요.',
|
||||
@@ -201,6 +202,7 @@ return array(
|
||||
'no_selected' => '선택된 피드가 없습니다.',
|
||||
'number_entries' => '%d 개의 글',
|
||||
'open_feed' => 'Open feed %s', // TODO
|
||||
'path_entries_condition' => 'Condition for content retrieval', // TODO
|
||||
'priority' => array(
|
||||
'_' => '표시',
|
||||
'archived' => '표시하지 않음 (보관됨)',
|
||||
|
||||
@@ -57,13 +57,14 @@ return array(
|
||||
'prepend' => 'Pievienot pirms esošā satura',
|
||||
'replace' => 'Aizstāt esošo saturu',
|
||||
),
|
||||
'content_retrieval' => 'Content retrieval', // TODO
|
||||
'css_cookie' => 'Lietot sīkfailus, kad tiek iegūts raksta saturs',
|
||||
'css_cookie_help' => 'Piemērs: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>',
|
||||
'css_help' => 'Iegūst saīsinātas RSS plūsmas (uzmanību, prasa vairāk laika!)',
|
||||
'css_path' => 'Raksta CSS selektors sākotnējā vietnē',
|
||||
'css_path_filter' => array(
|
||||
'_' => 'Noņemamo elementu CSS selektors',
|
||||
'help' => 'CSS selektors var būt saraksts, piemēram.: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>',
|
||||
'help' => 'CSS selektors var būt saraksts, piemēram.: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>',
|
||||
),
|
||||
'description' => 'Apraksts',
|
||||
'empty' => 'Šī barotne ir tukša. Lūdzu, pārbaudiet, vai tā joprojām tiek uzturēta.',
|
||||
@@ -201,6 +202,7 @@ return array(
|
||||
'no_selected' => 'Barotne nav izvēlēta.',
|
||||
'number_entries' => '%d raksti',
|
||||
'open_feed' => 'Open feed %s', // TODO
|
||||
'path_entries_condition' => 'Condition for content retrieval', // TODO
|
||||
'priority' => array(
|
||||
'_' => 'Prioritāte',
|
||||
'archived' => 'Nerādīt (arhivēts)',
|
||||
|
||||
@@ -57,13 +57,14 @@ return array(
|
||||
'prepend' => 'Voor huidige inhoud toevoegen',
|
||||
'replace' => 'Huidige inhoud vervangen',
|
||||
),
|
||||
'content_retrieval' => 'Content retrieval', // TODO
|
||||
'css_cookie' => 'Cookies gebruiken bij het ophalen van artikelinhoud',
|
||||
'css_cookie_help' => 'Voorbeeld: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>',
|
||||
'css_help' => 'Haalt onvolledige RSS-feeds op (attentie, heeft meer tijd nodig!)',
|
||||
'css_path' => 'CSS-pad van artikelen op originele website',
|
||||
'css_path_filter' => array(
|
||||
'_' => 'CSS selector van de elementen om te verwijderen',
|
||||
'help' => 'Een CSS selector kan een lijst zijn, zoals: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>',
|
||||
'help' => 'Een CSS selector kan een lijst zijn, zoals: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>',
|
||||
),
|
||||
'description' => 'Omschrijving',
|
||||
'empty' => 'Deze feed is leeg. Controleer of deze nog actueel is.',
|
||||
@@ -201,6 +202,7 @@ return array(
|
||||
'no_selected' => 'Geen feed geselecteerd.',
|
||||
'number_entries' => '%d artikelen',
|
||||
'open_feed' => 'Open feed %s', // TODO
|
||||
'path_entries_condition' => 'Condition for content retrieval', // TODO
|
||||
'priority' => array(
|
||||
'_' => 'Zichtbaarheid',
|
||||
'archived' => 'Niet weergeven (gearchiveerd)',
|
||||
|
||||
@@ -57,13 +57,14 @@ return array(
|
||||
'prepend' => 'Apondre abans lo contengut existent',
|
||||
'replace' => 'Remplaçar lo contengut existent',
|
||||
),
|
||||
'content_retrieval' => 'Content retrieval', // TODO
|
||||
'css_cookie' => 'Utilizar los cookies en recuperant lo contengut de l’article',
|
||||
'css_cookie_help' => 'Exemple : <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>',
|
||||
'css_help' => 'Permet de recuperar los fluxes troncats (atencion, demanda mai de temps !)',
|
||||
'css_path' => 'Selector CSS dels articles sul site d’origina',
|
||||
'css_path_filter' => array(
|
||||
'_' => 'Selector CSS de l’element de tirar',
|
||||
'help' => 'Un selector CSS pòt èsser una lista coma : <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>',
|
||||
'help' => 'Un selector CSS pòt èsser una lista coma : <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>',
|
||||
),
|
||||
'description' => 'Descripcion', // IGNORE
|
||||
'empty' => 'Aqueste flux es void. Assegurats-vos qu’es totjorn mantengut.',
|
||||
@@ -201,6 +202,7 @@ return array(
|
||||
'no_selected' => 'Cap de flux pas seleccionat.',
|
||||
'number_entries' => '%d articles', // IGNORE
|
||||
'open_feed' => 'Open feed %s', // TODO
|
||||
'path_entries_condition' => 'Condition for content retrieval', // TODO
|
||||
'priority' => array(
|
||||
'_' => 'Visibilitat',
|
||||
'archived' => 'Mostrar pas (archivat)',
|
||||
|
||||
@@ -57,13 +57,14 @@ return array(
|
||||
'prepend' => 'Umieść przed treścią z kanału',
|
||||
'replace' => 'Zastąp treść z kanału',
|
||||
),
|
||||
'content_retrieval' => 'Content retrieval', // TODO
|
||||
'css_cookie' => 'Użyj plików cookie podczas pobierania wiadomości',
|
||||
'css_cookie_help' => 'Przykład: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>',
|
||||
'css_help' => 'Pozwala na ograniczenie zawartości kanałów (uwaga, wymaga więcej czasu!)',
|
||||
'css_path' => 'Selektor CSS dla wiadomości na pierwotnej stronie',
|
||||
'css_path_filter' => array(
|
||||
'_' => 'Selektor CSS elementów do usunięcia',
|
||||
'help' => 'Selector CSS może być listą, na przykład: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>',
|
||||
'help' => 'Selector CSS może być listą, na przykład: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>',
|
||||
),
|
||||
'description' => 'Opis',
|
||||
'empty' => 'Ten kanał jest pusty. Należy sprawdzić czy kanał w dalszym ciągu działa.',
|
||||
@@ -201,6 +202,7 @@ return array(
|
||||
'no_selected' => 'Brak kanałów.',
|
||||
'number_entries' => '%d wiadomości',
|
||||
'open_feed' => 'Open feed %s', // TODO
|
||||
'path_entries_condition' => 'Condition for content retrieval', // TODO
|
||||
'priority' => array(
|
||||
'_' => 'Widoczność',
|
||||
'archived' => 'Nie pokazuj (zarchiwizowany)',
|
||||
|
||||
@@ -57,13 +57,14 @@ return array(
|
||||
'prepend' => 'Adicionar antes do conteúdo existente',
|
||||
'replace' => 'Substituir o conteúdo existente',
|
||||
),
|
||||
'content_retrieval' => 'Content retrieval', // TODO
|
||||
'css_cookie' => 'Usar cookies ao buscar pelo conteúdo de artigos',
|
||||
'css_cookie_help' => 'Exemplo: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>',
|
||||
'css_help' => 'Retorna RSS feeds truncados (atenção, requer mais tempo!)',
|
||||
'css_path' => 'Caminho do CSS do artigo no site original',
|
||||
'css_path_filter' => array(
|
||||
'_' => 'Seletor CSS dos elementos a serem removidos',
|
||||
'help' => 'O seletor CSS pode ser uma lista com: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>',
|
||||
'help' => 'O seletor CSS pode ser uma lista com: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>',
|
||||
),
|
||||
'description' => 'Descrição',
|
||||
'empty' => 'Este feed está vazio. Por favor verifique ele ainda é mantido.',
|
||||
@@ -201,6 +202,7 @@ return array(
|
||||
'no_selected' => 'Nenhum feed selecionado.',
|
||||
'number_entries' => '%d artigos',
|
||||
'open_feed' => 'Open feed %s', // TODO
|
||||
'path_entries_condition' => 'Condition for content retrieval', // TODO
|
||||
'priority' => array(
|
||||
'_' => 'Visibilidade',
|
||||
'archived' => 'Não exibir (arquivado)',
|
||||
|
||||
@@ -57,13 +57,14 @@ return array(
|
||||
'prepend' => 'Добавить перед существующим содержимым',
|
||||
'replace' => 'Заменить существующее содержимое',
|
||||
),
|
||||
'content_retrieval' => 'Content retrieval', // TODO
|
||||
'css_cookie' => 'Использовать куки при извлечении содержимого статьи',
|
||||
'css_cookie_help' => 'Пример: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>',
|
||||
'css_help' => 'Получает усечённые RSS-ленты (осторожно, требует больше времени!)',
|
||||
'css_path' => 'CSS селектор статьи на сайте',
|
||||
'css_path_filter' => array(
|
||||
'_' => 'CSS селектор элемента для удаления',
|
||||
'help' => 'CSS селектор может быть списком как: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>',
|
||||
'help' => 'CSS селектор может быть списком как: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>',
|
||||
),
|
||||
'description' => 'Описание',
|
||||
'empty' => 'Лента пустая. Пожалуйста, убедитесь, что её до сих пор обслуживают.',
|
||||
@@ -201,6 +202,7 @@ return array(
|
||||
'no_selected' => 'Ленты не выбраны.',
|
||||
'number_entries' => '%d статей',
|
||||
'open_feed' => 'Open feed %s', // TODO
|
||||
'path_entries_condition' => 'Condition for content retrieval', // TODO
|
||||
'priority' => array(
|
||||
'_' => 'Видимость',
|
||||
'archived' => 'Не показывать (архивировано)',
|
||||
|
||||
@@ -57,13 +57,14 @@ return array(
|
||||
'prepend' => 'Pridať pred existujúci obsah',
|
||||
'replace' => 'Nahradiť existujúci obsh',
|
||||
),
|
||||
'content_retrieval' => 'Content retrieval', // TODO
|
||||
'css_cookie' => 'Pri sťahovaní obsahu článku použiť cookies',
|
||||
'css_cookie_help' => 'Príklad: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>',
|
||||
'css_help' => 'Stiahnuť skrátenú verziu RSS kanála (pozor, vyžaduje viac času!)',
|
||||
'css_path' => 'Pôvodný CSS súbor článku z webovej stránky',
|
||||
'css_path_filter' => array(
|
||||
'_' => 'CSS selektor elementu na odstránenie',
|
||||
'help' => 'CSS selektor môže byť zoznam ako: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>',
|
||||
'help' => 'CSS selektor môže byť zoznam ako: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>',
|
||||
),
|
||||
'description' => 'Popis',
|
||||
'empty' => 'Tento kanál je prázdny. Overte, prosím, či je ešte spravovaný autorom.',
|
||||
@@ -201,6 +202,7 @@ return array(
|
||||
'no_selected' => 'Nevybrali ste kanál.',
|
||||
'number_entries' => 'Počet článkov: %d',
|
||||
'open_feed' => 'Open feed %s', // TODO
|
||||
'path_entries_condition' => 'Condition for content retrieval', // TODO
|
||||
'priority' => array(
|
||||
'_' => 'Viditeľnosť',
|
||||
'archived' => 'Nezobrazovať (archivované)',
|
||||
|
||||
@@ -57,13 +57,14 @@ return array(
|
||||
'prepend' => 'Mevcut içeriğin öncesine ekle',
|
||||
'replace' => 'Mevcut içerikle değiştir',
|
||||
),
|
||||
'content_retrieval' => 'Content retrieval', // TODO
|
||||
'css_cookie' => 'Makale içeriğini yüklerken çerez kullan',
|
||||
'css_cookie_help' => 'Örnek: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>',
|
||||
'css_help' => 'Dikkat, daha çok zaman gerekir!',
|
||||
'css_path' => 'Makaleleri kendi CSS görünümü ile göster',
|
||||
'css_path_filter' => array(
|
||||
'_' => 'Kaldırılacak elemana ait CSS seçicisi',
|
||||
'help' => 'CSS seçicisi şu şekilde olabilir: <kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>',
|
||||
'help' => 'CSS seçicisi şu şekilde olabilir: <kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>',
|
||||
),
|
||||
'description' => 'Tanım',
|
||||
'empty' => 'Bu akış boş. Lütfen akışın aktif olduğuna emin olun.',
|
||||
@@ -201,6 +202,7 @@ return array(
|
||||
'no_selected' => 'Hiçbir akış seçilmedi.',
|
||||
'number_entries' => '%d makale',
|
||||
'open_feed' => '%s akışını aç',
|
||||
'path_entries_condition' => 'Condition for content retrieval', // TODO
|
||||
'priority' => array(
|
||||
'_' => 'Görünürlük',
|
||||
'archived' => 'Gösterme (arşivlenmiş)',
|
||||
|
||||
@@ -57,13 +57,14 @@ return array(
|
||||
'prepend' => '添加在现有内容前部',
|
||||
'replace' => '替换现有内容',
|
||||
),
|
||||
'content_retrieval' => 'Content retrieval', // TODO
|
||||
'css_cookie' => '获取原文时的 Cookies',
|
||||
'css_cookie_help' => '例:<kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>',
|
||||
'css_help' => '用于获取全文(注意,这将耗费更多时间!)',
|
||||
'css_path' => '原文的 CSS 选择器',
|
||||
'css_path_filter' => array(
|
||||
'_' => '需移除元素的 CSS 选择器',
|
||||
'help' => '可设置多个 CSS 选择器,例如:<kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>',
|
||||
'help' => '可设置多个 CSS 选择器,例如:<kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>',
|
||||
),
|
||||
'description' => '描述',
|
||||
'empty' => '此源为空。请确认它是否正常更新。',
|
||||
@@ -201,6 +202,7 @@ return array(
|
||||
'no_selected' => '未选择订阅源',
|
||||
'number_entries' => '%d 篇文章',
|
||||
'open_feed' => 'Open feed %s', // TODO
|
||||
'path_entries_condition' => 'Condition for content retrieval', // TODO
|
||||
'priority' => array(
|
||||
'_' => '可见性',
|
||||
'archived' => '不显示(归档)',
|
||||
|
||||
@@ -57,13 +57,14 @@ return array(
|
||||
'prepend' => '添加在現有內容前部',
|
||||
'replace' => '替換現有內容',
|
||||
),
|
||||
'content_retrieval' => 'Content retrieval', // TODO
|
||||
'css_cookie' => '獲取原文時的 Cookies',
|
||||
'css_cookie_help' => '例:<kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>',
|
||||
'css_help' => '用於獲取全文(注意,這將耗費更多時間!)',
|
||||
'css_path' => '原文的 CSS 選擇器',
|
||||
'css_path_filter' => array(
|
||||
'_' => '需移除元素的 CSS 選擇器',
|
||||
'help' => '可設置多個 CSS 選擇器,例如:<kbd>.footer, .aside, p[data-sanitized-class="menu"]</kbd>',
|
||||
'help' => '可設置多個 CSS 選擇器,例如:<kbd>.footer, .aside, p[data-sanitized-class~="menu"]</kbd>',
|
||||
),
|
||||
'description' => '描述',
|
||||
'empty' => '此源為空。請確認它是否正常更新。',
|
||||
@@ -201,6 +202,7 @@ return array(
|
||||
'no_selected' => '未選擇訂閱源',
|
||||
'number_entries' => '%d 篇文章',
|
||||
'open_feed' => 'Open feed %s', // TODO
|
||||
'path_entries_condition' => 'Condition for content retrieval', // TODO
|
||||
'priority' => array(
|
||||
'_' => '可見性',
|
||||
'archived' => '不顯示(歸檔)',
|
||||
|
||||
@@ -265,7 +265,8 @@
|
||||
<div class="form-group">
|
||||
<label class="group-name" for="filteractions_read"><?= _t('conf.reading.read.when') ?></label>
|
||||
<div class="group-controls">
|
||||
<textarea name="filteractions_read" id="filteractions_read" class="w100"><?php
|
||||
<textarea name="filteractions_read" id="filteractions_read" class="w100"
|
||||
placeholder="<?= _t('gen.short.blank_to_disable') ?>"><?php
|
||||
foreach ($this->feed->filtersAction('read') as $filterRead) {
|
||||
echo $filterRead->getRawInput(), PHP_EOL;
|
||||
}
|
||||
@@ -646,7 +647,7 @@
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend><?= _t('sub.feed.advanced') ?></legend>
|
||||
<legend><?= _t('sub.feed.content_retrieval') ?></legend>
|
||||
<div class="form-group">
|
||||
<label class="group-name" for="path_entries"><?= _t('sub.feed.css_path') ?></label>
|
||||
<div class="group-controls">
|
||||
@@ -660,6 +661,22 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="group-name" for="path_entries_condition"><?= _t('sub.feed.path_entries_condition') ?></label>
|
||||
<div class="group-controls">
|
||||
<textarea class="w100" id="path_entries_condition" name="path_entries_condition"
|
||||
rows="3" cols="64" spellcheck="false" placeholder="<?= _t('gen.short.blank_to_disable') ?>"><?php
|
||||
foreach ($this->feed->attributeArray('path_entries_condition') ?? [] as $condition) {
|
||||
echo htmlspecialchars($condition, ENT_NOQUOTES, 'UTF-8'), PHP_EOL;
|
||||
}
|
||||
?></textarea>
|
||||
<p class="help"><?= _i('help') ?> <?= _t('sub.feed.filteractions.help') ?></p>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend><?= _t('sub.feed.advanced') ?></legend>
|
||||
<div class="form-group">
|
||||
<?php
|
||||
$path_entries_filter = Minz_Helper::htmlspecialchars_utf8($this->feed->attributeString('path_entries_filter') ?? '');
|
||||
|
||||
Reference in New Issue
Block a user