Guest User

Liqui Trade Extraction Script

a guest
Jan 6th, 2018
1,708
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 6.83 KB | None | 0 0
  1. # Instructions
  2. # You will need to sniff the apiKey from an existing API call after you are logged in and paste them here.
  3. # If you know what pairs you trade, you should keep only those you need in the pairs hash, or else every pair will be queried
  4. # The pairId(s) can be found in the select box dropdowns on the top right of the Trade History Page
  5.  
  6. # Some are "hidden", so you may have to loop through all numbers 1-260 or so to discover. I only found BCAP by trial and error (96)
  7.  
  8. # This doesn't spit out a CSV, but you can just paste the output here https://konklone.io/json/
  9. #
  10. # May take awhile to run, check the errors list for timeouts
  11.  
  12. require 'rubygems'
  13. require 'json'
  14.  
  15. key = 'REPLACE_WITH_API_KEY'
  16.  
  17. json_data = []
  18. successful_pairs = []
  19. failed_pairs = []
  20. non_traded_pairs = []
  21.  
  22. pairs = {
  23.     '1' => 'BTC/LTC',
  24.     '7' => 'BTC/DASH',
  25.     '10' => 'BTC/ICN',
  26.     '11' => 'BTC/ETH',
  27.     '16' => 'BTC/GNT',
  28.     '17' => 'BTC/WINGS',
  29.     '25' => 'BTC/WAVES',
  30.     '27' => 'BTC/MLN',
  31.     '28' => 'BTC/TIME',
  32.     '60' => 'BTC/REP',
  33.     '61' => 'BTC/EDG',
  34.     '67' => 'BTC/RLC',
  35.     '70' => 'BTC/TRST',
  36.     '78' => 'BTC/GNO',
  37.     '81' => 'BTC/GUP',
  38.     '84' => 'BTC/TAAS',
  39.     '90' => 'BTC/TKN',
  40.     '96' => 'BTC/BCAP',
  41.     '99' => 'BTC/ANT',
  42.     '102' => 'BTC/BAT',
  43.     '105' => 'BTC/QRL',
  44.     '108' => 'BTC/BNT',
  45.     '111' => 'BTC/MGO',
  46.     '114' => 'BTC/MYST',
  47.     '117' => 'BTC/SNGLS',
  48.     '120' => 'BTC/PTOY',
  49.     '123' => 'BTC/CFI',
  50.     '126' => 'BTC/SNM',
  51.     '129' => 'BTC/SNT',
  52.     '132' => 'BTC/MCO',
  53.     '135' => 'BTC/STORJ',
  54.     '138' => 'BTC/ADX',
  55.     '141' => 'BTC/EOS',
  56.     '144' => 'BTC/PAY',
  57.     '147' => 'BTC/XID',
  58.     '150' => 'BTC/OMG',
  59.     '153' => 'BTC/SAN',
  60.     '159' => 'BTC/CVC',
  61.     '162' => 'BTC/NET',
  62.     '165' => 'BTC/DGD',
  63.     '170' => 'BTC/OAX',
  64.     '173' => 'BTC/BCC',
  65.     '177' => 'BTC/DNT',
  66.     '180' => 'BTC/STX',
  67.     '183' => 'BTC/ZRX',
  68.     '186' => 'BTC/TNT',
  69.     '189' => 'BTC/AE',
  70.     '192' => 'BTC/VEN',
  71.     '195' => 'BTC/BMC',
  72.     '198' => 'BTC/MANA',
  73.     '201' => 'BTC/PRO',
  74.     '204' => 'BTC/KNC',
  75.     '207' => 'BTC/SALT',
  76.     '210' => 'BTC/IND',
  77.     '213' => 'BTC/TRX',
  78.     '216' => 'BTC/ENG',
  79.     '219' => 'BTC/AST',
  80.     '222' => 'BTC/REQ',
  81.     '225' => 'BTC/NEU',
  82.     '228' => 'BTC/SRN',
  83.     '29' => 'ETH/GNT',
  84.     '31' => 'ETH/LTC',
  85.     '33' => 'ETH/DASH',
  86.     '35' => 'ETH/ICN',
  87.     '37' => 'ETH/MLN',
  88.     '40' => 'ETH/WAVES',
  89.     '41' => 'ETH/TIME',
  90.     '62' => 'ETH/REP',
  91.     '64' => 'ETH/EDG',
  92.     '68' => 'ETH/RLC',
  93.     '71' => 'ETH/TRST',
  94.     '73' => 'ETH/WINGS',
  95.     '79' => 'ETH/GNO',
  96.     '82' => 'ETH/GUP',
  97.     '85' => 'ETH/TAAS',
  98.     '91' => 'ETH/TKN',
  99.     '100' => 'ETH/ANT',
  100.     '103' => 'ETH/BAT',
  101.     '106' => 'ETH/QRL',
  102.     '109' => 'ETH/BNT',
  103.     '112' => 'ETH/MGO',
  104.     '115' => 'ETH/MYST',
  105.     '118' => 'ETH/SNGLS',
  106.     '121' => 'ETH/PTOY',
  107.     '124' => 'ETH/CFI',
  108.     '127' => 'ETH/SNM',
  109.     '130' => 'ETH/SNT',
  110.     '133' => 'ETH/MCO',
  111.     '136' => 'ETH/STORJ',
  112.     '139' => 'ETH/ADX',
  113.     '142' => 'ETH/EOS',
  114.     '145' => 'ETH/PAY',
  115.     '148' => 'ETH/XID',
  116.     '151' => 'ETH/OMG',
  117.     '154' => 'ETH/SAN',
  118.     '160' => 'ETH/CVC',
  119.     '163' => 'ETH/NET',
  120.     '166' => 'ETH/DGD',
  121.     '171' => 'ETH/OAX',
  122.     '175' => 'ETH/BCC',
  123.     '178' => 'ETH/DNT',
  124.     '181' => 'ETH/STX',
  125.     '184' => 'ETH/ZRX',
  126.     '187' => 'ETH/TNT',
  127.     '190' => 'ETH/AE',
  128.     '193' => 'ETH/VEN',
  129.     '196' => 'ETH/BMC',
  130.     '199' => 'ETH/MANA',
  131.     '202' => 'ETH/PRO',
  132.     '205' => 'ETH/KNC',
  133.     '208' => 'ETH/SALT',
  134.     '211' => 'ETH/IND',
  135.     '214' => 'ETH/TRX',
  136.     '217' => 'ETH/ENG',
  137.     '220' => 'ETH/AST',
  138.     '223' => 'ETH/REQ',
  139.     '226' => 'ETH/NEU',
  140.     '229' => 'ETH/SRN',
  141.     '46' => 'USDT/LTC',
  142.     '47' => 'USDT/BTC',
  143.     '48' => 'USDT/DASH',
  144.     '49' => 'USDT/ETH',
  145.     '51' => 'USDT/ICN',
  146.     '52' => 'USDT/GNT',
  147.     '57' => 'USDT/WAVES',
  148.     '58' => 'USDT/MLN',
  149.     '59' => 'USDT/TIME',
  150.     '65' => 'USDT/REP',
  151.     '66' => 'USDT/EDG',
  152.     '69' => 'USDT/RLC',
  153.     '72' => 'USDT/TRST',
  154.     '74' => 'USDT/WINGS',
  155.     '80' => 'USDT/GNO',
  156.     '83' => 'USDT/GUP',
  157.     '86' => 'USDT/TAAS',
  158.     '92' => 'USDT/TKN',
  159.     '101' => 'USDT/ANT',
  160.     '104' => 'USDT/BAT',
  161.     '107' => 'USDT/QRL',
  162.     '110' => 'USDT/BNT',
  163.     '113' => 'USDT/MGO',
  164.     '116' => 'USDT/MYST',
  165.     '119' => 'USDT/SNGLS',
  166.     '122' => 'USDT/PTOY',
  167.     '125' => 'USDT/CFI',
  168.     '128' => 'USDT/SNM',
  169.     '131' => 'USDT/SNT',
  170.     '134' => 'USDT/MCO',
  171.     '137' => 'USDT/STORJ',
  172.     '140' => 'USDT/ADX',
  173.     '143' => 'USDT/EOS',
  174.     '146' => 'USDT/PAY',
  175.     '149' => 'USDT/XID',
  176.     '152' => 'USDT/OMG',
  177.     '155' => 'USDT/SAN',
  178.     '161' => 'USDT/CVC',
  179.     '164' => 'USDT/NET',
  180.     '167' => 'USDT/DGD',
  181.     '172' => 'USDT/OAX',
  182.     '176' => 'USDT/BCC',
  183.     '179' => 'USDT/DNT',
  184.     '182' => 'USDT/STX',
  185.     '185' => 'USDT/ZRX',
  186.     '188' => 'USDT/TNT',
  187.     '191' => 'USDT/AE',
  188.     '194' => 'USDT/VEN',
  189.     '197' => 'USDT/BMC',
  190.     '200' => 'USDT/MANA',
  191.     '203' => 'USDT/PRO',
  192.     '206' => 'USDT/KNC',
  193.     '209' => 'USDT/SALT',
  194.     '212' => 'USDT/IND',
  195.     '215' => 'USDT/TRX',
  196.     '218' => 'USDT/ENG',
  197.     '221' => 'USDT/AST',
  198.     '224' => 'USDT/REQ',
  199.     '227' => 'USDT/NEU',
  200.     '230' => 'USDT/SRN'
  201. }
  202. current = 1
  203. num_pairs = pairs.keys.length
  204. for i in pairs.keys
  205.   begin
  206.     puts "\nQuerying pair: #{pairs[i]} - #{current}/#{num_pairs}\n"
  207.     current = current + 1
  208.     output = `curl 'https://webapi.liqui.io/Market/Trades' -H 'pragma: no-cache' -H 'origin: https://liqui.io' -H 'accept-encoding: gzip, deflate, br' -H 'accept-language: en-US,en;q=0.9' -H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36' -H 'content-type: application/json;charset=UTF-8' -H 'accept: application/json, text/plain, */*' -H 'cache-control: no-cache' -H 'authority: webapi.liqui.io' -H 'referer: https://liqui.io/tradeHistory' --data-binary '{"pairId":#{i},"key":"#{key}"}' --compressed`
  209.     data = JSON.parse(output)
  210.     if !data['Value'].empty?
  211.       mapped_data = data['Value'].map do |d|
  212.         symbols = pairs[i.to_s].split('/')
  213.         action = d['Type'] == 1 ? 'Buy' : 'Sell'
  214.         # Date  Source  Symbol  Currency    Action  Price   Volume  Total
  215.         {
  216.             Date: Time.at(d['Create']).to_s,
  217.             Source: 'Liqui',
  218.             Symbol: symbols[1],
  219.             Currency: symbols[0],
  220.             Action: action,
  221.             Price: d['Price'],
  222.             Volume: d['Amount'],
  223.             Total: d['Summ']
  224.         }
  225.       end
  226.       json_data.push *mapped_data
  227.       puts "\nSuccess\n"
  228.     else
  229.       non_traded_pairs.push(i)
  230.       puts "\nNot Traded\n"
  231.     end
  232.   rescue
  233.     failed_pairs.push(i)
  234.     puts "\nFailed\n"
  235.   end
  236. end
  237.  
  238.  
  239. puts json_data.to_json.to_s
  240.  
  241.  
  242. unless failed_pairs.empty?
  243.   puts "\n\nFailed Pairs"
  244.   puts failed_pairs.join(',')
  245. end
Add Comment
Please, Sign In to add comment