This is the projects that what I want to do this summer.
-
The languages are:
Python 1521807738317066240
-
L'output invece sarà simile a questo:
Specifichiamo nel tag SVG
, che fa da contenitore all'intero file, la grandezza dell'immagine, la versione del linguaggio SVG
e il namespace del file che, anche se opzionale, aiuta a evitare conflitti tra nomi di file SVG
.
<svg width="1000" height="500" version="1.1" xmlns="http://www.w3.org/2000/svg">
Creiamo un tag <style>
dove saranno contenuti i CSS
dell'immagine.
<defs>
<style type="text/css">
rect{
fill: black;
}
.centered_text{
font-family: 'Inter', sans-serif;
dominant-baseline:middle;
text-anchor:middle;
inline-size: 500px;
overflow-wrap: break-word;
}
.like{
fill: white;
}
</style>
</defs>
Iniziamo a scrivere il corpo del programma che contiene tutti i testi e le immagini.
Per ora inseriamo l' username, lo screen-name, i likes e i retweet, ovviamente applicando a ognuno dei CSS
diversi in base al posizionamento, allo stile, etc; inoltre creiamo anche lo sfondo nero del tweet con un tag <rect>
.
<!--!body-->
<!--! BackGround -->
<rect width="1000" height="500" x="0" y="0"/>
<!--! Name -->
<text x="50%" y="29%" font-size="48" font-weight="bold" fill="#E7E9EA" class="centered_text">
Elon Musk
</text>
<!--! Screen_name -->
<text x="50%" y="35%" fill="#72777C" font-size="24" class="centered_text">
@elonmusk
</text>
<!--! Likes -->
<text x="10%" y="10%" fill="white" font-size="24" font-weight="bold" class="centered_text">
1110242
<tspan fill="#72777C" font-weight="normal">
Likes
</tspan>
</text>
<!--! Retweets -->
<text x="90%" y="10%" fill="white" font-size="24" font-weight="bold" class="centered_text">
121099
<tspan fill="#72777C" font-weight="normal">
Retweets
</tspan>
</text>
Il testo del tweet ha bisogno di un attenzione particolare poichè non è possibile mandare a capo automaticamente un testo in SVG
, quindi bisogna usare un tag <tspan>
che crea una sezione di testo che poi spostiamo una riga sotto attraverso le coordinate.
<!--! Tweet -->
<text x="50%" y="50%" font-size="36" fill="#E7E9EA" class="centered_text">
<tspan x="50%" dy="0em">
The far left hates everyone, themselves
</tspan>
<tspan x="50%" dy="1.2em">
included!
</tspan>
</text>
Creiamo l'immagine del cuore per il like attraverso un tag <path>
che crea una forma seguendo delle istruzioni di movimento; inoltre inseriamo la forma all'interno di un contenitore col tag <g>
.
A questo punto spostiamo il contenitore al centro della pagina e lo scaliamo a una dimensione adatta con l'attributo: transform="translate(500 460) scale(0.50 0.50)"
; applichiamo anche l'attributo transform="translate(-50 -50)"
direttamente alla forma per portarla al centro del contenitore.
<g transform="translate(500 460) scale(0.50 0.50)">
<path transform="translate(-50 -50)" class="like" d="M92.71,7.27L92.71,7.27c-9.71-9.69-25.46-9.69-35.18,0L50,14.79l-7.54-7.52C32.75-2.42,17-2.42,7.29,7.27v0 c-9.71,9.69-9.71,25.41,0,35.1L50,85l42.71-42.63C102.43,32.68,102.43,16.96,92.71,7.27z">
</path>
</g>
Aggiungiamo l'animazione del colore del cuore col tag <animate>
e lo applichiamo al tag <path>
. . .
<g transform="translate(500 460) scale(0.50 0.50)">
<path transform="translate(-50 -50)" class="like" d="M92.71,7.27L92.71,7.27c-9.71-9.69-25.46-9.69-35.18,0L50,14.79l-7.54-7.52C32.75-2.42,17-2.42,7.29,7.27v0 c-9.71,9.69-9.71,25.41,0,35.1L50,85l42.71-42.63C102.43,32.68,102.43,16.96,92.71,7.27z">
<animate
attributeName="fill"
values="white;red;red"
dur="0.5s"
repeatCount="1"
begin="click"
fill="freeze"
/>
</path>
</g>
. . . mentre per l'animazione della dimensione utilizziamo il tag </animateTransform>
nel tag <g>
<g transform="translate(500 460) scale(0.50 0.50)">
<path transform="translate(-50 -50)" class="like" d="M92.71,7.27L92.71,7.27c-9.71-9.69-25.46-9.69-35.18,0L50,14.79l-7.54-7.52C32.75-2.42,17-2.42,7.29,7.27v0 c-9.71,9.69-9.71,25.41,0,35.1L50,85l42.71-42.63C102.43,32.68,102.43,16.96,92.71,7.27z">
<animate
attributeName="fill"
values="white;red;red"
dur="0.5s"
repeatCount="1"
begin="click"
fill="freeze"
/>
</path>
<animateTransform
attributeName="transform"
type="scale"
values="1;1.25;1;1;1"
dur="0.5s"
repeatCount="1"
additive="sum"
begin="click"
/>
</g>
Infine creiamo l'immagine del profilo dell'utente, tuttavia per questo progetto ci serve un immagine circolare anche se quella fornita da twitter è spesso quadrata, per questo usiamo il tag <clipPath>
che crea una forma che andrà a tagliare in modo corretto l'immagine del profilo.
<!--! PFP -->
<circle cx="500" cy="60" r="50" fill="gray" />
<clipPath id="clipCircle">
<circle r="50" cx="500" cy="60"/>
</clipPath>
<image href="http://pbs.twimg.com/profile_images/1503591435324563456/foUrqiEw_normal.jpg" height="100" width="100" x="450" y="10" clip-path="url(#clipCircle)" />
</svg>
Il file CSV
viene generato dal programma Python
, è un formato di file estremamente chiaro e semplice, creato per raccogliere in modo ordinato dei dati:
data_creazione¬Fri Apr 29 12:28:10 +0000 2022
testo_completo¬The far left hates everyone, themselves included!
hashtags¬[]
symbols¬[]
user_mentions¬[]
client¬"<a href=""http://twitter.com/download/iphone"" rel=""nofollow"">Twitter for iPhone</a>"
nome¬Elon Musk
screen_nome¬elonmusk
verified¬True
profile_image_url¬http://pbs.twimg.com/profile_images/1503591435324563456/foUrqiEw_normal.jpg
numero_retweet¬121099
numero_like¬1110242
In questo esempio è usato come separatore tra i dati il carattere '¬' in modo da non incontrare problemi con la virgola (simbolo standard per la separazione dei campi).
Nel caso sia necessario dell'supporto potete contattarci attraverso questi link:
Badge | Link o Contatto |
---|---|
[Invito](<placeholder | |
Profilo | |
Profilo |
Collaborazione al progetto: TODO:
GitHub o Nome | Profilo |
---|---|
Znaidi Rayan | rznaidi@fermimn.edu.it |
Bini Matteo | mail@matteobini.me , binim@fermimn.edu.it |
Tardiani Simone | stardiani@fermimn.edu.it |