From ce65a0316c978a22dcb07e709cb471aa8ef9ec4a Mon Sep 17 00:00:00 2001 From: "[Luis Rodrigues]" Date: Tue, 21 May 2024 11:19:36 +0100 Subject: [PATCH] =?UTF-8?q?adicionar=20apenas=20entradas=20da=20resposta?= =?UTF-8?q?=20que=20n=C3=A3o=20est=C3=A3o=20presentes=20no=20ficheiro=20CS?= =?UTF-8?q?V?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- historico_precos.csv | 229 ++++++++++++++++++++++++++++++++++++++----- portfolio.py | 32 +++--- 2 files changed, 225 insertions(+), 36 deletions(-) diff --git a/historico_precos.csv b/historico_precos.csv index 61dbcd2..7d90367 100644 --- a/historico_precos.csv +++ b/historico_precos.csv @@ -1,28 +1,4 @@ data_unix,criptomoeda,vs_currency,preco_abertura,preco_maximo,preco_minimo,preco_fecho -1713355200000,bitcoin,eur,59764.004,59780.489,59063.235,59074.252 -1713369600000,bitcoin,eur,58918.27,59133.883,56552.395,56864.602 -1713384000000,bitcoin,eur,56822.322,57997.435,56402.343,57301.294 -1713398400000,bitcoin,eur,57282.049,57820.207,56972.026,57478.363 -1713412800000,bitcoin,eur,57429.02,58262.439,57209.276,58048.276 -1713427200000,bitcoin,eur,58060.628,58122.991,56936.61,57311.959 -1713441600000,bitcoin,eur,57285.932,58979.922,57067.387,58756.027 -1713456000000,bitcoin,eur,58669.332,60049.857,57911.636,59717.552 -1713470400000,bitcoin,eur,59598.34,59898.385,58608.058,59560.426 -1713484800000,bitcoin,eur,59717.912,59918.23,59434.539,59623.562 -1713499200000,bitcoin,eur,59681.227,59681.227,56519.13,58162.602 -1713513600000,bitcoin,eur,58064.108,61045.359,58064.108,60554.231 -1713528000000,bitcoin,eur,60616.231,61393.969,60339.227,60977.394 -1713542400000,bitcoin,eur,60971.085,61311.245,59827.192,60495.172 -1713556800000,bitcoin,eur,60509.69,60772.588,59802.064,60367.297 -1713571200000,bitcoin,eur,60395.123,60524.011,59237.423,60012.937 -1713585600000,bitcoin,eur,59874.011,60074.088,59301.122,59936.202 -1713600000000,bitcoin,eur,59993.471,60266.905,59917.963,60000.677 -1713614400000,bitcoin,eur,59988.613,59988.613,59466.549,59836.851 -1713628800000,bitcoin,eur,59761.551,60955.354,59691.987,60755.668 -1713643200000,bitcoin,eur,60781.259,61314.618,60562.13,60805.715 -1713657600000,bitcoin,eur,60901.527,60923.55,60592.348,60862.269 -1713672000000,bitcoin,eur,60938.556,61593.293,60629.961,61143.226 -1713686400000,bitcoin,eur,61154.202,61202.193,60873.366,61069.528 1713700800000,bitcoin,eur,61094.533,61376.334,60766.894,61175.368 1713715200000,bitcoin,eur,61200.502,61280.684,60802.855,60986.746 1713729600000,bitcoin,eur,60984.601,60984.601,60327.332,60775.547 @@ -179,3 +155,208 @@ data_unix,criptomoeda,vs_currency,preco_abertura,preco_maximo,preco_minimo,preco 1715904000000,bitcoin,eur,60006.817,60286.127,59875.171,60054.302 1715918400000,bitcoin,eur,60011.002,60600.03,60005.315,60463.319 1715932800000,bitcoin,eur,60419.234,61112.357,60211.556,60983.861 +1715947200000,bitcoin,eur,61215.71,61364.395,60942.922,61176.689 +1715961600000,bitcoin,eur,61059.714,62020.462,60733.083,61784.882 +1715976000000,bitcoin,eur,61875.939,61904.758,60974.491,61570.438 +1715990400000,bitcoin,eur,61542.79,61631.878,61326.666,61631.878 +1716004800000,bitcoin,eur,61637.345,61653.492,61354.148,61569.76 +1716019200000,bitcoin,eur,61562.383,61792.146,61372.158,61524.584 +1716048000000,bitcoin,eur,61803.901,61817.786,61300.415,61479.106 +1716076800000,bitcoin,eur,61576.764,61607.487,61434.402,61502.733 +1716105600000,bitcoin,eur,61753.127,61786.918,61506.822,61754.45 +1716120000000,bitcoin,eur,61808.823,62146.377,61512.551,61829.506 +1716134400000,bitcoin,eur,61818.297,61818.297,61273.898,61479.361 +1716148800000,bitcoin,eur,61472.072,61594.942,60698.03,60698.03 +1716163200000,bitcoin,eur,60788.937,61088.408,60761.301,60924.868 +1716177600000,bitcoin,eur,60943.195,61418.882,60803.093,61310.779 +1716192000000,bitcoin,eur,61265.22,61777.561,60869.73,61498.328 +1716206400000,bitcoin,eur,61508.732,61915.705,61378.922,61679.177 +1716220800000,bitcoin,eur,61697.61,62036.087,61484.221,62036.087 +1716235200000,bitcoin,eur,62054.843,64494.861,62054.843,64119.601 +1716249600000,bitcoin,eur,64503.451,65943.499,63563.754,65770.16 +1716264000000,bitcoin,eur,65802.483,65975.604,65228.892,65696.469 +1716278400000,bitcoin,eur,65674.318,65676.24,65256.286,65302.927 +bla,ble,bli,blo,blu,42,fim +1716033600000,bitcoin,eur,61440.763,61929.546,61440.763,61723.091 +1716091200000,bitcoin,eur,61527.537,61845.923,61462.965,61727.938 +1716062400000,bitcoin,eur,61467.014,61600.035,61364.536,61485.891 +1713700800000,dogecoin,eur,0.153,0.153,0.151,0.152 +1713715200000,dogecoin,eur,0.152,0.152,0.149,0.15 +1713729600000,dogecoin,eur,0.15,0.15,0.146,0.148 +1713744000000,dogecoin,eur,0.148,0.15,0.148,0.148 +1713758400000,dogecoin,eur,0.148,0.152,0.147,0.152 +1713772800000,dogecoin,eur,0.151,0.153,0.151,0.151 +1713787200000,dogecoin,eur,0.151,0.152,0.15,0.15 +1713801600000,dogecoin,eur,0.15,0.152,0.148,0.149 +1713816000000,dogecoin,eur,0.149,0.152,0.149,0.15 +1713830400000,dogecoin,eur,0.15,0.153,0.15,0.151 +1713844800000,dogecoin,eur,0.151,0.152,0.149,0.149 +1713859200000,dogecoin,eur,0.149,0.15,0.147,0.148 +1713873600000,dogecoin,eur,0.148,0.149,0.147,0.148 +1713888000000,dogecoin,eur,0.148,0.151,0.148,0.151 +1713902400000,dogecoin,eur,0.151,0.152,0.15,0.151 +1713916800000,dogecoin,eur,0.151,0.151,0.149,0.149 +1713931200000,dogecoin,eur,0.15,0.153,0.149,0.152 +1713945600000,dogecoin,eur,0.152,0.152,0.15,0.151 +1713960000000,dogecoin,eur,0.151,0.153,0.15,0.153 +1713974400000,dogecoin,eur,0.153,0.153,0.144,0.144 +1713988800000,dogecoin,eur,0.143,0.145,0.142,0.144 +1714003200000,dogecoin,eur,0.143,0.143,0.14,0.141 +1714017600000,dogecoin,eur,0.141,0.143,0.14,0.141 +1714032000000,dogecoin,eur,0.141,0.142,0.139,0.14 +1714046400000,dogecoin,eur,0.14,0.141,0.138,0.14 +1714060800000,dogecoin,eur,0.14,0.141,0.138,0.141 +1714075200000,dogecoin,eur,0.141,0.142,0.141,0.142 +1714089600000,dogecoin,eur,0.142,0.143,0.141,0.141 +1714104000000,dogecoin,eur,0.141,0.141,0.138,0.141 +1714118400000,dogecoin,eur,0.14,0.141,0.14,0.14 +1714132800000,dogecoin,eur,0.14,0.141,0.14,0.14 +1714147200000,dogecoin,eur,0.14,0.141,0.138,0.138 +1714161600000,dogecoin,eur,0.139,0.14,0.138,0.14 +1714176000000,dogecoin,eur,0.14,0.14,0.138,0.138 +1714190400000,dogecoin,eur,0.138,0.139,0.135,0.137 +1714204800000,dogecoin,eur,0.137,0.137,0.136,0.136 +1714219200000,dogecoin,eur,0.136,0.136,0.134,0.135 +1714233600000,dogecoin,eur,0.135,0.137,0.135,0.136 +1714248000000,dogecoin,eur,0.136,0.14,0.136,0.138 +1714262400000,dogecoin,eur,0.138,0.138,0.137,0.138 +1714276800000,dogecoin,eur,0.138,0.141,0.138,0.14 +1714291200000,dogecoin,eur,0.14,0.141,0.14,0.14 +1714305600000,dogecoin,eur,0.14,0.14,0.139,0.139 +1714320000000,dogecoin,eur,0.139,0.141,0.139,0.14 +1714334400000,dogecoin,eur,0.14,0.141,0.14,0.14 +1714348800000,dogecoin,eur,0.14,0.14,0.137,0.137 +1714363200000,dogecoin,eur,0.137,0.138,0.135,0.135 +1714377600000,dogecoin,eur,0.135,0.135,0.131,0.132 +1714392000000,dogecoin,eur,0.132,0.133,0.131,0.131 +1714406400000,dogecoin,eur,0.131,0.134,0.131,0.133 +1714420800000,dogecoin,eur,0.133,0.134,0.131,0.131 +1714435200000,dogecoin,eur,0.131,0.135,0.131,0.134 +1714449600000,dogecoin,eur,0.134,0.136,0.132,0.134 +1714464000000,dogecoin,eur,0.134,0.135,0.132,0.133 +1714478400000,dogecoin,eur,0.133,0.133,0.126,0.126 +1714492800000,dogecoin,eur,0.126,0.127,0.125,0.125 +1714507200000,dogecoin,eur,0.126,0.126,0.122,0.123 +1714521600000,dogecoin,eur,0.122,0.126,0.122,0.125 +1714536000000,dogecoin,eur,0.125,0.125,0.121,0.124 +1714550400000,dogecoin,eur,0.124,0.125,0.117,0.117 +1714564800000,dogecoin,eur,0.117,0.117,0.114,0.117 +1714579200000,dogecoin,eur,0.117,0.119,0.113,0.113 +1714593600000,dogecoin,eur,0.113,0.124,0.113,0.119 +1714608000000,dogecoin,eur,0.119,0.122,0.118,0.121 +1714622400000,dogecoin,eur,0.121,0.122,0.117,0.118 +1714636800000,dogecoin,eur,0.118,0.119,0.116,0.118 +1714651200000,dogecoin,eur,0.118,0.123,0.118,0.123 +1714665600000,dogecoin,eur,0.123,0.125,0.121,0.125 +1714680000000,dogecoin,eur,0.125,0.125,0.124,0.124 +1714694400000,dogecoin,eur,0.124,0.125,0.122,0.123 +1714708800000,dogecoin,eur,0.123,0.126,0.122,0.126 +1714723200000,dogecoin,eur,0.126,0.126,0.123,0.123 +1714737600000,dogecoin,eur,0.123,0.124,0.122,0.123 +1714752000000,dogecoin,eur,0.123,0.129,0.123,0.129 +1714766400000,dogecoin,eur,0.129,0.131,0.129,0.13 +1714780800000,dogecoin,eur,0.13,0.137,0.13,0.136 +1714795200000,dogecoin,eur,0.136,0.141,0.136,0.139 +1714809600000,dogecoin,eur,0.139,0.141,0.139,0.14 +1714824000000,dogecoin,eur,0.14,0.149,0.14,0.147 +1714838400000,dogecoin,eur,0.147,0.156,0.147,0.151 +1714852800000,dogecoin,eur,0.151,0.151,0.147,0.15 +1714867200000,dogecoin,eur,0.15,0.151,0.148,0.149 +1714881600000,dogecoin,eur,0.149,0.15,0.144,0.146 +1714896000000,dogecoin,eur,0.147,0.151,0.147,0.15 +1714910400000,dogecoin,eur,0.15,0.15,0.149,0.149 +1714924800000,dogecoin,eur,0.149,0.15,0.148,0.15 +1714939200000,dogecoin,eur,0.151,0.151,0.149,0.151 +1714953600000,dogecoin,eur,0.151,0.151,0.148,0.15 +1714968000000,dogecoin,eur,0.15,0.153,0.15,0.15 +1714982400000,dogecoin,eur,0.15,0.153,0.15,0.152 +1714996800000,dogecoin,eur,0.152,0.157,0.149,0.15 +1715011200000,dogecoin,eur,0.151,0.151,0.144,0.147 +1715025600000,dogecoin,eur,0.147,0.147,0.143,0.145 +1715040000000,dogecoin,eur,0.146,0.147,0.145,0.145 +1715054400000,dogecoin,eur,0.145,0.147,0.143,0.144 +1715068800000,dogecoin,eur,0.144,0.145,0.144,0.145 +1715083200000,dogecoin,eur,0.145,0.148,0.145,0.145 +1715097600000,dogecoin,eur,0.145,0.147,0.144,0.145 +1715112000000,dogecoin,eur,0.145,0.146,0.142,0.143 +1715126400000,dogecoin,eur,0.143,0.143,0.139,0.14 +1715140800000,dogecoin,eur,0.14,0.141,0.139,0.141 +1715155200000,dogecoin,eur,0.141,0.141,0.137,0.138 +1715169600000,dogecoin,eur,0.138,0.139,0.137,0.137 +1715184000000,dogecoin,eur,0.137,0.14,0.136,0.138 +1715198400000,dogecoin,eur,0.138,0.14,0.136,0.137 +1715212800000,dogecoin,eur,0.137,0.137,0.132,0.134 +1715227200000,dogecoin,eur,0.133,0.137,0.133,0.137 +1715241600000,dogecoin,eur,0.137,0.138,0.136,0.136 +1715256000000,dogecoin,eur,0.136,0.136,0.134,0.136 +1715270400000,dogecoin,eur,0.136,0.139,0.136,0.138 +1715284800000,dogecoin,eur,0.138,0.139,0.137,0.139 +1715299200000,dogecoin,eur,0.139,0.143,0.139,0.141 +1715313600000,dogecoin,eur,0.141,0.141,0.139,0.14 +1715328000000,dogecoin,eur,0.14,0.142,0.14,0.141 +1715342400000,dogecoin,eur,0.142,0.142,0.139,0.14 +1715356800000,dogecoin,eur,0.14,0.141,0.134,0.134 +1715371200000,dogecoin,eur,0.135,0.135,0.133,0.133 +1715385600000,dogecoin,eur,0.133,0.134,0.132,0.134 +1715400000000,dogecoin,eur,0.133,0.135,0.133,0.134 +1715414400000,dogecoin,eur,0.133,0.135,0.133,0.134 +1715428800000,dogecoin,eur,0.134,0.134,0.132,0.133 +1715443200000,dogecoin,eur,0.133,0.135,0.133,0.134 +1715457600000,dogecoin,eur,0.134,0.135,0.134,0.134 +1715472000000,dogecoin,eur,0.134,0.134,0.132,0.132 +1715486400000,dogecoin,eur,0.133,0.134,0.133,0.133 +1715500800000,dogecoin,eur,0.133,0.134,0.13,0.13 +1715515200000,dogecoin,eur,0.13,0.133,0.13,0.133 +1715529600000,dogecoin,eur,0.133,0.133,0.132,0.133 +1715544000000,dogecoin,eur,0.133,0.133,0.13,0.131 +1715558400000,dogecoin,eur,0.131,0.131,0.13,0.131 +1715572800000,dogecoin,eur,0.131,0.132,0.127,0.127 +1715587200000,dogecoin,eur,0.128,0.132,0.127,0.132 +1715601600000,dogecoin,eur,0.133,0.135,0.132,0.133 +1715616000000,dogecoin,eur,0.133,0.142,0.132,0.142 +1715630400000,dogecoin,eur,0.141,0.145,0.138,0.14 +1715644800000,dogecoin,eur,0.14,0.14,0.137,0.138 +1715659200000,dogecoin,eur,0.138,0.139,0.137,0.139 +1715673600000,dogecoin,eur,0.139,0.141,0.137,0.141 +1715688000000,dogecoin,eur,0.141,0.141,0.137,0.14 +1715702400000,dogecoin,eur,0.141,0.143,0.136,0.137 +1715716800000,dogecoin,eur,0.137,0.137,0.134,0.135 +1715731200000,dogecoin,eur,0.135,0.136,0.134,0.134 +1715745600000,dogecoin,eur,0.134,0.136,0.134,0.135 +1715760000000,dogecoin,eur,0.135,0.137,0.134,0.137 +1715774400000,dogecoin,eur,0.138,0.14,0.137,0.138 +1715788800000,dogecoin,eur,0.138,0.142,0.137,0.14 +1715803200000,dogecoin,eur,0.139,0.141,0.138,0.141 +1715817600000,dogecoin,eur,0.141,0.144,0.141,0.143 +1715832000000,dogecoin,eur,0.143,0.146,0.141,0.145 +1715846400000,dogecoin,eur,0.145,0.145,0.143,0.144 +1715860800000,dogecoin,eur,0.144,0.144,0.142,0.142 +1715875200000,dogecoin,eur,0.143,0.143,0.138,0.139 +1715889600000,dogecoin,eur,0.139,0.14,0.138,0.138 +1715904000000,dogecoin,eur,0.138,0.138,0.137,0.138 +1715918400000,dogecoin,eur,0.138,0.139,0.138,0.139 +1715932800000,dogecoin,eur,0.139,0.141,0.138,0.141 +1715947200000,dogecoin,eur,0.142,0.142,0.14,0.141 +1715961600000,dogecoin,eur,0.14,0.143,0.14,0.143 +1715976000000,dogecoin,eur,0.144,0.144,0.141,0.141 +1715990400000,dogecoin,eur,0.141,0.143,0.141,0.143 +1716004800000,dogecoin,eur,0.143,0.144,0.142,0.144 +1716019200000,dogecoin,eur,0.144,0.144,0.142,0.142 +1716033600000,dogecoin,eur,0.142,0.144,0.142,0.143 +1716048000000,dogecoin,eur,0.144,0.144,0.14,0.141 +1716062400000,dogecoin,eur,0.141,0.141,0.14,0.141 +1716076800000,dogecoin,eur,0.141,0.141,0.14,0.141 +1716091200000,dogecoin,eur,0.141,0.143,0.14,0.143 +1716105600000,dogecoin,eur,0.143,0.143,0.141,0.141 +1716120000000,dogecoin,eur,0.141,0.141,0.139,0.14 +1716134400000,dogecoin,eur,0.14,0.14,0.137,0.138 +1716148800000,dogecoin,eur,0.138,0.138,0.137,0.137 +1716163200000,dogecoin,eur,0.137,0.138,0.136,0.137 +1716177600000,dogecoin,eur,0.137,0.139,0.137,0.139 +1716192000000,dogecoin,eur,0.139,0.141,0.137,0.139 +1716206400000,dogecoin,eur,0.139,0.14,0.139,0.139 +1716220800000,dogecoin,eur,0.139,0.141,0.139,0.14 +1716235200000,dogecoin,eur,0.14,0.145,0.14,0.145 +1716249600000,dogecoin,eur,0.145,0.153,0.144,0.152 +1716264000000,dogecoin,eur,0.153,0.154,0.149,0.151 +1716278400000,dogecoin,eur,0.151,0.151,0.148,0.15 diff --git a/portfolio.py b/portfolio.py index f351ea5..28341ff 100644 --- a/portfolio.py +++ b/portfolio.py @@ -24,7 +24,7 @@ headers = { } resposta = requests.get(url, headers= headers) -# carregar dados já existentes em ficheiro CSV (criar ficheiro se não existir) +# carregar dados já existentes em ficheiro CSV (criar ficheiro se não existir) para dicionario import csv import os cabecalho: list = [ 'data_unix', 'criptomoeda', 'vs_currency', 'preco_abertura', 'preco_maximo', 'preco_minimo', 'preco_fecho' ] @@ -36,26 +36,34 @@ if (os.path.exists(caminho_ficheiro_csv_historico_bitcoin) == False): ficheiro.close() with open(caminho_ficheiro_csv_historico_bitcoin, 'r', newline='') as ficheiro_csv_historico_precos: ficheiroCSV = csv.DictReader(ficheiro_csv_historico_precos) - entradas: list = [] + lista_linhas_ficheiro_csv: list = [] for linha in ficheiroCSV: - entradas.append(linha) + lista_linhas_ficheiro_csv.append(linha) # converter dados de coingecko para o formato usado no ficheiro CSV -novas_linhas: list = [] +lista_linhas_resposta: list = [] for linha_resposta in resposta.json(): nova_entrada: dict = {} - nova_entrada[cabecalho[0]] = linha_resposta[0] + nova_entrada[cabecalho[0]] = str(linha_resposta[0]) nova_entrada[cabecalho[1]] = criptomoeda nova_entrada[cabecalho[2]] = vs_currency - nova_entrada[cabecalho[3]] = linha_resposta[1] - nova_entrada[cabecalho[4]] = linha_resposta[2] - nova_entrada[cabecalho[5]] = linha_resposta[3] - nova_entrada[cabecalho[6]] = linha_resposta[4] - novas_linhas.append(nova_entrada) -# eliminar registos que não sejam novos + nova_entrada[cabecalho[3]] = str(linha_resposta[1]) + nova_entrada[cabecalho[4]] = str(linha_resposta[2]) + nova_entrada[cabecalho[5]] = str(linha_resposta[3]) + nova_entrada[cabecalho[6]] = str(linha_resposta[4]) + lista_linhas_resposta.append(nova_entrada) + +# adicionar items de lista_linhas_resposta se não existirem em lista_linhas_ficheiro_csv (aka: adicionar apenas items novos a lista_linhas_ficheiro_csv) +for item_resposta in lista_linhas_resposta: + item_existe: bool= False + for linha_ficheiro_csv in lista_linhas_ficheiro_csv: + if (item_resposta == linha_ficheiro_csv) and (item_resposta == linha_ficheiro_csv): + item_existe = True + if not item_existe: + lista_linhas_ficheiro_csv.append(item_resposta) # gravar dados importados with open(caminho_ficheiro_csv_historico_bitcoin, 'w+', newline='') as ficheiro_csv_historico_precos: ficheiroCSV = csv.DictWriter(ficheiro_csv_historico_precos, fieldnames=cabecalho) ficheiroCSV.writeheader() - ficheiroCSV.writerows(entradas) + ficheiroCSV.writerows(lista_linhas_ficheiro_csv)