<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Giuseppe Frau</title>
    <description>The latest articles on DEV Community by Giuseppe Frau (@gluseppe).</description>
    <link>https://dev.to/gluseppe</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F14944%2F9ad81165-1ea1-4996-a54e-7e8ceca7676f.jpg</url>
      <title>DEV Community: Giuseppe Frau</title>
      <link>https://dev.to/gluseppe</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gluseppe"/>
    <language>en</language>
    <item>
      <title>Healify - Healing songs (part2) - Interacting with spotify apis with python and flask</title>
      <dc:creator>Giuseppe Frau</dc:creator>
      <pubDate>Sun, 04 Nov 2018 16:55:52 +0000</pubDate>
      <link>https://dev.to/gluseppe/healify---healing-songs-part2---interacting-with-spotify-apis-with-python-and-flask-14m1</link>
      <guid>https://dev.to/gluseppe/healify---healing-songs-part2---interacting-with-spotify-apis-with-python-and-flask-14m1</guid>
      <description>&lt;p&gt;Hi there :)&lt;br&gt;
This is the second part of my diary about healify.it the side project I'm using to collect healing songs. Before diving into the technical stuff I'd like to spend some words to thank all the people who, after reading the &lt;a href="https://dev.to/gluseppe/healing-songs-healing-code-how-im-using-my-side-project-to-heal-part1-46n9"&gt;first post&lt;/a&gt;, dedicated some time to send a song and leave a message. Thank you. At the moment there are 92 songs in the playlist (by the way, I've added a simple counter to show how many entries there are in the list, I'm quite proud of it, so go check it out on &lt;a href="https://healify.it" rel="noopener noreferrer"&gt;healify.it&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;So, this part is about setting up a basic flask app in python and interacting with the spotify apis.&lt;br&gt;
For those who don't know it, flask is a "is a microframework for Python based on Werkzeug, Jinja 2 and good intentions" :) You can use it for building REST apis in python. What I love about flask is how easy is to build and expose your functions. It's very well documented with good examples, and if you look at their website you find the code for simplest app. You first install it through pip and then&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;flask&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Flask&lt;/span&gt;
&lt;span class="n"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Flask&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;__name__&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nd"&gt;@app.route&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;hello&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Hello World!&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is saying&lt;br&gt;
1- create a flask app (a flask app will come with a lot of useful methods and objects for dealing with the requests)&lt;br&gt;
2- I want my app to answer "Hello world" when the "/" route is reached. You can use any name for the function following the @app.route decorator&lt;/p&gt;

&lt;p&gt;Now, to see the result on your dev environment, you can directly run your python code and flask will setup a local server for you&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;FLASK_APP&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;hello.py flask run
 &lt;span class="k"&gt;*&lt;/span&gt; Running on http://localhost:5000/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That launches a simple built-in server, and you should only use it for testing/dev purposes. You can of course use a different way, for example to run my application I usually have a two lines bash script using gunicorn like this (config.sh contains my port and app_name but also other variables I use in the production environment)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash -&lt;/span&gt;
&lt;span class="nb"&gt;source &lt;/span&gt;config.sh
gunicorn &lt;span class="nt"&gt;-b&lt;/span&gt; 127.0.0.1:&lt;span class="nv"&gt;$port&lt;/span&gt; &lt;span class="nv"&gt;$app_name&lt;/span&gt;:app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can find more details about &lt;a href="http://flask.pocoo.org/docs/1.0/quickstart/#a-minimal-application" rel="noopener noreferrer"&gt;building a minimal application here&lt;/a&gt; and about &lt;a href="http://flask.pocoo.org/docs/1.0/deploying/#deployment" rel="noopener noreferrer"&gt;deploying options here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's move forward. Our goal was to have our code to interact with the spotify apis. In particular we want to interact with the search node and build a very simple engine for the autocomplete part (the way I've implemented on &lt;a href="https://healify.it" rel="noopener noreferrer"&gt;healify&lt;/a&gt; it's probably not the best one).&lt;br&gt;
Spotify offers a rich set of api functionalities. Start to explore them &lt;a href="https://developer.spotify.com/documentation/web-api/" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;br&gt;
You can login using your existing spotify account, and then you will need to create a client id for your application through their nice dashboard. This will give you a client ID and a client secret necessary for authenticating your requests from your app.&lt;/p&gt;

&lt;p&gt;The general flow for interacting with spotify is the following&lt;br&gt;
1 - authenticate yourself and get a token: you will use the token for the following requests. Depending on what you want to do next you will need different kind of authorization (reading libraries, editing playlists etc). In our case we need the lowest level as we won't access any user data&lt;br&gt;
2 - send the request to the specific node and get the data&lt;/p&gt;

&lt;p&gt;Our node is the &lt;a href="https://developer.spotify.com/documentation/web-api/reference/search/search/" rel="noopener noreferrer"&gt;search node&lt;/a&gt;, allowing you to search for tracks, albums, artists, playlist. For that we will need&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the token&lt;/li&gt;
&lt;li&gt;the query&lt;/li&gt;
&lt;li&gt;the type of desired results (tracks in our case)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So first of all, I've written a simple function for the authentication that returns you the code&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;spotify_authenticate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;spotify_client_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;spotify_client_sectret&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;grant_type&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;client_credentials&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;https://accounts.spotify.com/api/token&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
    &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;auth&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;spotify_client_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;spotify_client_secret&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;access_token&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then I've created a backend-search branch in my flask app like this. It should be quite straight forward. It gets the token through the previous function an then after constructing headers and parameters, it uses the requests python package to send a GET to the api node&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nd"&gt;@app.route&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;/backend-search&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;methods&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GET&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;search&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;token&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;spotify_authenticate&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;search_url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;https://api.spotify.com/v1/search&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
    &lt;span class="c1"&gt;#i know i shouldnt be doing this
&lt;/span&gt;    &lt;span class="n"&gt;search_txt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;search_text&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;''&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;search_txt&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;''&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;search_txt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;search_text&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;''&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Accept&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;application/json&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Content-Type&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;application/json&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Authorization&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Bearer {}&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;token&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="n"&gt;params&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;q&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;{}*&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;search_txt&lt;/span&gt;&lt;span class="p"&gt;)),&lt;/span&gt;
        &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;track&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;limit&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;search_url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It was fun to look inside the response object. It really contains a lot of information about the tracks and it is very easy to understand.&lt;br&gt;
Give it a try and have a litte fun playing with it.&lt;br&gt;
To test my code I've used my local server and the &lt;a href="https://www.getpostman.com/" rel="noopener noreferrer"&gt;Postman&lt;/a&gt; utility to inspect the results.&lt;/p&gt;

&lt;p&gt;That's all for this part. Next one will be about building the page with semantic-ui and sending our requests through some simple javascript.&lt;/p&gt;

&lt;p&gt;Stay tuned and do not forget to add some songs in the &lt;a href="https://healify.it" rel="noopener noreferrer"&gt;healify playlist&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;thank you&lt;/p&gt;

</description>
      <category>python</category>
      <category>healify</category>
      <category>flask</category>
      <category>spotify</category>
    </item>
    <item>
      <title>Healing songs, healing code. How I'm using my side project to heal (part1)</title>
      <dc:creator>Giuseppe Frau</dc:creator>
      <pubDate>Fri, 26 Oct 2018 18:47:05 +0000</pubDate>
      <link>https://dev.to/gluseppe/healing-songs-healing-code-how-im-using-my-side-project-to-heal-part1-46n9</link>
      <guid>https://dev.to/gluseppe/healing-songs-healing-code-how-im-using-my-side-project-to-heal-part1-46n9</guid>
      <description>&lt;p&gt;Last month was a bad month. I won't get in the details of it, but it was a bad month. I talked about it with one of my friends and the day after I got a message from him&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Hey man, here's one of the songs that makes you feel good"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Thank you Fabio. He was right. Ok, it didn't last long, but I felt better for a while. I strongly believe in the healing properties of music (and of coding ;) )&lt;br&gt;
&lt;a href="https://open.spotify.com/track/3zcYin7vFTtrjBFQN4yP1J?si=vSglktL-TGSCf8LPJ-JQ7A"&gt;He sent me this song&lt;/a&gt; if you're interested. Do not ask me why it worked. It just worked. But I wanted more.&lt;/p&gt;

&lt;p&gt;So I thought&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I should get more of these songs"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I wanted to gather as many healing songs as I could. And I didn't want to receive them by iMessage or Whatsapp of course. I wanted potentially anyone to be allowed to reach me and send me one of these songs and then share the playlist with everyone.&lt;/p&gt;

&lt;p&gt;So, I opened vs-code, created a new project with the aim of having the simplest code for&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;looking for a song in the spotify catalogue&lt;/li&gt;
&lt;li&gt;storing the chosen ones, maybe with a message attached&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As I'm mainly using Python now, I've set up my project as following&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;it uses Flask for exposing the search functionality and a branch for receiving the chosen song&lt;/li&gt;
&lt;li&gt;it uses pandas for loading and writing the list on a .csv file&lt;/li&gt;
&lt;li&gt;it uses semantic-ui and a simple .js file to handle the front-end part: a sort of autocomplete form and a thank you message in case you send a song&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After the first night of coding I was able to use a local server to interact with the spotify APIs and get track results out of a query string. This was healing me already. I knew it was just a small step in a tiny project but it was working. It is working. How all this continued will be in the next parts of this "diary". Next part will be about setting up flask and interacting with spotify apis in python.&lt;/p&gt;

&lt;p&gt;In the meantime, if you want, you can already send me your healing songs here :)&lt;br&gt;
&lt;a href="https://healify.it"&gt;https://healify.it&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;and send me your comments here to improve the page&lt;br&gt;
thank you &amp;lt;3&lt;/p&gt;

</description>
      <category>python</category>
      <category>healify</category>
      <category>music</category>
      <category>spotify</category>
    </item>
  </channel>
</rss>
