Get Wikipedia page paragraph from API - wikipedia-api

How to get paragraph page from Wikipedia API ?
For instance, I'd like to get the following paragraph:
https://fr.wikipedia.org/wiki/Douarnenez#Urbanisme
I'm only able to get the entire page with:
https://fr.wikipedia.org/w/api.php?action=query&format=json&prop=revisions&titles=Douarnenez&formatversion=2&rvprop=content&rvslots=*

Credits: answer to: How to get a text of a specific section via wikipedia api - by Florian
I followed these steps in order to get the information you need.
First, get the index of the section you want to get - for that, use this endpoint for get the sections of the wiki page:
https://fr.wikipedia.org/w/api.php?action=parse&format=json&page=Douarnenez&prop=sections
Here is the API sandbox link you can try out.
In your specific case, I believe it's index=10:
{
"toclevel": 2,
"level": 3,
"line": "Typologie",
"number": "3.1",
"index": "10",
"fromtitle": "Douarnenez",
"byteoffset": 18641,
"anchor": "Typologie"
}
Then, use this next endpoint for get the text in the given section:
https://fr.wikipedia.org/w/api.php?action=parse&format=json&page=Douarnenez&prop=wikitext&section=10&disabletoc=1&utf8=1
The result is as follows - here is the link of the API sandbox:
{
"parse": {
"title": "Douarnenez",
"pageid": 4596068,
"wikitext": {
"*": "=== Typologie ===\nDouarnenez est une commune urbaine, car elle fait partie des communes denses ou de densité intermédiaire, au sens de la grille communale de densité de l'[[Institut national de la statistique et des études économiques|Insee]]<ref group=Note>Selon le zonage des communes rurales et urbaines publié en novembre 2020, en application de la nouvelle définition de la ruralité validée le {{date-|14 novembre 2020}} en comité interministériel des ruralités.</ref>{{,}}<ref >{{Lien web |url=https://www.observatoire-des-territoires.gouv.fr/typologie-urbain-rural |titre=Typologie urbain / rural |site=observatoire-des-territoires.gouv.fr |consulté le= 26 mars 2021}}.</ref>{{,}}<ref >{{Lien web |url=https://www.insee.fr/fr/metadonnees/definition/c1472|titre=Commune urbaine - définition |site=Insee.fr|consulté le= 26 mars 2021}}.</ref>{{,}}<ref >{{Lien web |url= https://www.observatoire-des-territoires.gouv.fr/methodes/comprendre-la-grille-de-densite|titre= Comprendre la grille de densité|site=observatoire-des-territoires.gouv.fr |consulté le= 26 mars 2021}}.</ref>. \nElle appartient à l'[[unité urbaine]] de Douarnenez, une unité urbaine monocommunale<ref>{{Lien web|url=https://www.insee.fr/fr/metadonnees/cog/unite-urbaine/UU202029306-douarnenez |titre=Unité urbaine 2020 de Douarnenez|site=insee.fr|consulté le= 26 mars 2021}}.</ref> de {{Unité|13902|habitants}} en 2017, constituant une ville isolée<ref name=\"UU2020\">{{Lien web|url=https://www.insee.fr/fr/information/4802589 |titre=Base des unités urbaines 2020 |date=21 octobre 2020|site=insee.fr |consulté le= 26 mars 2021}}.</ref>{{,}}<ref name=\"UU20202b\">{{Lien web|url=https://www.insee.fr/fr/statistiques/4806684 |titre=Toujours plus d’habitants dans les unités urbaines |auteur=Vianney Costemalle |date=21 octobre 2020 |site=insee.fr |consulté le= 26 mars 2021}}.</ref>."
}
}
}

You can use Regex to filter out your paragraph. That's not beautiful, but works.
For example:
((?<=== Urbanisme ==).*?(?=\\n== ))
This selects everything starting behind the headline of the Urbanism paragraph and ending before the next paragraph headline. See: https://regex101.com/r/LlGSay/1

Related

add columns in a CDS view and fill it with a condition

I have been trying for several days, in a cds view, to convert a row of the acdoca table (here the amount of a debit/credit transaction, the hsl attribute in acdoca), into two columns debit and credit.
The amount of a transaction would go into a column depending on the type of debit/credit (attribute drcrk in acdoca which returns H for a debit or S for a credit). Is there a solution to my problem or a doc accessible to a beginner to solve this problem
(PS I don't know ABAP so if you have a solution using it is it possible to describe where and how to integrate it to Eclipse).
I tried to declare a direct attribute in the view, to alter the view, but all this does not work. I have been told about the possibility of using a functional table, which seems to work, but I can't structure it correctly just in the typing of my tables.
I can pass my view if necessary.
define view Z_test_dc as select from acdoca
inner join bseg on acdoca.rbukrs = bseg.bukrs
and bseg.belnr = acdoca.belnr
and bseg.gjahr = acdoca.gjahr
and bseg.buzei = acdoca.buzei
left outer join but000 on but000.partner = acdoca.kunnr
left outer join t003t on t003t.blart = acdoca.blart
{
key acdoca.rbukrs, //Société
key acdoca.gjahr, //Exercice comptable
key acdoca.belnr, //Numéro de pièce comptable
key acdoca.racct, //Numéro de compte
key acdoca.docln, //Ligne d'écriture à six caractères pour ledger
acdoca.kunnr, //Client
acdoca.fiscyearper, //Période/exercice
acdoca.augbl, //Nº pièce rapprochement
acdoca.bldat, //Date de la pièce
acdoca.budat, //Date comptable du document
acdoca.blart, //Type de pièce
t003t.ltext, //Description type de pièce
acdoca.hsl, //Montant en devise société
acdoca.rhcur, //Devise société
acdoca.netdt, //Date echéance nette
bseg.madat, //Data de la dernière relance
bseg.mansp, //Blocage relance
bseg.manst, //Niveau de relance
bseg.zterm, //Conditions de paiement
but000.bu_group, //le regroupement du client
bseg.valut, //Date valeur delais
bseg.sgtxt, //Texte descriptif postes
acdoca.drcrk //type debit/credit (return H ou S)
}
...
I didn't think it was possible, because I had thought that an alias as just a renamed of my column, but with the right syntax the box works fine here is the code I rendered thanks for your help.
define view VIEW as select from acdoca
inner join bseg on acdoca.rbukrs = bseg.bukrs
and bseg.belnr = acdoca.belnr
and bseg.gjahr = acdoca.gjahr
and bseg.buzei = acdoca.buzei
left outer join but000 on but000.partner = acdoca.kunnr
left outer join t003t on t003t.blart = acdoca.blart {
key acdoca.rbukrs, //Société
key acdoca.gjahr, //Exercice comptable
key acdoca.belnr, //Numéro de pièce comptable
key acdoca.racct, //Numéro de compte
key acdoca.docln, //Ligne d'écriture à six caractères pour ledger
acdoca.kunnr, //Client
acdoca.fiscyearper, //Période/exercice
acdoca.augbl, //Nº pièce rapprochement
acdoca.bldat, //Date de la pièce
acdoca.budat, //Date comptable du document
acdoca.blart, //Type de pièce
t003t.ltext, //Description type de pièce
acdoca.hsl, //Montant en devise société
acdoca.rhcur, //Devise société
acdoca.netdt, //Date echéance nette
bseg.madat, //Data de la dernière relance
bseg.mansp, //Blocage relance
bseg.manst, //Niveau de relance
bseg.zterm, //Conditions de paiement
but000.bu_group, //le regroupement du client
bseg.valut, //Date valeur delais
bseg.sgtxt, //Texte descriptif postes
acdoca.drcrk, //type debit/credit (return H ou S)
case acdoca.drcrk when 'H' then acdoca.hsl else 0 end as debit,
case acdoca.drcrk when 'S' then acdoca.hsl else 0 end as credit
}'

How to put my text after the content products?

So i have a ecommerce, and i'm writing a text to optimize the SEO, but I need the text must be align AFTER the products content and not before. It is a Simples CSS script?
This is the page: https://letsfitsp.com.br/comprar-marmitas-congeladas-sp
and this is the HTML text:
<p> </p>
<p><meta charset="utf-8" /></p>
<h1 dir="ltr"><b id="docs-internal-guid-f48b1604-7fff-3fb9-2913-5d5967828808">As Marmitas Congeladas SP Let’s Fit: Alto Padrão de Qualidade</b></h1>
<p dir="ltr"><b id="docs-internal-guid-f48b1604-7fff-3fb9-2913-5d5967828808">Sabemos, o que você busca é ter opções e variações de marmitas congeladas SP, não é? Aqui na Let’s Fit te entregamos sabor, com qualidade elevada e muitas escolhas diversificadas de comida congelada em São Paulo.</b></p>
<p> </p>
<h2 dir="ltr"><b id="docs-internal-guid-f48b1604-7fff-3fb9-2913-5d5967828808">Alimentos Fitness e melhores marmitas congeladas SP e Grande São Paulo | Só na Let’s Fit</b></h2>
<p dir="ltr"><b id="docs-internal-guid-f48b1604-7fff-3fb9-2913-5d5967828808">Todos nós temos ciência da importância da boa nutrição e como ela se faz importante para nosso condicionamento físico e saúde como um todo. Uma rotina com equilíbrio nos fortalece para enfrentar nossa cansativa e pesada rotina.</b></p>
CSS is a factor of SEO rank, but more in terms of legibility. For example a small font or hidden content would not positively impact SEO score. HTML which uses semantic elements such as <main> is more consumable to a spider crawl (regardless of order). Developers use tools such as Lighthouse to find reports. Often you may find it best to craft a canonical document to provide for page rank, which could be done with a plugin such as Yoast.

Prestashop bring cart content to the front page

I want to remove cart button and display the added items to the cart in the top of the page. So it's always visible
So far I have no luck of finding the function I need to override. tried searching in ps_shoppingcart.php
maybe someone knows exactly what should I do to accomplish this mission.
Pour retirer le bouton du panier il faut "décrocher" le hook du bouton du panier dans "Apparence > Positions"
Pour la liste des articles, le plus simple serait de créer un petit module qui prendrait en charge un hook pour "s'accrocher" a la place du bouton du panier, et qui listerait les elements du panier (avec un foreach par exemple)

import string from a js file in nativescript-vue app

I have in a db folder a db.js file where i want to store long text to include in my app :
const db = {
sodiumlaurylsulfate: "Essentiellement exploité comme tensioactif (qui permet aux corps gras de la formule de se disperser dans l’eau), le sodium lauryl sulfate est un irritant bien connu, les scientifiques le savent depuis des décennies. Il n’est qu’à compulser leurs publications pour s’en convaincre : ici on le désigne comme « l’irritant standard », là, on introduit le propos par « le sodium lauryl sulfate (SLS), un tensioactif fréquemment utilisé pour induire expérimentalement des dermatites de contact »… Cet ingrédient est malgré tout présent dans un très grand nombre de références. Mais ce sont le plus souvent des produits rincés, les doses ne sont pas forcément très élevées et certains consommateurs le supportent bien. Chez d’autres, en revanche, les produits lavants laissent la peau inconfortable (attention en particulier avec les produits pour enfants et ceux destinés aux zones intimes) et les dentifrices provoquent des aphtes. A noter que le sodium laureth sulfate est nettement moins irritant."
}
module.exports = {db};
and in my template i call it like that :
<template>
<StackLayout>
<TextView :text="db.sodiumlaurylsulfate"></TextView>
</StackLayout>
</template>
<script>
import { db } from "../db/db.js";
export default {
mounted() {
console.log(db.sodiumlaurylsulfate) // this works !
}
}
</script>
when i log my text on mounted it works but it makes an error in the TextView component.
System.err: com.tns.NativeScriptException:
System.err: Calling js method getView failed
System.err: TypeError: Cannot read property 'sodiumlaurylsulfate' of
undefined
System.err: File: "<unknown>, line: 3, column: 1489
System.err: StackTrace:
it seems im doing something in a bad way here.
Properties in templates are evaluated against component state, not its lexical scope. Assign db to be a property of state (in data() section), and it should work:
import { db } from "../db/db.js";
export default {
data() {
return { db }
},
mounted() {
console.log(this.db.sodiumlaurylsulfate); // should work too
}
}

SQL • Result of join in an array

Good evening,
Here is my problem: I make a select query on my table PROJECT to select (for now) my only test project. I do a join on the table to retrieve screenshots SCREENSHOT associated with it. Only he will get out as many results as there are screenshots! Ie here 5.
Could I go back to more data (name, datesortie, description, etc.) an associative array urls screenshots?
Or would you have a solution to simplify my life? Because the only solution I see is treating it directly in php.
Here is my query:
SELECT P.nom, datesortie, description, lien, icone, tag, S.url
FROM PROJET P
LEFT JOIN CLIENT C
ON C.idclient = P.idclient
LEFT JOIN SCREENSHOT S
ON S.idprojet = P.idprojet
ORDER BY P.nom
Here is what is returned (Sorry, my var_dump shows me that online ... I do not understand why):
array(7) { ["nom"]=> string(10) "BlackStars" ["datesortie"]=> string(10) "2012-07-02" ["description"]=> string(498) "Inspiré par Little Stars for Little Wars, Black Stars se veut être meilleur par bien des aspects. Prenez le contrôle d'une planète et partez à la conquête de l'univers en remportant chacune des batailles, en brisant chacune des planètes ennemies, en devenant le meilleur joueur. Car une fois le mode solo terminé, un mode multi-joueurs (Bluetooth ou Game Center) vous attend afin de vous mesurer au monde entier. Hissez-vous en haut du classement et devenez le maître incontesté de Black Stars. " ["lien"]=> string(69) "http://itunes.apple.com/us/app/black-stars/id512945753?l=fr&ls=1&mt=8" ["icone"]=> string(131) "http://a1775.phobos.apple.com/us/r30/Purple/v4/73/47/b7/7347b764-cff9-c52b-78da-42560a187acf/mza_1097997557772736292.170x170-75.png" ["tag"]=> string(10) "blackstars" ["url"]=> string(119) "http://a1352.phobos.apple.com/us/r30/Purple/v4/51/df/f5/51dff56b-08c6-59db-81df-80a174ec0050/mza_509496145749890361.png" }
===================================================
===================================================
array(7) { ["nom"]=> string(10) "BlackStars" ["datesortie"]=> string(10) "2012-07-02" ["description"]=> string(498) "Inspiré par Little Stars for Little Wars, Black Stars se veut être meilleur par bien des aspects. Prenez le contrôle d'une planète et partez à la conquête de l'univers en remportant chacune des batailles, en brisant chacune des planètes ennemies, en devenant le meilleur joueur. Car une fois le mode solo terminé, un mode multi-joueurs (Bluetooth ou Game Center) vous attend afin de vous mesurer au monde entier. Hissez-vous en haut du classement et devenez le maître incontesté de Black Stars. " ["lien"]=> string(69) "http://itunes.apple.com/us/app/black-stars/id512945753?l=fr&ls=1&mt=8" ["icone"]=> string(131) "http://a1775.phobos.apple.com/us/r30/Purple/v4/73/47/b7/7347b764-cff9-c52b-78da-42560a187acf/mza_1097997557772736292.170x170-75.png" ["tag"]=> string(10) "blackstars" ["url"]=> string(119) "http://a572.phobos.apple.com/us/r30/Purple/v4/db/1d/1d/db1d1d00-3a28-8b6f-d52f-342bf5893912/mza_3642427234916705950.png" }
===================================================
===================================================
array(7) { ["nom"]=> string(10) "BlackStars" ["datesortie"]=> string(10) "2012-07-02" ["description"]=> string(498) "Inspiré par Little Stars for Little Wars, Black Stars se veut être meilleur par bien des aspects. Prenez le contrôle d'une planète et partez à la conquête de l'univers en remportant chacune des batailles, en brisant chacune des planètes ennemies, en devenant le meilleur joueur. Car une fois le mode solo terminé, un mode multi-joueurs (Bluetooth ou Game Center) vous attend afin de vous mesurer au monde entier. Hissez-vous en haut du classement et devenez le maître incontesté de Black Stars. " ["lien"]=> string(69) "http://itunes.apple.com/us/app/black-stars/id512945753?l=fr&ls=1&mt=8" ["icone"]=> string(131) "http://a1775.phobos.apple.com/us/r30/Purple/v4/73/47/b7/7347b764-cff9-c52b-78da-42560a187acf/mza_1097997557772736292.170x170-75.png" ["tag"]=> string(10) "blackstars" ["url"]=> string(120) "http://a1701.phobos.apple.com/us/r30/Purple/v4/60/5f/ae/605fae3e-f00b-c3b7-0f65-ca73f6fd9864/mza_4565911160744621776.png" }
===================================================
===================================================
array(7) { ["nom"]=> string(10) "BlackStars" ["datesortie"]=> string(10) "2012-07-02" ["description"]=> string(498) "Inspiré par Little Stars for Little Wars, Black Stars se veut être meilleur par bien des aspects. Prenez le contrôle d'une planète et partez à la conquête de l'univers en remportant chacune des batailles, en brisant chacune des planètes ennemies, en devenant le meilleur joueur. Car une fois le mode solo terminé, un mode multi-joueurs (Bluetooth ou Game Center) vous attend afin de vous mesurer au monde entier. Hissez-vous en haut du classement et devenez le maître incontesté de Black Stars. " ["lien"]=> string(69) "http://itunes.apple.com/us/app/black-stars/id512945753?l=fr&ls=1&mt=8" ["icone"]=> string(131) "http://a1775.phobos.apple.com/us/r30/Purple/v4/73/47/b7/7347b764-cff9-c52b-78da-42560a187acf/mza_1097997557772736292.170x170-75.png" ["tag"]=> string(10) "blackstars" ["url"]=> string(119) "http://a193.phobos.apple.com/us/r30/Purple/v4/7c/ff/67/7cff67dc-d679-16ee-24cf-7f658c78b9c8/mza_8709328453215958742.png" }
===================================================
===================================================
array(7) { ["nom"]=> string(10) "BlackStars" ["datesortie"]=> string(10) "2012-07-02" ["description"]=> string(498) "Inspiré par Little Stars for Little Wars, Black Stars se veut être meilleur par bien des aspects. Prenez le contrôle d'une planète et partez à la conquête de l'univers en remportant chacune des batailles, en brisant chacune des planètes ennemies, en devenant le meilleur joueur. Car une fois le mode solo terminé, un mode multi-joueurs (Bluetooth ou Game Center) vous attend afin de vous mesurer au monde entier. Hissez-vous en haut du classement et devenez le maître incontesté de Black Stars. " ["lien"]=> string(69) "http://itunes.apple.com/us/app/black-stars/id512945753?l=fr&ls=1&mt=8" ["icone"]=> string(131) "http://a1775.phobos.apple.com/us/r30/Purple/v4/73/47/b7/7347b764-cff9-c52b-78da-42560a187acf/mza_1097997557772736292.170x170-75.png" ["tag"]=> string(10) "blackstars" ["url"]=> string(120) "http://a1443.phobos.apple.com/us/r30/Purple/v4/d7/13/8f/d7138f62-6398-7993-8d0b-23e0ce16dca2/mza_8316005873463209973.png" }
===================================================
===================================================
Thank you in advance for your help.
Cordially.
From what I gather, you just don't want all that repeating information in the first 6 fields?
Normally, accepting the repeating information is the way to go about it. But, you could pull back two record sets. Provided that they're neatly ordered you can do a nested loop to process them.
SELECT P.nom, datesortie, description, lien, icone, tag, idproject
FROM PROJET P
LEFT JOIN CLIENT C
ON C.idclient = P.idclient
LEFT JOIN SCREENSHOT S
ON S.idprojet = P.idprojet
ORDER BY P.nom
SELECT P.idproject S.url
FROM PROJET P
INNER JOIN SCREENSHOT S
ON S.idprojet = P.idprojet
ORDER BY P.nom
Note: The first query now also has the idproject field, which is also present in the second record set. The second record set is also ordered by P.nom, even though it's not selected in the statement; this just ensures that you can do a simple nested loop.
A simplifies pseudo-code could be...
FOR EACH nom IN recordSet1
WHILE recordSet1.idProject = recordSet2.idProject
Do something with the URL
Move to next record in recordSet2
LOOP
LOOP
What I would not do
Another option is to concatenate all of the URLs together into a single string. Perhaps separated by commas to make a CSV field.
But then the existence of a comma in the url will break that. So you probably then want to use XML or something; with added costs to generate and parse.
Unless the network overhead of the repeated fields is actually causing a problem, I would stick to that. And if it is causing a problem, the two-record-set alternative is more robust and relatively simple.