2weiX (OP)
Legendary
Offline
Activity: 2058
Merit: 1005
this space intentionally left blank
|
|
July 23, 2012, 10:39:02 AM Last edit: July 30, 2012, 08:38:46 AM by 2weiX |
|
I was looking for a script that would make it easy for my and my accountant to figure out what I had bought/sold/deposited/withdrawn/paidfees for a given time. 20BTC was bountied. 12.5 BTC went to the PHP script 7.5 BTC went to the Pearl scripts. Please feel free to use them under the given license and consider tipping to contribute to my expenses. Cheers 2weiX The php code<?php /* This code is available to you under CC BY-NC-SA 3.0 (http://creativecommons.org/licenses/by-nc-sa/3.0/).
If you use this tool to analyze your mtgox trades or use this code to build your own project, consider donating to 12weixK5ttMdjeoQgdGca9mKMKxkCxZkBG and consider adding your work to this thread: https://bitcointalk.org/index.php?topic=94769
Thank you! 2weiX, Bitsky and jl2012 */
if (isset($_FILES['csv'])) { if ($_FILES['csv']['size']>1024000) { die('file too big'); } if ($_FILES['csv']['error']!==0) { die('upload error'); } if ($_FILES['csv']['name']=='history_EUR.csv') { $currency='€'; } elseif ($_FILES['csv']['name']=='history_USD.csv') { $currency='$'; } else { $currency=''; } $csv=file($_FILES['csv']['tmp_name'], FILE_IGNORE_NEW_LINES); $out=parsecsv($csv); $tmp=makecsv($out, $currency); header('Content-type: text/plain'); header('Content-disposition: attachment; filename="converted_'.$_FILES['csv']['name'].'"'); echo $tmp; } else { echo "<html>\n"; echo "<body>\n"; echo "<form method=\"post\" action=\"\" enctype=\"multipart/form-data\">\n"; echo "<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"1024000\" />\n"; echo "<input type=\"file\" name=\"csv\" value=\"\" accept=\"text/*\" />\n"; echo "<input type=\"submit\" value=\"Convert\" />\n"; echo "</form>\n"; echo "</body>\n"; echo "</html>\n"; }
exit;
function parsecsv($csv) { global $currency; $regex=array(); $regex['$']='/\] ([\d\.]+).+BTC at \$([\d\.]+)/'; $regex['€']='/\] ([\d\.]+).+BTC at ([\d\.]+)/'; $out=array(); foreach ($csv as $tmp) { $line=explode(',', $tmp); if (!is_numeric($line[0])) { continue; } $line[1]=preg_replace('/"(.+) .*/', '$1', $line[1]); if (!isset($out[$line[1]])) { $out[$line[1]]=array(); $out[$line[1]]['day']=$line[1]; $out[$line[1]]['deposit']=0; $out[$line[1]]['withdraw']=0; $out[$line[1]]['earned']=0; $out[$line[1]]['earnedbtc']=0; $out[$line[1]]['earnedcur']=0; $out[$line[1]]['earnedrate']=0; $out[$line[1]]['fee']=0; $out[$line[1]]['spent']=0; $out[$line[1]]['spentbtc']=0; $out[$line[1]]['spentcur']=0; $out[$line[1]]['spentrate']=0; } if ($line[2]=='deposit') { $out[$line[1]]['deposit']+=$line[4]; } elseif ($line[2]=='withdraw') { $out[$line[1]]['withdraw']+=$line[4]; } elseif ($line[2]=='fee') { $out[$line[1]]['fee']+=$line[4]; } elseif ($line[2]=='earned') { $out[$line[1]]['earned']+=$line[4]; if (preg_match($regex[$currency], $line[3], $tmp)) { $out[$line[1]]['earnedbtc']+=$tmp[1]; $out[$line[1]]['earnedcur']+=$line[4]; } } elseif ($line[2]=='spent') { $out[$line[1]]['spent']+=$line[4]; if (preg_match($regex[$currency], $line[3], $tmp)) { $out[$line[1]]['spentbtc']+=$tmp[1]; $out[$line[1]]['spentcur']+=$line[4]; } } } return($out); }
function makecsv($out, $currency) { $tmp=''; global $currency; foreach ($out as $i) { if ($i['spentcur']>0) { $i['spentrate']=$i['spentcur']/$i['spentbtc']; } if ($i['earnedbtc']>0) { $i['earnedrate']=$i['earnedcur']/$i['earnedbtc']; } $i['day']=preg_replace('/(\d\d\d\d)\-(\d\d)\-(\d\d)/', '$3.$2.$1', $i['day']); $tmp.=$i['day'].";DEPOSIT;".number_format($i['deposit'], 2, ',', '').$currency."\n"; $tmp.=$i['day'].";BUY;".number_format($i['spentbtc'], 8, ',', '')."BTC;".number_format($i['spentrate'], 8, ',', '').$currency."/BTC\n"; $tmp.=$i['day'].";SELL;".number_format($i['earnedbtc'], 8, ',', '')."BTC;".number_format($i['earnedrate'], 8, ',', '').$currency."/BTC\n"; $tmp.=$i['day'].";FEES;".number_format($i['fee'], 2, ',', '').$currency."\n"; $tmp.=$i['day'].";WITHDRAW;-".number_format($i['withdraw'], 2, ',', '').$currency."\n"; $tmp.="\n\n"; } $tmp.="This code is available to you under CC BY-NC-SA 3.0 (http://creativecommons.org/licenses/by-nc-sa/3.0/).\n\n"; $tmp.="If you use this tool to analyze your mtgox trades or use this code to build your own project, consider\n"; $tmp.="donating to 12weixK5ttMdjeoQgdGca9mKMKxkCxZkBG and consider adding your work to this thread:\n"; $tmp.="https://bitcointalk.org/index.php?topic=94769\n\n"; $tmp.="Thank you!\n"; $tmp.="2weiX, Bitsky and jl2012\n"; return($tmp); }
?> Pearl code for EUR #!/usr/bin/perl use strict; open USD, "history_EUR.csv"; open OUTCSV, ">goxeur.csv"; open OUTCSVE, ">goxeur_e.csv"; my %array; #my @type = ("deposit", "withdraw", "earned", "spent", "fee"); while (<USD>) { my ($date, $type, $info, $value, $balance) = ($_ =~ /^\d+,\"(\d{4}-\d{2}-\d{2}) .+?\",(.+?),(.+?),(.+?),(.+)/); $date || next; if (my ($x, $y) = $value =~ /(.*)E(.*)/) { $value = $x * (10 ** $y); } $array{$date}{$type} += $value; $array{$date}{balance} = $balance; if ($type eq "spent") { my ($btc, $price) = ($info =~ /(\d+\.\d+).*?BTC at \$?(\d+\.\d+)/); $array{$date}{totalspent} += $value; $array{$date}{totalboughtbtc} += $btc; } elsif ($type eq "earned") { my ($btc, $price) = ($info =~ /(\d+\.\d+).*?BTC at \$?(\d+\.\d+)/); $array{$date}{totalreceive} += $value; $array{$date}{totalsoldbtc} += $btc; } } foreach (sort keys %array) { if ($array{$_}{deposit} > 0) { print OUTCSV "\"$_\",\"DEPOSIT\",\"". sprintf("%.8f", $array{$_}{deposit}) . " EUR\"\n"; } if ($array{$_}{withdraw} > 0) { print OUTCSV "\"$_\",\"WITHDRAW\",\"". sprintf("%.8f", $array{$_}{withdraw}) . " EUR\"\n"; } if ($array{$_}{fee} > 0) { print OUTCSV "\"$_\",\"FEES\",\"". sprintf("%.8f", $array{$_}{fee}) . " EUR\"\n"; } if ($array{$_}{totalboughtbtc} > 0) { print OUTCSV "\"$_\",\"BUY\",\"". sprintf("%.8f", $array{$_}{totalboughtbtc}) . " BTC\",\"". $array{$_}{totalspent}/$array{$_}{totalboughtbtc} ." EUR\"\n"; } if ($array{$_}{totalsoldbtc} > 0) { print OUTCSV "\"$_\",\"SELL\",\"". sprintf("%.8f", $array{$_}{totalsoldbtc}) . " BTC\",\"". $array{$_}{totalreceive}/$array{$_}{totalsoldbtc} ." EUR\"\n"; } } close OUTCSV; open OUTCSV, "goxeur.csv"; while (<OUTCSV>) { s/\./,/g; print OUTCSVE; }
Parl code for USD #!/usr/bin/perl use strict; open USD, "history_USD.csv"; open OUTCSV, ">goxusd.csv"; open OUTCSVE, ">goxusd_e.csv"; my %array; #my @type = ("deposit", "withdraw", "earned", "spent", "fee"); while (<USD>) { my ($date, $type, $info, $value, $balance) = ($_ =~ /^\d+,\"(\d{4}-\d{2}-\d{2}) .+?\",(.+?),(.+?),(.+?),(.+)/); $date || next; if (my ($x, $y) = $value =~ /(.*)E(.*)/) { $value = $x * (10 ** $y); } $array{$date}{$type} += $value; $array{$date}{balance} = $balance; if ($type eq "spent") { my ($btc, $price) = ($info =~ /(\d+\.\d+).*?BTC at \$?(\d+\.\d+)/); $array{$date}{totalspent} += $value; $array{$date}{totalboughtbtc} += $btc; } elsif ($type eq "earned") { my ($btc, $price) = ($info =~ /(\d+\.\d+).*?BTC at \$?(\d+\.\d+)/); $array{$date}{totalreceive} += $value; $array{$date}{totalsoldbtc} += $btc; } } foreach (sort keys %array) { if ($array{$_}{deposit} > 0) { print OUTCSV "\"$_\",\"DEPOSIT\",\"". sprintf("%.8f", $array{$_}{deposit}) . " USD\"\n"; } if ($array{$_}{withdraw} > 0) { print OUTCSV "\"$_\",\"WITHDRAW\",\"". sprintf("%.8f", $array{$_}{withdraw}) . " USD\"\n"; } if ($array{$_}{fee} > 0) { print OUTCSV "\"$_\",\"FEES\",\"". sprintf("%.8f", $array{$_}{fee}) . " USD\"\n"; } if ($array{$_}{totalboughtbtc} > 0) { print OUTCSV "\"$_\",\"BUY\",\"". sprintf("%.8f", $array{$_}{totalboughtbtc}) . " BTC\",\"". $array{$_}{totalspent}/$array{$_}{totalboughtbtc} ." USD\"\n"; } if ($array{$_}{totalsoldbtc} > 0) { print OUTCSV "\"$_\",\"SELL\",\"". sprintf("%.8f", $array{$_}{totalsoldbtc}) . " BTC\",\"". $array{$_}{totalreceive}/$array{$_}{totalsoldbtc} ." USD\"\n"; } } close OUTCSV; open OUTCSV, "goxusd.csv"; while (<OUTCSV>) { s/\./,/g; print OUTCSVE; }
|
|
|
|
jl2012
Legendary
Offline
Activity: 1792
Merit: 1111
|
|
July 23, 2012, 10:46:31 AM |
|
I can do a perl script for you. You can host it like a php, with upload and export feature you want
|
Donation address: 374iXxS4BuqFHsEwwxUuH3nvJ69Y7Hqur3 (Bitcoin ONLY) LRDGENPLYrcTRssGoZrsCT1hngaH3BVkM4 (LTC) PGP: D3CC 1772 8600 5BB8 FF67 3294 C524 2A1A B393 6517
|
|
|
2weiX (OP)
Legendary
Offline
Activity: 2058
Merit: 1005
this space intentionally left blank
|
|
July 23, 2012, 10:49:43 AM |
|
I can do a perl script for you. You can host it like a php, with upload and export feature you want
so i can up a .csv and it will export a .csv for me to download? how much time (BTC in bounty) will this take? kinda need it to calculate profit/losses for tax reasons. oh, and the fees paid need to be in it.
|
|
|
|
2weiX (OP)
Legendary
Offline
Activity: 2058
Merit: 1005
this space intentionally left blank
|
|
July 23, 2012, 10:54:52 AM |
|
http://daiber.net/mtgox.rarthree example file EUR USD BTC
|
|
|
|
Rugatu
|
|
July 23, 2012, 12:27:15 PM |
|
the files that i can export from my mtgox account that are supposed to give me a clear image of what I have traded, deposited, withdrawn and paid as fees are close to unusable to me. not only do i use a different format for my 1000 and decimals (1.200,75 instead of 1,200.75), but also there's no way I am manually adding all those millibitcoins that i traded to make total for the day i am looking for the following: a script that takes the .csv as-is and automatically - detects the currency - makes a total for EACH DAY displaying -- bought @ average price -- sold @ average price -- fees paid -- deposited -- withdrawn -- 24avg bitcoin price 01/01/2012, +5000, 7,25€ 01/01/2012, withdraw, 1000 BTC 01/01/2012, deposit, 10000 € 02/05/2012, -2000, 8,58€ ....
...this is the best i can describe it. any questions? also I am undecided as to how high the bounty should be. if its a php script and you would include an upload and export feature, i would gladly host it. Hi, you can try making a new bounty on Rugatu and see what you get.
|
|
|
|
2weiX (OP)
Legendary
Offline
Activity: 2058
Merit: 1005
this space intentionally left blank
|
|
July 24, 2012, 05:39:09 AM |
|
i did get a first reply, will test the result now. if i like it, i will publish the script for anyone to work on it.
|
|
|
|
2weiX (OP)
Legendary
Offline
Activity: 2058
Merit: 1005
this space intentionally left blank
|
|
July 24, 2012, 06:18:41 AM |
|
So far I have gotten a number of responses. None have gotten "it" right so far, so there is still a chance :-D
|
|
|
|
2weiX (OP)
Legendary
Offline
Activity: 2058
Merit: 1005
this space intentionally left blank
|
|
July 24, 2012, 07:20:18 AM |
|
here's a script user gweedo kindly sent to me. he allowed me to post it - if it leads to the solution, he says, he'd like to have half the bounty :-D #!/usr/bin/php <?php $file_handle = fopen($argv[1], "r"); $array= array(); $replace = array("$",".",","); while(!feof($file_handle)) { $line_of_text = fgetcsv($file_handle, 1024); if($line_of_text[0]!="Index"){ $temparray=explode(' ',$line_of_text[1]); $date=$temparray[0]; if(!in_array($date, $temparray)){ $array[$date]=array(); } if($array[$date][$line_of_text[2]]!==null){ $temp=$array[$date][$line_of_text[2]]; $array[$date][$line_of_text[2]]=$temp+floatval(str_replace($replace,"",trim($line_of_text[4]))); }else{ $array[$date][$line_of_text[2]]=floatval(str_replace($replace,"",trim($line_of_text[4]))); } } } fclose($file_handle); foreach ($array as $key=>$value){ if($key==null){ break; } $total=0.00; $total=+$value['despoit']-$value['withdraw']+$value['in']-$value['out']; echo $key.' Total: '.$total."\n"; if($value['despoit']!==null){ echo $key.' Despoit '.$value['despoit']."\n"; } if($value['withdraw']!==null){ echo $key.' Withdrew '.$value['withdraw']."\n"; } } ?>
|
|
|
|
2weiX (OP)
Legendary
Offline
Activity: 2058
Merit: 1005
this space intentionally left blank
|
|
July 24, 2012, 09:06:10 AM |
|
after much deliberation, i need the file for each currency to read
DATE; depositedCurreny DATE; boughtBTC; avgPrice DATE; soldBTC; avgPrice DATE; feesPAID DATE; withdrawnCurrency
whereas "boughtBTC" should be positive "soldBTC" is a negative number
|
|
|
|
2weiX (OP)
Legendary
Offline
Activity: 2058
Merit: 1005
this space intentionally left blank
|
|
July 24, 2012, 09:53:58 AM |
|
obv the above makes no sense when working with headers, so here:
DATE;DEPOSIT;amountdepositCurrency DATE;BUY;boughtBTC;avgPriceCurrency DATE;SELL;soldBTC;avgPriceCurrency DATE;FEES;feespaid DATE;WITHDRAW;amountwithdrawnCurrency
|
|
|
|
2weiX (OP)
Legendary
Offline
Activity: 2058
Merit: 1005
this space intentionally left blank
|
|
July 24, 2012, 10:43:56 AM |
|
two people pretty much nailed it. i'd say that some modifications pending both are eligible for the reward.
i'd like to host both in a html file on my server so i can make them publicly available. if both of you could provide upload and export functionality so i everyone can use this?
aside: i dunno if my webspace (bitcoinsinberlin.com) runs perl, actually.
|
|
|
|
2weiX (OP)
Legendary
Offline
Activity: 2058
Merit: 1005
this space intentionally left blank
|
|
July 25, 2012, 02:15:33 PM |
|
task done, bounty awarded.
|
|
|
|
Bitsky
|
|
July 26, 2012, 03:05:50 PM |
|
Bounty received. Nice guy to work with and he paid promptly too.
|
|
|
|
paraipan
In memoriam
Legendary
Offline
Activity: 924
Merit: 1004
Firstbits: 1pirata
|
|
July 26, 2012, 03:51:25 PM |
|
Bounty received. Nice guy to work with and he paid promptly too.
Witnessed
|
BTCitcoin: An Idea Worth Saving - Q&A with bitcoins on rugatu.com - Check my rep
|
|
|
jl2012
Legendary
Offline
Activity: 1792
Merit: 1111
|
|
July 27, 2012, 08:54:59 AM |
|
Bounty received. Thanks! I'll continue to develop the web interface for it
|
Donation address: 374iXxS4BuqFHsEwwxUuH3nvJ69Y7Hqur3 (Bitcoin ONLY) LRDGENPLYrcTRssGoZrsCT1hngaH3BVkM4 (LTC) PGP: D3CC 1772 8600 5BB8 FF67 3294 C524 2A1A B393 6517
|
|
|
paraipan
In memoriam
Legendary
Offline
Activity: 924
Merit: 1004
Firstbits: 1pirata
|
|
July 27, 2012, 09:55:23 AM |
|
Bounty received. Thanks! I'll continue to develop the web interface for it
Quoted for posterity...
|
BTCitcoin: An Idea Worth Saving - Q&A with bitcoins on rugatu.com - Check my rep
|
|
|
2weiX (OP)
Legendary
Offline
Activity: 2058
Merit: 1005
this space intentionally left blank
|
|
July 30, 2012, 08:38:12 AM |
|
codes posted
|
|
|
|
2weiX (OP)
Legendary
Offline
Activity: 2058
Merit: 1005
this space intentionally left blank
|
|
December 13, 2012, 07:52:40 AM |
|
Bounty received. Thanks! I'll continue to develop the web interface for it
how's that goin' ? :-D
|
|
|
|
2weiX (OP)
Legendary
Offline
Activity: 2058
Merit: 1005
this space intentionally left blank
|
|
December 13, 2012, 02:05:36 PM |
|
if someone was willing to host this (it's a perl script), i'd be awesomely happy. #!/usr/bin/perl use strict; use CGI; open BTC, "history_BTC.csv"; my %array; #my @type = ("deposit", "withdraw", "in", "out", "fee"); if ($ENV{'REQUEST_METHOD'} eq "GET") { print "Content-Type: text/html\n\n<HTML><BODY><FORM method=\"post\" enctype=\"multipart/form-data\">Choose File To Upload (Total Max: 2M):<BR>BTC:<INPUT type=\"file\" name=\"btc\"><BR>USD:<INPUT type=\"file\" name=\"usd\"><BR>EUR:<INPUT type=\"file\" name=\"eur\"><BR><input type=\"submit\" value=\"Upload\"></form></body></html>"; } else{ $CGI::POST_MAX = 1024 * 2048; my $query = new CGI; my $btc = $query->upload("btc"); my $usd = $query->upload("usd"); my $eur = $query->upload("eur"); print "Content-Type: text/html\n\n<HTML><BODY>BTC:<BR>"; while (<$btc>) { my ($date, $type, $info, $value, $balance) = ($_ =~ /^\d+,\"(\d{4}-\d{2}-\d{2}) .+?\",(.+?),(.+?),(.+?),(.+)/); $date || next; if (my ($x, $y) = $value =~ /(.*)E(.*)/) { $value = $x * (10 ** $y); } $array{$date}{$type} += $value; $array{$date}{balance} = $balance; if ($type eq "in") { my ($price) = ($info =~ /at \$?(\d+\.\d+)/); if ($info =~ /\$/) { $array{$date}{totalspentusd} += ($price * $value); $array{$date}{totalboughtwithusd} += $value; } else { $array{$date}{totalspenteur} += ($price * $value); $array{$date}{totalboughtwitheur} += $value; } } elsif ($type eq "out") { my ($price) = ($info =~ /at \$?(\d+\.\d+)/); if ($info =~ /\$/) { $array{$date}{totalreceiveusd} += ($price * $value); $array{$date}{totalsoldforusd} += $value; } else { $array{$date}{totalreceiveeur} += ($price * $value); $array{$date}{totalsoldforeur} += $value; } } }
foreach (sort keys %array) { if ($array{$_}{deposit} > 0) { print "\"$_\",\"DEPOSIT\",\"". sprintf("%.8f", $array{$_}{deposit})."\"<BR>\n"; } if ($array{$_}{withdraw} > 0) { print "\"$_\",\"WITHDRAW\",\"". sprintf("%.8f", $array{$_}{withdraw})."\"<BR>\n"; } if ($array{$_}{fee} > 0) { print "\"$_\",\"FEES\",\"". sprintf("%.8f", $array{$_}{fee})."\"<BR>\n"; } if ($array{$_}{totalboughtwithusd} > 0) { print "\"$_\",\"BUY\",\"". sprintf("%.8f", $array{$_}{totalboughtwithusd})."\",\"". $array{$_}{totalspentusd}/$array{$_}{totalboughtwithusd} ." USD\"<BR>\n"; } if ($array{$_}{totalboughtwitheur} > 0) { print "\"$_\",\"BUY\",\"". sprintf("%.8f", $array{$_}{totalboughtwitheur})."\",\"". $array{$_}{totalspenteur}/$array{$_}{totalboughtwitheur} ." EUR\"<BR>\n"; } if ($array{$_}{totalsoldforusd} > 0) { print "\"$_\",\"SELL\",\"". sprintf("%.8f", $array{$_}{totalsoldforusd})."\",\"". $array{$_}{totalreceiveusd}/$array{$_}{totalsoldforusd} ." USD\"<BR>\n"; } if ($array{$_}{totalsoldforeur} > 0) { print "\"$_\",\"SELL\",\"". sprintf("%.8f", $array{$_}{totalsoldforeur})."\",\"". $array{$_}{totalreceiveeur}/$array{$_}{totalsoldforeur} ." EUR\"<BR>\n"; } } for (keys %array) { delete $array{$_}; } print "<BR><BR>USD:<BR>"; while (<$usd>) { my ($date, $type, $info, $value, $balance) = ($_ =~ /^\d+,\"(\d{4}-\d{2}-\d{2}) .+?\",(.+?),(.+?),(.+?),(.+)/); $date || next; if (my ($x, $y) = $value =~ /(.*)E(.*)/) { $value = $x * (10 ** $y); } $array{$date}{$type} += $value; $array{$date}{balance} = $balance; if ($type eq "spent") { my ($btc, $price) = ($info =~ /(\d+\.\d+).*?BTC at \$?(\d+\.\d+)/); $array{$date}{totalspent} += $value; $array{$date}{totalboughtbtc} += $btc; } elsif ($type eq "earned") { my ($btc, $price) = ($info =~ /(\d+\.\d+).*?BTC at \$?(\d+\.\d+)/); $array{$date}{totalreceive} += $value; $array{$date}{totalsoldbtc} += $btc; } } foreach (sort keys %array) {
if ($array{$_}{deposit} > 0) { print "\"$_\",\"DEPOSIT\",\"". sprintf("%.8f", $array{$_}{deposit}) . " USD\"<BR>\n"; } if ($array{$_}{withdraw} > 0) { print "\"$_\",\"WITHDRAW\",\"". sprintf("%.8f", $array{$_}{withdraw}) . " USD\"<BR>\n"; } if ($array{$_}{fee} > 0) { print "\"$_\",\"FEES\",\"". sprintf("%.8f", $array{$_}{fee}) . " USD\"<BR>\n"; } if ($array{$_}{totalboughtbtc} > 0) { print "\"$_\",\"BUY\",\"". sprintf("%.8f", $array{$_}{totalboughtbtc}) . " BTC\",\"". $array{$_}{totalspent}/$array{$_}{totalboughtbtc} ." USD\"<BR>\n"; } if ($array{$_}{totalsoldbtc} > 0) { print "\"$_\",\"SELL\",\"". sprintf("%.8f", $array{$_}{totalsoldbtc}) . " BTC\",\"". $array{$_}{totalreceive}/$array{$_}{totalsoldbtc} ." USD\"<BR>\n"; } } for (keys %array) { delete $array{$_}; } print "<BR><BR>EUR:<BR>"; while (<$eur>) { my ($date, $type, $info, $value, $balance) = ($_ =~ /^\d+,\"(\d{4}-\d{2}-\d{2}) .+?\",(.+?),(.+?),(.+?),(.+)/); $date || next; if (my ($x, $y) = $value =~ /(.*)E(.*)/) { $value = $x * (10 ** $y); } $array{$date}{$type} += $value; $array{$date}{balance} = $balance; if ($type eq "spent") { my ($btc, $price) = ($info =~ /(\d+\.\d+).*?BTC at \$?(\d+\.\d+)/); $array{$date}{totalspent} += $value; $array{$date}{totalboughtbtc} += $btc; } elsif ($type eq "earned") { my ($btc, $price) = ($info =~ /(\d+\.\d+).*?BTC at \$?(\d+\.\d+)/); $array{$date}{totalreceive} += $value; $array{$date}{totalsoldbtc} += $btc; } } foreach (sort keys %array) {
if ($array{$_}{deposit} > 0) { print "\"$_\",\"DEPOSIT\",\"". sprintf("%.8f", $array{$_}{deposit}) . " EUR\"<BR>\n"; } if ($array{$_}{withdraw} > 0) { print "\"$_\",\"WITHDRAW\",\"". sprintf("%.8f", $array{$_}{withdraw}) . " EUR\"<BR>\n"; } if ($array{$_}{fee} > 0) { print "\"$_\",\"FEES\",\"". sprintf("%.8f", $array{$_}{fee}) . " EUR\"<BR>\n"; } if ($array{$_}{totalboughtbtc} > 0) { print "\"$_\",\"BUY\",\"". sprintf("%.8f", $array{$_}{totalboughtbtc}) . " BTC\",\"". $array{$_}{totalspent}/$array{$_}{totalboughtbtc} ." EUR\"<BR>\n"; } if ($array{$_}{totalsoldbtc} > 0) { print "\"$_\",\"SELL\",\"". sprintf("%.8f", $array{$_}{totalsoldbtc}) . " BTC\",\"". $array{$_}{totalreceive}/$array{$_}{totalsoldbtc} ." EUR\"<BR>\n"; } }
print "</BODY></HTML>"; }
|
|
|
|
krzynek1
Newbie
Offline
Activity: 41
Merit: 0
|
|
April 18, 2013, 09:21:16 PM |
|
Can someone explain how to use those scripts?
I'm using windows 7, but if linux is required I can install debian for instance on Vbox
|
|
|
|
|