Răsfoiți Sursa

(modify):尝试使用solscan获取 activites 数目

windowdog 1 lună în urmă
părinte
comite
8f44288b12
100 a modificat fișierele cu 973 adăugiri și 743 ștergeri
  1. 0 104
      src/code/00000_test_dexscreener_playwright_chrome.py
  2. 0 104
      src/code/00000_test_dexscreener_playwright_edge.py
  3. 0 106
      src/code/000_01_test_dexscreener_playwright.py
  4. 21 6
      src/code/000_test.py
  5. 131 0
      src/code/new_8002_add_get_getdalao_activites_number.py
  6. 23 32
      src/code/new_8002_get_transfer_info_bysolscan_playwright.py
  7. 182 0
      src/code/new_8003_handle_depth.py
  8. 95 0
      src/code/new_8004_merge_depth.py
  9. 3 2
      src/code/tempCodeRunnerFile.py
  10. 128 0
      src/code/test_my_find_zhuangjia/new_8002_add_get_getdalao_activites_number.py
  11. 24 33
      src/code/test_my_find_zhuangjia/new_8002_get_transfer_info_bysolscan_playwright.py
  12. 0 56
      src/code/test_my_find_zhuangjia/new_8003.py
  13. 31 6
      src/code/test_my_find_zhuangjia/new_8003_handle_depth.py
  14. 94 0
      src/code/test_my_find_zhuangjia/new_8004_merge_depth.py
  15. 0 9
      src/library/002.sql
  16. 4 0
      src/library/autojs.md
  17. 0 42
      src/library/dalao_one_token_transfer copy.sql
  18. 0 70
      src/library/dalao_one_token_transfer.sql
  19. 98 0
      src/library/find_token_relation.sql
  20. 78 0
      src/library/find_token_relation——02方案.sql
  21. 0 12
      src/library/mysql01.sql
  22. 0 56
      src/library/nanlysis.sql
  23. 0 51
      src/library/sql_xianyu.sql
  24. 0 54
      src/library/sql_xianyu001_myxiugai.sql
  25. 60 0
      src/library/xianyu_sql.sql
  26. 1 0
      src/library/爬虫结论
  27. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/.~sec_sol_transfer_depth_01.xlsx
  28. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/counts_sol_transfer_depth_01.xlsx
  29. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/endaddress_sol_transfer_depth_01.xlsx
  30. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_128StzFht2ALnHGTZN2CKdSwT7qav1T1mwLN1hUSwhFu.xlsx
  31. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_2Gj1xmqgxyFHuFxA6FHLcwYPHkqsdGf2H9bdtpYFxgzn.xlsx
  32. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_2GjViMLQBVX2F7F1xGwuxYUkYtPnJ4qusjxhX95DG7xQ.xlsx
  33. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_2TvYDht6fQ9WencbkdHo5zisdWU6z4EDvvTjdVekmqSJ.xlsx
  34. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_2dVcvshsWeRXAMoy7h2Ae1V5sNS6qcdLF5APMo9UZ6CR.xlsx
  35. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_2oLAt5nHoM8jrfFqqDvYcehXgn9oPkySCJsA1TALRWAN.xlsx
  36. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_2yt4c1KDiWDzz62aj6jSjHVpzd1WzAYvuAjqDPqKLLFR.xlsx
  37. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_367CqCGUSBhrpfhBoXxCKjbXBNP5aMFoyVHd1vQ5eHc8.xlsx
  38. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_3GH5GyVqRRdJZggekBrPLssHbW3Qg9Y1Dgsz8KG1hs1S.xlsx
  39. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_3RQzC86faRYAgHjWx3jnfbt8PfwM6cLLD81d73LinwBi.xlsx
  40. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_3ZfGsZtPW4z1VD9iD4tDrkocTGC2LjXMtZYHn3szTaf6.xlsx
  41. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_3gAJAMY5fRD4QymyHPik9db5FpRADBV1cJ7uzfpiVyDk.xlsx
  42. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_3tApYF7oDnXuu5oDrjXrYQHF2jo4ED4MRx4RjNxdEnKD.xlsx
  43. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_3vjvHYUVdaTDwaDxJJPM5d2ki3tLwKobMdPAMWmfDrE5.xlsx
  44. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_41Dkni5dyHranPKq8p9fTwQ7hy8dPPnR9iwMBmyM5sDj.xlsx
  45. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_41x6KhvrSbmf1285YUqHvQpc9BtYNek5A4xJ3sdbg4yL.xlsx
  46. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_4LQuLeQYrAsqHtsJ3s15dT8A4Jpbr6iEKnK2DJAL7ZNo.xlsx
  47. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_4ZStjfNTvTDHGsBGqQLTfXvtALMHwnfpUEdbnRmgbPVm.xlsx
  48. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_4bCghpnzid8MSw3KV4A449zqeFuKxL59f4rvKMAT3pLB.xlsx
  49. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_4g6MzgJ31eHwTgUWUrVAEkmcVZ5HYnKDurHq8Qa4ximt.xlsx
  50. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_4kBAKyY6wYgqHsWTUnanQCtqu8qCc5Ln2b4f4ubQqtbq.xlsx
  51. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_58YHxodnzZKxVBE5EsATs38ywEFV7M8ijjBoBkYAJY8J.xlsx
  52. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_5E7G5aiJcsNa6euqxEXgZdwGM3fu9sAVpqY8S5Hz2ETY.xlsx
  53. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_5FZ6h28UnFkZ43PRFvMcwSE9kcdT4YNmcxvqdpHe6MuW.xlsx
  54. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_5HKmPLjiFy7RqfWKCrrSGPvoXQnXfnBahRya8c13FgHd.xlsx
  55. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_5KepH8US17rotNGJfZFpPRZShERGJnKwDieVxgeEH6vr.xlsx
  56. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_5N3mvHw9ZiZ78vQFcMrZ4dT9tQ98SSsE5dJQeqciV7Km.xlsx
  57. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_5ci8DDNfyBhcrV7aqbNRRwQRNSGeZMrtt5xvj79TQMqw.xlsx
  58. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_5d2PUxoqCcRSThzgtHx8gEH3zeqZsWbAEpzaM5zmGFF5.xlsx
  59. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_5d9b1VxTz34nKuWaLAQ4oTzo9rrNLVxWycjds4pGBmfr.xlsx
  60. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_5eftcUwY3GHQ8gtJ7h4sfodfj1Lwo94bDGVmavKGyNMy.xlsx
  61. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_62GvRgevD9g93xoyV8SjFL5VKF2h7YhCvJWiLzfNm8uC.xlsx
  62. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_6iXMRCCBuXDNP2sEKERdqYwJn8BzLjH55NCu2RcsYg2Z.xlsx
  63. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_71miLUAUhRmLtahde3e79XzG3yLQGDkw3vkJhRrr1WBq.xlsx
  64. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_7vQ49m5dsgfKPBSwUzE3epRYjD3DLXEXXLEnrn1bD3ac.xlsx
  65. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_88ux1j5Dmv9QrtBLxCVie5marpNv6iuocHjeUQs297ki.xlsx
  66. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_8D4bknJuKUH1LgxAXLAJ9ZcQz2Grfd2uyF37QpmQgyWc.xlsx
  67. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_8cy6GzSnnY967otEFMPhkpUKKqaqHb1LMGSNnQvwvBUr.xlsx
  68. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_8yBgWwLK6JBKVVpqtAxnjcf75qRPNBiHH85wruwp6rin.xlsx
  69. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_95GgGqZx9EjHrpcARw8k51KPKjJ9HsdQPq2j7HmPNoSn.xlsx
  70. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_9LB364wgGh3Mc57Mvg9Vi2gzLFjc7sJBUkRgQ5sBfaej.xlsx
  71. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_9R4gSQNZPbEiJMKm12fVAh7pVKPBXjbiojHxHeUSe14b.xlsx
  72. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_9U2nDnZEHADzrJHzzBVU3eJQKmf1tQ3pWh7zCKKyj18s.xlsx
  73. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_9Yjr9BhdFthLzQMW4kY7j6rcDKXC3Wvj74p7bCsFVyyJ.xlsx
  74. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_9gpss8bMuEA5jfunfL3eCDJNZ5fpc3vY2phWFKpr1YwR.xlsx
  75. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_9kTx1no1d1C81N8zFT6ck4S5zvKsgpbbLEUf5KZJeC32.xlsx
  76. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_9p4LXuXDsY6Ec168bdLM8vL5PwYrfpNcoHYg3cifz97F.xlsx
  77. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_9zcddzV4MZR41c4CHMcyy7t8z8o8kTbGst3xi3rrbnkZ.xlsx
  78. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_AFcXNrFiQehbJxFePzabUBKeyvF2kVhKjkYXiS5EtcoK.xlsx
  79. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_AgPsPtpAiQqMtcmSsGEGvje1dXTco3NGi1gAF7gvYC7L.xlsx
  80. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_BAgn8NWpFqkXHkGeztqJU69rq3f5ngzX97f793K1BKmG.xlsx
  81. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_BBjXNAHiim3QMALgBhHjDkXNVhNwE9FAsC8SN1ePayeq.xlsx
  82. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_BNBx8JBvxrmM699C92bZQ7VKngdfcdudFcQrH7oLnFvw.xlsx
  83. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_BXvEmdFHrSCDE1DYg47U1SgW6juGtSHfx32ijpM5oq23.xlsx
  84. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_Bfm6Q11iuFoaK8HnWTP14ZLwqBXMm35KSJtTb1PuErVX.xlsx
  85. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_BodPAcQsBE55C5jYn2UwpKK232YdLnhDaWYamshzvX5t.xlsx
  86. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_Bt65TtMCey7GARig16qp7LmxzYHwWyBitKJBswPeFsXE.xlsx
  87. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_C7JWFr5NHJ5kVmu9z5qjttgvgnSGaUyJsUzc3PuqE6BP.xlsx
  88. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_CQvgGA9MbyKrpdKW7PhjJDy8LeJY6tb4ACe9Yb5QVBx8.xlsx
  89. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_CSjHti7ML8zUuCY8WwLbMVJMJghT9vPeviuFE273zMwn.xlsx
  90. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_CYBX2h2cFVUqDWnbemmo7UndkyfHKWM5e77eqyTN8ma6.xlsx
  91. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_CrHNNo7Eq7ELtNS7GAVb881go9MryF3UqkzsB7YgWDJZ.xlsx
  92. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_CwTNqDtpCg9ZBD9Kfsh8iPjrzrWmywjNzYsYD1LY5Y9x.xlsx
  93. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_DS7wjwsSqDJStxpfUb8qJLf57NvHvGPQ4z2XNVBVGa4m.xlsx
  94. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_DZQ7yP5jZ2K5G9PhXKgjqWr9a7Ne2yd8tna6cXHQqXn3.xlsx
  95. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_DZuiugsZ8bJNLYnkLE3aK6Fyj3PdGEeev2kUQ9htk1No.xlsx
  96. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_DugBdsvaN7PsEPK5xefi9g84RgC7PLsPY42Rt1UJvqjy.xlsx
  97. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_Dx7Vfq9f5UAMB2BUwi3WHNnhyo2pWipKFk54wTunk6Uq.xlsx
  98. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_E3hscp88Hmp4tp8E6rXKdhxTWVCLKpHFQQSPuKNQxi3N.xlsx
  99. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_EYMogFcMChGBsKEcMBDpzUTWeBh8fNBjyDRYKchR2dm.xlsx
  100. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_F4epX4JL7N1cwwtazSvaCXatHu1cN5VurbiXocauf8oM.xlsx

+ 0 - 104
src/code/00000_test_dexscreener_playwright_chrome.py

@@ -1,104 +0,0 @@
-
-# from datetime import datetime, timezone
-# from playwright.async_api import async_playwright, Playwright
-# from playwright.sync_api import expect
-from playwright.async_api import Playwright, async_playwright, expect
-import random
-import time
-import datetime
-import asyncio
-import pathlib
-import shutil
-old_print = print
-
-
-def timestamped_print(*args, **kwargs):
-    old_print(datetime.datetime.utcnow().replace(
-        microsecond=0), *args, **kwargs)
-
-
-print = timestamped_print
-print('\n'*5)
-print(f"{'{:<6}'.format('ENTER')} {baseclass.scriptfilename} ----------------NOTE-----------NOTE---------------")
-
-
-def makedirpath(   folder):
-    pathlib.Path(folder).mkdir(exist_ok=True)
-
-def rmfolder(  folder):
-    if pathlib.Path(folder).exists():
-        shutil.rmtree(folder)
-
-
-# Python中windows路径的3种写法
-# 可以是以下这样写:
-utc_timeto = int(time.time())
-utc_timefrom = int(utc_timeto - 17*24*3600)
-utc_timeto = int(utc_timeto + 2*24*3600)
-
- 
-
-
-async def do_some_thing(playwright      ):
-
-    # browser =  playwright.chromium.launch(headless=True)
-    context = await playwright.chromium.launch_persistent_context(user_data_dir=USER_DIR_PATH, accept_downloads=True, headless=False)
-    # context = await playwright.firefox.launch_persistent_context(user_data_dir=USER_DIR_PATH, accept_downloads=True, headless=False)
-    # context = browser.new_context()
-    context.set_default_timeout(9000)
-    # context = await browser.new_context()
-    arr_page = [None]*2
-    arr_page[0] = await context.new_page()
-    page = arr_page[0]
-    await arr_page[0].goto(
-        "https://dexscreener.com/new-pairs?rankBy=trendingScoreH6&order=desc&chainIds=solana&dexIds=raydium&minLiq=40000&minAge=36&min5MChg=3" , timeout=100000)
-    cur_arr_str_dalaoAddress =[15]
-
-    print(context.pages)
-    await page.wait_for_timeout(100000)
-    time.sleep(5.5)
-    await page.close()
-    # for str_dalaoAddress_idx in range(0, len(cur_arr_str_dalaoAddress)):
-
-    #     arr_page[1] = await context.new_page()
-    #     page = arr_page[1]
-    #     await page.goto(  "https://dexscreener.com/new-pairs?rankBy=trendingScoreH6&order=desc&chainIds=solana&dexIds=raydium&minLiq=40000&minAge=36&min5MChg=3" 
-    #                     , timeout=10000)
-
-    #     # async with page.expect_download() as download_info:
-    #     #     try:
-    #     #         await page.goto(str_dalaoTransferUrl, timeout=0)
-    #     #     except:
-    #     #         # Wait for the download to start
-    #     #         download = await download_info.value
-    #     #         # Wait for the download process to complete
-    #     #         print(await download.path())
-    #     #         # Save downloaded file somewhere
-    #     #         await download.save_as(baseclass.dalao_ori_tran_txhash_solscan_path / f"ori_txhash_{str_dalaoAddress}.csv")
-    #     #     await page.wait_for_timeout(200)
-    #     await page.wait_for_timeout(10000)
-    #     time.sleep(5.5)
-    #     await page.close()
-
-    await context.close()
-
-
-async def get_onedriver_swapactivities(    ):
-    async with async_playwright() as playwright:
-        # playwright = Playwright().start()
-        await do_some_thing(playwright )
-
-
-async def main():
-    print("enter main()")
-
-    await get_onedriver_swapactivities(        )
-
-
- 
- 
-USER_DIR_PATH =    "./browsercookie_path"
-makedirpath(USER_DIR_PATH)
-asyncio.run(main())
-# main()
-print(f"{'{:<6}'.format('END')}  ----------------NOTE-----------NOTE---------------")

+ 0 - 104
src/code/00000_test_dexscreener_playwright_edge.py

@@ -1,104 +0,0 @@
-
-# from datetime import datetime, timezone
-# from playwright.async_api import async_playwright, Playwright
-# from playwright.sync_api import expect
-from playwright.async_api import Playwright, async_playwright, expect
-import random
-import time
-import datetime
-import asyncio
-import pathlib
-import shutil
-old_print = print
-
-
-def timestamped_print(*args, **kwargs):
-    old_print(datetime.datetime.utcnow().replace(
-        microsecond=0), *args, **kwargs)
-
-
-print = timestamped_print
-print('\n'*5)
-print(f"{'{:<6}'.format('ENTER')} {baseclass.scriptfilename} ----------------NOTE-----------NOTE---------------")
-
-
-def makedirpath(   folder):
-    pathlib.Path(folder).mkdir(exist_ok=True)
-
-def rmfolder(  folder):
-    if pathlib.Path(folder).exists():
-        shutil.rmtree(folder)
-
-
-# Python中windows路径的3种写法
-# 可以是以下这样写:
-utc_timeto = int(time.time())
-utc_timefrom = int(utc_timeto - 17*24*3600)
-utc_timeto = int(utc_timeto + 2*24*3600)
-
- 
-
-
-async def do_some_thing(playwright      ):
-
-    # browser =  playwright.chromium.launch(headless=True)
-    context = await playwright.chromium.launch_persistent_context(  channel="msedge",user_data_dir=USER_DIR_PATH, accept_downloads=True, headless=False)
-    # context = await playwright.firefox.launch_persistent_context(user_data_dir=USER_DIR_PATH, accept_downloads=True, headless=False)
-    # context = browser.new_context()
-    context.set_default_timeout(9000)
-    # context = await browser.new_context()
-    arr_page = [None]*2
-    arr_page[0] = await context.new_page()
-    page = arr_page[0]
-    await arr_page[0].goto(
-        "https://dexscreener.com/new-pairs?rankBy=trendingScoreH6&order=desc&chainIds=solana&dexIds=raydium&minLiq=40000&minAge=36&min5MChg=3" , timeout=100000)
-    cur_arr_str_dalaoAddress =[15]
-
-    print(context.pages)
-    await page.wait_for_timeout(100000)
-    time.sleep(5.5)
-    await page.close()
-    # for str_dalaoAddress_idx in range(0, len(cur_arr_str_dalaoAddress)):
-
-    #     arr_page[1] = await context.new_page()
-    #     page = arr_page[1]
-    #     await page.goto(  "https://dexscreener.com/new-pairs?rankBy=trendingScoreH6&order=desc&chainIds=solana&dexIds=raydium&minLiq=40000&minAge=36&min5MChg=3" 
-    #                     , timeout=10000)
-
-    #     # async with page.expect_download() as download_info:
-    #     #     try:
-    #     #         await page.goto(str_dalaoTransferUrl, timeout=0)
-    #     #     except:
-    #     #         # Wait for the download to start
-    #     #         download = await download_info.value
-    #     #         # Wait for the download process to complete
-    #     #         print(await download.path())
-    #     #         # Save downloaded file somewhere
-    #     #         await download.save_as(baseclass.dalao_ori_tran_txhash_solscan_path / f"ori_txhash_{str_dalaoAddress}.csv")
-    #     #     await page.wait_for_timeout(200)
-    #     await page.wait_for_timeout(10000)
-    #     time.sleep(5.5)
-    #     await page.close()
-
-    await context.close()
-
-
-async def get_onedriver_swapactivities(    ):
-    async with async_playwright() as playwright:
-        # playwright = Playwright().start()
-        await do_some_thing(playwright )
-
-
-async def main():
-    print("enter main()")
-
-    await get_onedriver_swapactivities(        )
-
-
- 
- 
-USER_DIR_PATH =    "./browsercookie_path"
-makedirpath(USER_DIR_PATH)
-asyncio.run(main())
-# main()
-print(f"{'{:<6}'.format('END')}  ----------------NOTE-----------NOTE---------------")

+ 0 - 106
src/code/000_01_test_dexscreener_playwright.py

@@ -1,106 +0,0 @@
-
-# from datetime import datetime, timezone
-# from playwright.async_api import async_playwright, Playwright
-# from playwright.sync_api import expect
-from playwright.async_api import Playwright, async_playwright, expect
-import random
-
-from base_class import BaseVariableFunction
-from base_class import *
-baseclass = BaseVariableFunction(__file__)
-
-baseclass.makedirpath(baseclass.browsercookie_path)
-baseclass.makedirpath(baseclass.dalao_ori_tran_txhash_solscan_path)
-old_print = print
-
-
-def timestamped_print(*args, **kwargs):
-    old_print(datetime.datetime.utcnow().replace(
-        microsecond=0), *args, **kwargs)
-
-
-print = timestamped_print
-print('\n'*5)
-print(f"{'{:<6}'.format('ENTER')} {baseclass.scriptfilename} ----------------NOTE-----------NOTE---------------")
-# Python中windows路径的3种写法
-# 可以是以下这样写:
-utc_timeto = int(time.time())
-utc_timefrom = int(utc_timeto - 17*24*3600)
-utc_timeto = int(utc_timeto + 2*24*3600)
-
-def get_dalao_historysign_solscan(df):
-
-    utc_timeto = int(time.time())
-    utc_timefrom = int(utc_timeto - 17*24*3600)
-    utc_timeto = int(utc_timeto + 2*24*3600)
-    # 示例   https://api.solscan.io/v2/account/txs/export?address=2D4dLL47vA1k1EN4421aM9DzKp3VBDAqKj8iUTSBLktw&type=tokenchange&timefrom=1711900800&timeto=1714492799.999&account_type=account_main
-        # https://api-v2.solscan.io/v2/account/transfer/export?address=5bTgWQQE5Tb34BQQtUArj62PmFcVsaht2SGotAdq5fbt&activity_type[]=ACTIVITY_SPL_TRANSFER
-    # https://api-v2.solscan.io/v2/account/balance_change/export?address=Cft4hKtC3dVftfqmL2MCALpeCq7oWM7qpftNfVVUzA7h&time_from=1719763200&time_to=1721051816.123&account_type=account_main
-    
-    df['SolscanTransferUrl'] = df.apply(lambda ser: (
-        f"https://api-v2.solscan.io/v2/account/balance_change/export?address={ser['dalaoAddress']}&time_from={utc_timefrom}&time_to={utc_timeto}&account_type=account_main"), axis=1)
-
-    
-    return df
-
-
-async def do_some_thing(playwright      ):
-
-    # browser =  playwright.chromium.launch(headless=True)
-    # context = await playwright.chromium.launch_persistent_context(user_data_dir=USER_DIR_PATH, accept_downloads=True, headless=False)
-    context = await playwright.firefox.launch_persistent_context(user_data_dir=USER_DIR_PATH, accept_downloads=True, headless=False)
-    # context = browser.new_context()
-    context.set_default_timeout(9000)
-    # context = await browser.new_context()
-    arr_page = [None]*2
-    arr_page[0] = await context.new_page()
-    await arr_page[0].goto(
-        "https://dexscreener.com/new-pairs?rankBy=trendingScoreH6&order=desc&chainIds=solana&dexIds=raydium&minLiq=40000&minAge=36&min5MChg=3")
-    cur_arr_str_dalaoAddress =[1,2,3,4,5]
-
-    print(context.pages)
-
-    for str_dalaoAddress_idx in range(0, len(cur_arr_str_dalaoAddress)):
-
-        arr_page[1] = await context.new_page()
-        page = arr_page[1]
-        await page.goto(  "https://dexscreener.com/new-pairs?rankBy=trendingScoreH6&order=desc&chainIds=solana&dexIds=raydium&minLiq=40000&minAge=36&min5MChg=3" 
-                        , timeout=10000)
-
-        # async with page.expect_download() as download_info:
-        #     try:
-        #         await page.goto(str_dalaoTransferUrl, timeout=0)
-        #     except:
-        #         # Wait for the download to start
-        #         download = await download_info.value
-        #         # Wait for the download process to complete
-        #         print(await download.path())
-        #         # Save downloaded file somewhere
-        #         await download.save_as(baseclass.dalao_ori_tran_txhash_solscan_path / f"ori_txhash_{str_dalaoAddress}.csv")
-        #     await page.wait_for_timeout(200)
-        await page.wait_for_timeout(10000)
-        time.sleep(5.5)
-        await page.close()
-
-    await context.close()
-
-
-async def get_onedriver_swapactivities(    ):
-    async with async_playwright() as playwright:
-        # playwright = Playwright().start()
-
-        await do_some_thing(playwright )
-
-
-async def main():
-    print("enter main()")
-
-    await get_onedriver_swapactivities(        )
-
-
- 
- 
-USER_DIR_PATH = baseclass.browsercookie_path
-asyncio.run(main())
-# main()
-print(f"{'{:<6}'.format('END')} {baseclass.scriptfilename} ----------------NOTE-----------NOTE---------------")

+ 21 - 6
src/code/000_test.py

@@ -1,9 +1,24 @@
+import httpx
 
+my_headers = [
+    "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36",
+    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36",
+    "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0",
+    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/537.75.14",
+    "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0)",
+    'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11',
+    'Opera/9.25 (Windows NT 5.1; U; en)',
+    'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)',
+    'Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.5 (like Gecko) (Kubuntu)',
+    'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.12) Gecko/20070731 Ubuntu/dapper-security Firefox/1.5.0.12',
+    'Lynx/2.8.5rel.1 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/1.2.9',
+    "Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.7 (KHTML, like Gecko) Ubuntu/11.04 Chromium/16.0.912.77 Chrome/16.0.912.77 Safari/535.7",
+    "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:10.0) Gecko/20100101 Firefox/10.0 "
 
+]
+headers = {
+    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36",
+}
 
-aa = "-$6.9-3.21%"
-
-res = aa.split("-")
-
-print(res)
-
+res = httpx.get(url='https://solscan.io/account/3ZfGsZtPW4z1VD9iD4tDrkocTGC2LjXMtZYHn3szTaf6#defiactivities', headers=headers, timeout=10, verify=False)
+print(res.text)

+ 131 - 0
src/code/new_8002_add_get_getdalao_activites_number.py

@@ -0,0 +1,131 @@
+
+# from datetime import datetime, timezone
+# from playwright.async_api import async_playwright, Playwright
+# from playwright.sync_api import expect
+from playwright.async_api import Playwright, async_playwright, expect
+import random
+
+from base_class import BaseVariableFunction
+from base_class import *
+baseclass = BaseVariableFunction(__file__)
+
+baseclass.makedirpath(baseclass.browsercookie_path)
+baseclass.makedirpath(baseclass.dalao_solscan_info_path)
+old_print = print
+
+
+def timestamped_print(*args, **kwargs):
+    old_print(datetime.datetime.utcnow().replace(
+        microsecond=0), *args, **kwargs)
+
+
+print = timestamped_print
+print('\n'*5)
+print(f"{'{:<6}'.format('ENTER')} {baseclass.scriptfilename} ----------------NOTE-----------NOTE---------------")
+ 
+
+async def do_some_thing(playwright,   arr_url_dalao , url_type):
+
+    # browser =  playwright.chromium.launch(headless=True)
+    context = await playwright.firefox.launch_persistent_context(user_data_dir=USER_DIR_PATH, accept_downloads=True, headless=False)
+    # context = browser.new_context()
+    context.set_default_timeout(19000)
+    # context = await browser.new_context()
+    arr_page = [None]*2
+    arr_page[0] = await context .new_page()
+    await arr_page[0].goto(
+        "https://solscan.io/")
+    await asyncio.sleep(30)
+
+    # print(context.pages)
+
+    for idx_url in range(0, len(arr_url_dalao)):
+
+        str_dalaoTransferUrl = arr_url_dalao[idx_url]
+        str_dalaoaddress =obj_url_2_dalao[str_dalaoTransferUrl]
+        
+        print(f"enter str_dalaoaddress= {str_dalaoaddress}")
+        print(f"enter str_dalaoTransferUrl= {str_dalaoTransferUrl}")
+        print(f"cur_arr_str_dalaoaddress remainder = {len(arr_url_dalao)-idx_url}")
+        arr_page[1] = await context.new_page()
+        page = arr_page[1]
+        await asyncio.sleep(3)
+
+        # tbody_ = page.locator(
+        #     'table.w-full tbody')
+        await page.wait_for_selector('#account-tabs',timeout=15000)
+        await page.wait_for_selector('#account-tabs iv.flex.flex-col.gap-4.items-stretch.justify-start',timeout=15000)
+        arr_div =await page.locator("#account-tabs div.flex.flex-col.gap-4.items-stretch.justify-start div.flex.gap-1.flex-row.items-center.justify-start.flex-wrap").all()
+        # await asyncio.sleep(3)
+        str_tx_info =(await arr_div[0].text_content().strip())
+        #arr_tds = await last_tr.locator('td').all()
+        # p_token_last_active =  arr_tds[0].locator("p")
+        # str_token_last_active =( await p_token_last_active.text_content()).strip()
+
+        print(str_tx_info)
+ 
+ 
+
+
+        time.sleep(1)
+        await page.close()
+
+    await context.close()
+
+
+async def get_onedriver_swapactivities( arr_url_dalao , url_type):
+    async with async_playwright() as playwright:
+
+        await do_some_thing(playwright, arr_url_dalao, url_type)
+
+
+async def main():
+    print("enter main()")
+    if len(arr_dalao_url)>0:
+        await get_onedriver_swapactivities(
+            arr_url_dalao = arr_dalao_url , url_type = "transfer_counts")
+        await asyncio.sleep(3)
+        
+    # if len(arr_dalao_token_inflow_transfer_url)>0:
+    #     await get_onedriver_swapactivities(
+    #         arr_url_dalao = arr_dalao_token_inflow_transfer_url , url_type = "swap_counts")
+    #     await asyncio.sleep(3)
+ 
+
+
+df = pd.read_excel(baseclass.dalao_tran_gmgnOrdex_path /
+                 "input_dalao.xlsx", dtype=object)
+
+arr_str_dalaoaddress = df['dalaoaddress'].tolist()
+arr_str_dalaoaddress=arr_str_dalaoaddress[0:4]
+# arr_dalao_sol_transfer_url =[]
+arr_dalao_url = []
+arr_dalao_swap = []
+obj_url_2_dalao={
+    
+}
+def init():
+    now_time = time.time()
+    global obj_url_2_dalao
+    global arr_dalao_sol_transfer_url ,arr_dalao_token_inflow_transfer_url ,arr_dalao_token_outflow_transfer_url , arr_dalao_usdc_transfer_url
+    for str_dalaoaddress in arr_str_dalaoaddress:
+        # file = baseclass.dalao_solscan_info_path / f"ori_txhash_{str_dalaoaddress}.csv"
+        dalao_transfer_counts_file = baseclass.dalao_solscan_info_path / f"dalao_transfer_counts.json"
+        # token_inflow_transfer_file = baseclass.dalao_solscan_info_path / f"token_inflow_{str_dalaoaddress}.csv"
+   
+        url_transfer = f"https://solscan.io/account/{str_dalaoaddress}"  
+        # url_transfer = f"https://solscan.io/account/{str_dalaoaddress}#transfers"  
+        url_swap = f"https://solscan.io/account/{str_dalaoaddress}#defiactivities"     
+        arr_dalao_url.append(url_transfer)
+        obj_url_2_dalao[url_transfer] = str_dalaoaddress
+        
+ 
+            
+
+
+init()
+ 
+downloads_path = baseclass.dalao_solscan_info_path
+USER_DIR_PATH = baseclass.browsercookie_path
+asyncio.run(main())
+print(f"{'{:<6}'.format('END')} {baseclass.scriptfilename} ----------------NOTE-----------NOTE---------------")

+ 23 - 32
src/code/new_8002_get_transfer_info_bysolscan_playwright.py

@@ -79,14 +79,12 @@ async def main():
             arr_url_dalao = arr_dalao_sol_transfer_url , url_type = "sol_transfer")
         await asyncio.sleep(3)
         
-    if len(arr_dalao_token_inflow_transfer_url)>0:
+    if len(arr_dalao_token_transfer_url)>0:
         await get_onedriver_swapactivities(
-            arr_url_dalao = arr_dalao_token_inflow_transfer_url , url_type = "token_inflow")
-        await asyncio.sleep(3)
-    if len(arr_dalao_token_outflow_transfer_url)>0:
-        await get_onedriver_swapactivities(
-            arr_url_dalao = arr_dalao_token_outflow_transfer_url , url_type = "token_outflow")
+            arr_url_dalao = arr_dalao_token_transfer_url , url_type = "token_transfer")
         await asyncio.sleep(3)
+ 
+ 
     if len(arr_dalao_usdc_transfer_url)>0:
         await get_onedriver_swapactivities(
             arr_url_dalao = arr_dalao_usdc_transfer_url , url_type = "usdc_transfer")
@@ -98,8 +96,8 @@ df = pd.read_excel(baseclass.dalao_tran_gmgnOrdex_path /
 
 arr_str_dalaoaddress = df['dalaoaddress'].tolist()
 arr_dalao_sol_transfer_url =[]
-arr_dalao_token_inflow_transfer_url =[]
-arr_dalao_token_outflow_transfer_url =[]
+arr_dalao_token_transfer_url =[]
+ 
 arr_dalao_usdc_transfer_url =[]
 obj_url_2_dalao={
     
@@ -107,22 +105,24 @@ obj_url_2_dalao={
 def init():
     now_time = time.time()
     global obj_url_2_dalao
-    global arr_dalao_sol_transfer_url ,arr_dalao_token_inflow_transfer_url ,arr_dalao_token_outflow_transfer_url , arr_dalao_usdc_transfer_url
-    for str_dalaoaddress in arr_str_dalaoaddress:
-        # file = baseclass.dalao_solscan_info_path / f"ori_txhash_{str_dalaoaddress}.csv"
+    global arr_dalao_sol_transfer_url ,arr_dalao_token_transfer_url ,    arr_dalao_usdc_transfer_url
+    for str_dalaoaddress in arr_str_dalaoaddress: 
+ 
         sol_transfer_file = baseclass.dalao_solscan_info_path / f"sol_transfer_{str_dalaoaddress}.csv"
-        token_inflow_transfer_file = baseclass.dalao_solscan_info_path / f"token_inflow_{str_dalaoaddress}.csv"
-        token_outflow_transfer_file = baseclass.dalao_solscan_info_path / f"token_outflow_{str_dalaoaddress}.csv"
+        token_transfer_file = baseclass.dalao_solscan_info_path / f"token_transfer_{str_dalaoaddress}.csv"
         usdc_transfer_file = baseclass.dalao_solscan_info_path / f"usdc_transfer_{str_dalaoaddress}.csv"
         
  
         url_sol_transfer = f"https://api-v2.solscan.io/v2/account/transfer/export?address={str_dalaoaddress}&activity_type[]=ACTIVITY_SPL_TRANSFER&activity_type[]=ACTIVITY_SPL_MINT&amount[]=0.3&amount[]=undefined&token=So11111111111111111111111111111111111111111&exclude_amount_zero=true&remove_spam=true"    
-        url_token_inflow_transfer = f"https://api-v2.solscan.io/v2/account/transfer/export?address={str_dalaoaddress}&activity_type[]=ACTIVITY_SPL_TRANSFER&activity_type[]=ACTIVITY_SPL_MINT&exclude_token=So11111111111111111111111111111111111111111&exclude_amount_zero=true&remove_spam=true&flow=in"
-        url_token_outflow_transfer = f"https://api-v2.solscan.io/v2/account/transfer/export?address={str_dalaoaddress}&activity_type[]=ACTIVITY_SPL_TRANSFER&activity_type[]=ACTIVITY_SPL_MINT&exclude_token=So11111111111111111111111111111111111111111&exclude_amount_zero=true&remove_spam=true&flow=out"
+        # url_token_inflow_transfer = f"https://api-v2.solscan.io/v2/account/transfer/export?address={str_dalaoaddress}&activity_type[]=ACTIVITY_SPL_TRANSFER&activity_type[]=ACTIVITY_SPL_MINT&exclude_token=So11111111111111111111111111111111111111111&exclude_amount_zero=true&remove_spam=true&flow=in"
+        # url_token_outflow_transfer = f"https://api-v2.solscan.io/v2/account/transfer/export?address={str_dalaoaddress}&activity_type[]=ACTIVITY_SPL_TRANSFER&activity_type[]=ACTIVITY_SPL_MINT&exclude_token=So11111111111111111111111111111111111111111&exclude_amount_zero=true&remove_spam=true&flow=out"
+        url_token_transfer = f"https://api-v2.solscan.io/v2/account/transfer/export?address={str_dalaoaddress}&activity_type[]=ACTIVITY_SPL_TRANSFER&activity_type[]=ACTIVITY_SPL_MINT&exclude_token=So11111111111111111111111111111111111111111&exclude_amount_zero=true&remove_spam=true"
+ 
+        
         url_usdc_transfer = f"https://api-v2.solscan.io/v2/account/transfer/export?address={str_dalaoaddress}&activity_type[]=ACTIVITY_SPL_TRANSFER&activity_type[]=ACTIVITY_SPL_MINT&amount[]=100&amount[]=undefined&token=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v&exclude_amount_zero=true&remove_spam=true"
         obj_url_2_dalao[url_sol_transfer] =str_dalaoaddress
-        obj_url_2_dalao[url_token_inflow_transfer] =str_dalaoaddress
-        obj_url_2_dalao[url_token_outflow_transfer] =str_dalaoaddress
+ 
+        obj_url_2_dalao[url_token_transfer] =str_dalaoaddress
         obj_url_2_dalao[url_usdc_transfer] =str_dalaoaddress
         
     
@@ -136,26 +136,17 @@ def init():
         else:
             arr_dalao_sol_transfer_url.append(url_sol_transfer)
             
-        if token_inflow_transfer_file.exists():
-            modified_time  =  token_inflow_transfer_file.stat().st_mtime
-            # 3 * 60 分钟内不会在获取
-            if(now_time -modified_time >3*60*60):
-                arr_dalao_token_inflow_transfer_url.append(url_token_inflow_transfer)
-            else:
-                pass
-        else:
-            arr_dalao_token_inflow_transfer_url.append(url_token_inflow_transfer)
-            
-        if token_outflow_transfer_file.exists():
-            modified_time  =  token_outflow_transfer_file.stat().st_mtime
+        if token_transfer_file.exists():
+            modified_time  =  token_transfer_file.stat().st_mtime
             # 3 * 60 分钟内不会在获取
             if(now_time -modified_time >3*60*60):
-                arr_dalao_token_outflow_transfer_url.append(url_token_outflow_transfer)
+                arr_dalao_token_transfer_url.append(url_token_transfer)
             else:
                 pass
         else:
-            arr_dalao_token_outflow_transfer_url.append(url_token_outflow_transfer)
+            arr_dalao_token_transfer_url.append(url_token_transfer)
             
+ 
         if usdc_transfer_file.exists():
             modified_time  =  usdc_transfer_file.stat().st_mtime
             # 3 * 60 分钟内不会在获取
@@ -170,7 +161,7 @@ def init():
 
 
 init()
-if len(arr_dalao_sol_transfer_url) ==0 and len(arr_dalao_token_inflow_transfer_url) ==0 and len(arr_dalao_token_outflow_transfer_url) ==0 and len(arr_dalao_usdc_transfer_url)==0:
+if len(arr_dalao_sol_transfer_url) ==0 and len(arr_dalao_token_transfer_url) ==0 and  len(arr_dalao_usdc_transfer_url)==0:
     print("dont has dalao need get")
     exit()
 

+ 182 - 0
src/code/new_8003_handle_depth.py

@@ -0,0 +1,182 @@
+
+# from datetime import datetime, timezone
+# from playwright.async_api import async_playwright, Playwright
+# from playwright.sync_api import expect
+ 
+from base_class import BaseVariableFunction
+from base_class import *
+baseclass = BaseVariableFunction(__file__)
+
+baseclass.makedirpath(baseclass.ana_dalao_relation_by_solscan_path )
+
+ 
+old_print = print
+
+
+def timestamped_print(*args, **kwargs):
+    old_print(datetime.datetime.utcnow().replace(
+        microsecond=0), *args, **kwargs)
+
+
+print = timestamped_print
+print('\n'*5)
+print(f"{'{:<6}'.format('ENTER')} {baseclass.scriptfilename} ----------------NOTE-----------NOTE---------------")
+ 
+arr_exclude_address=[
+    
+]
+arr_realtion_address =[]
+
+now_time = time.time()
+df = pd.read_excel(baseclass.dalao_tran_gmgnOrdex_path /
+                "input_dalao.xlsx", dtype=object)
+arr_str_dalaoaddress = df['dalaoaddress'].tolist()
+# arr_str_dalaoaddress=arr_str_dalaoaddress[0:2]
+arr_realtion_address  = arr_realtion_address + arr_str_dalaoaddress
+str_tokenaddress_dalao_source = "4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump"
+find_depth = "depth_01"
+
+baseclass.makedirpath(baseclass.ana_dalao_relation_by_solscan_path /str_tokenaddress_dalao_source    )
+baseclass.makedirpath(baseclass.ana_dalao_relation_by_solscan_path /str_tokenaddress_dalao_source /find_depth )
+baseclass.makedirpath(baseclass.ana_dalao_relation_by_solscan_path /str_tokenaddress_dalao_source /find_depth/"mid" )
+baseclass.makedirpath(baseclass.ana_dalao_relation_by_solscan_path /str_tokenaddress_dalao_source /find_depth/"final" )
+
+
+def drop_ex_txhash(gdf):
+    is_ex = False
+    if( ( gdf["action"] != "TRANSFER" )
+        | (gdf["timestamp"]<now_time - 1*30* 24* 3600 )
+        |( gdf["from"].isin(arr_exclude_address))
+        |( gdf["to"].isin(arr_exclude_address))
+        ).any( ):
+        is_ex = True
+    
+    if is_ex:
+        return None
+    if (  set( gdf["from"].tolist() ).intersection(gdf["to"].tolist())   ):
+        is_ex = True
+    if is_ex:
+        return None
+    return gdf
+
+
+def sum_same_tx_from_to(gdf ):
+    gdf["amount"] = sum(gdf["amount"])
+    gdf=gdf.drop_duplicates()
+    return gdf
+
+def sum_same_from_to(gdf ):
+    gdf["timestamp"] = max(gdf["timestamp"] )
+    gdf["datetime"] = max(gdf["datetime"] )
+    gdf["amount"] = sum(gdf["amount"])
+    gdf=gdf.drop_duplicates()
+    return gdf
+
+def handle_same_rel_address(gdf):
+    gdf["amount"] = max(gdf["amount"])
+    gdf["datetime"] = max(gdf["datetime"])
+    gdf["timestamp"] = max(gdf["timestamp"] )
+    gdf=gdf.drop_duplicates()
+    return gdf
+
+def get_dalao_len(gdf):
+    gdf["dalao_count"] = len(gdf)
+    
+    return  gdf
+
+
+def main():
+    global arr_exclude_address
+    for str_dalaoaddress in arr_str_dalaoaddress:
+        print(f"enter {str_dalaoaddress}")
+        cur_arr_realtion_address =arr_realtion_address.copy()
+        cur_arr_realtion_address.remove(str_dalaoaddress)
+        
+
+        df_sol_transfer =pd.read_csv(baseclass.dalao_solscan_info_path / f"sol_transfer_{str_dalaoaddress}.csv" ,dtype=object)
+        df_sol_transfer = df_sol_transfer.astype({
+            "Time":int,
+        })
+        
+        # df_token_inflow =pd.read_csv(baseclass.dalao_solscan_info_path / f"token_inflow_{str_dalaoaddress}.csv" ,dtype=object)
+        # df_token_outflow =pd.read_csv(baseclass.dalao_solscan_info_path / f"token_outflow_{str_dalaoaddress}.csv" ,dtype=object)
+        df_token_transfer =pd.read_csv(baseclass.dalao_solscan_info_path / f"token_transfer_{str_dalaoaddress}.csv" ,dtype=object)
+        df_token_transfer=df_token_transfer.astype({
+            "Time":int,
+        })
+        
+        time_min_df_token_transfer = df_token_transfer["Time"].min()
+        df_sol_transfer= df_sol_transfer[df_sol_transfer["Time"]>time_min_df_token_transfer].reset_index(drop=True)
+        
+        df_usdc_transfer =pd.read_csv(baseclass.dalao_solscan_info_path / f"usdc_transfer_{str_dalaoaddress}.csv" ,dtype=object)
+        
+
+        # Signature,Time,Action,From,To,Amount,Decimals,TokenAddress
+        
+        # inflow out time 选最大的那一个
+        
+
+        arr_no_sol_transfer_tx_01 = df_token_transfer["Signature"].tolist() +  df_usdc_transfer["Signature"].tolist()
+        
+        df_sol_transfer = df_sol_transfer[~df_sol_transfer["Signature"].isin(arr_no_sol_transfer_tx_01)].reset_index(drop=True)
+
+        df_sol_transfer.columns=["txhash","timestamp","action","from","to","amount","decimals","tokenaddress"]
+        df_sol_transfer=df_sol_transfer.astype({
+            "timestamp":int,
+            "amount":float,
+            "decimals":int,
+        })
+        
+    
+
+        df_sol_transfer = df_sol_transfer.groupby(by=["txhash"],  group_keys=False).apply(lambda gdf: drop_ex_txhash(gdf))
+ 
+ 
+        if(len(df_sol_transfer)==0):
+            continue
+        token_decimal  =  (df_sol_transfer["decimals"].tolist()[0])
+        df_sol_transfer["amount"] = df_sol_transfer["amount"] / 10**token_decimal
+        df_sol_transfer["amount"] = df_sol_transfer["amount"].round(2) 
+        df_sol_transfer["datetime"] = pd.to_datetime(df_sol_transfer['timestamp'], unit='s')  
+        df_sol_transfer = df_sol_transfer[["timestamp", "txhash", "datetime" ,"from","to","amount"]]     
+        
+        df_sol_transfer = df_sol_transfer.groupby(by = ["txhash","from","to" ],  group_keys=False).apply(lambda gdf: sum_same_tx_from_to(gdf))
+        
+        df_sol_transfer=df_sol_transfer.sort_values(by="timestamp",ascending=False)
+        df_sol_transfer.to_csv(baseclass.ana_dalao_relation_by_solscan_path /str_tokenaddress_dalao_source/find_depth/  "mid" /f"mid01_sol_transfer_{str_dalaoaddress}.csv",index=False)
+ 
+        df_sol_transfer = df_sol_transfer[[ "timestamp", "datetime", "from","to","amount"]]       
+        df_sol_transfer = df_sol_transfer.groupby(by = [ "from","to" ],  group_keys=False).apply(lambda gdf: sum_same_from_to(gdf))
+        
+        df_sol_transfer["is_exend"] = 0
+        df_sol_transfer["is_relationend"] = 0
+
+
+        df_sol_transfer['dalaoaddress'] = str_dalaoaddress
+        
+
+        df_sol_transfer.loc[( df_sol_transfer["from"].isin(cur_arr_realtion_address) | df_sol_transfer["to"].isin(cur_arr_realtion_address)),"is_relationend"] = 1
+ 
+        df_sol_transfer.loc[( df_sol_transfer["from"].isin(arr_exclude_address) | df_sol_transfer["to"].isin(arr_exclude_address)),"is_exend"] = 1
+        df_sol_transfer=df_sol_transfer.sort_values(by="timestamp",ascending=False)
+        df_sol_transfer.to_csv(baseclass.ana_dalao_relation_by_solscan_path /str_tokenaddress_dalao_source/find_depth/  "mid" /f"mid02_sol_transfer_{str_dalaoaddress}.csv",index=False)
+ 
+        df_sol_transfer['rel_address'] = df_sol_transfer.apply(lambda row: row['from'] if row['from']!= str_dalaoaddress else row['to'], axis=1)
+        
+
+
+        df_sol_transfer["dalao_count"] = 0
+        df_sol_transfer=df_sol_transfer.groupby(by = [ "rel_address" ],  group_keys=False).apply(lambda gdf: handle_same_rel_address(gdf))
+        df_sol_transfer=df_sol_transfer[ ['timestamp', 'datetime',   'amount', 'is_exend', 'is_relationend', 'dalaoaddress' , 'rel_address','dalao_count'  ]]
+        df_sol_transfer=df_sol_transfer.drop_duplicates()
+
+        
+
+        df_sol_transfer =   df_sol_transfer.groupby(by=["dalaoaddress"] ,group_keys=False  ).apply(lambda gdf:  get_dalao_len(gdf))
+        
+
+        df_sol_transfer=df_sol_transfer.sort_values(by="timestamp",ascending=False)
+        df_sol_transfer.to_excel(baseclass.ana_dalao_relation_by_solscan_path /str_tokenaddress_dalao_source/find_depth/  "final"/f"final_sol_transfer_{str_dalaoaddress}.xlsx",index=False)
+ 
+ 
+main()

+ 95 - 0
src/code/new_8004_merge_depth.py

@@ -0,0 +1,95 @@
+
+# from datetime import datetime, timezone
+# from playwright.async_api import async_playwright, Playwright
+# from playwright.sync_api import expect
+ 
+from base_class import BaseVariableFunction
+from base_class import *
+baseclass = BaseVariableFunction(__file__)
+
+baseclass.makedirpath(baseclass.ana_dalao_relation_by_solscan_path )
+
+ 
+old_print = print
+
+
+def timestamped_print(*args, **kwargs):
+    old_print(datetime.datetime.utcnow().replace(
+        microsecond=0), *args, **kwargs)
+
+
+print = timestamped_print
+print('\n'*5)
+print(f"{'{:<6}'.format('ENTER')} {baseclass.scriptfilename} ----------------NOTE-----------NOTE---------------")
+
+
+df = pd.read_excel(baseclass.dalao_tran_gmgnOrdex_path /
+                "input_dalao.xlsx", dtype=object)
+arr_str_dalaoaddress = df['dalaoaddress'].tolist()
+
+# arr_str_dalaoaddress=arr_str_dalaoaddress[0:5]
+str_tokenaddress_dalao_source = "4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump"
+find_depth = "depth_01"
+
+
+def get_reladd_count(gdf):
+    gdf["reladd_count"] = len(gdf)
+    return gdf
+
+
+def main():
+    df_sol_transfer = None
+    for str_dalaoaddress in arr_str_dalaoaddress:
+        if not (baseclass.ana_dalao_relation_by_solscan_path /str_tokenaddress_dalao_source/find_depth/  "final"/f"final_sol_transfer_{str_dalaoaddress}.xlsx" ).exists():
+            continue
+        print(f"enter {str_dalaoaddress}")
+        cur_df_sol_transfer = pd.read_excel(baseclass.ana_dalao_relation_by_solscan_path /str_tokenaddress_dalao_source/find_depth/"final"/ f"final_sol_transfer_{str_dalaoaddress}.xlsx",dtype=object )
+        df_sol_transfer = pd.concat([df_sol_transfer,cur_df_sol_transfer])
+    df_sol_transfer = df_sol_transfer.astype({
+
+        "timestamp":int,
+        "amount":float,
+        "is_exend":int,
+        "is_relationend":int,
+        "dalao_count":int,
+        
+    })
+ 
+ 
+    df_sol_transfer.to_excel(baseclass.ana_dalao_relation_by_solscan_path /str_tokenaddress_dalao_source/find_depth/  f"fir_sol_transfer_{find_depth}.xlsx" ,index=False)
+    mask_end = ( (df_sol_transfer["is_exend"]==1 ) | (df_sol_transfer["is_relationend"]==1))  
+    end_df = df_sol_transfer[ mask_end]
+    end_df.to_excel(baseclass.ana_dalao_relation_by_solscan_path /str_tokenaddress_dalao_source/find_depth/  f"endaddress_sol_transfer_{find_depth}.xlsx" ,index=False)
+ 
+    df_sol_transfer = df_sol_transfer[ ~mask_end].reset_index(drop=True)
+
+    df_sol_transfer["reladd_count"]  = 0
+    
+
+    df_sol_transfer = df_sol_transfer.groupby(by = [ "rel_address" ],  group_keys=False).apply(lambda gdf : get_reladd_count(gdf))
+
+    df_sol_transfer = df_sol_transfer.sort_values(by=[ "dalao_count"  , "dalaoaddress" ,"timestamp"],ascending=False)
+
+    df_dalao_count = df_sol_transfer[[  "dalaoaddress", "dalao_count"  ]].drop_duplicates()
+
+    # str_tokenaddress_dalao_source
+
+    df_dalao_count=df_dalao_count.sort_values(by=["dalao_count"],ascending=False)
+    
+    df_dalao_count["scan_activites"] = df_dalao_count.apply(lambda ser : baseclass.makeurl(f"https://solscan.io/account/{ser['dalaoaddress']}#defiactivities" , f"{ser['dalaoaddress'][0:6]}") , axis=1)
+ 
+    df_dalao_count["scan_token_source"] = df_dalao_count.apply(lambda ser : baseclass.makeurl(f"https://solscan.io/account/{ser['dalaoaddress']}?token_address={str_tokenaddress_dalao_source}#transfers" , f"{ser['dalaoaddress'][0:6]}") , axis=1)
+ 
+
+    #  https://gmgn.ai/sol/token/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump?tab=activity&maker=58YHxodnzZKxVBE5EsATs38ywEFV7M8ijjBoBkYAJY8J
+
+
+    
+    df_dalao_count.to_excel(baseclass.ana_dalao_relation_by_solscan_path /str_tokenaddress_dalao_source/find_depth/  f"counts_sol_transfer_{find_depth}.xlsx" ,index=False)
+    df_sol_transfer.to_excel(baseclass.ana_dalao_relation_by_solscan_path /str_tokenaddress_dalao_source/find_depth/  f"sec_sol_transfer_{find_depth}.xlsx" ,index=False)
+     
+
+
+    return
+
+main()

+ 3 - 2
src/code/tempCodeRunnerFile.py

@@ -1,2 +1,3 @@
-    # await get_onedriver_swapactivities(
-    #     arr_url_dalao = arr_dalao_usdc_transfer_url , url_type = "usdc_transfer")
+
+        await page.wait_for_selector('#account-tabs iv.flex.flex-col.gap-4.items-stretch.justify-start',timeout=5000)
+        arr_div =await page.locator("#account-tabs div.flex.flex-col.gap-4.items-stretch.justify-start div.

+ 128 - 0
src/code/test_my_find_zhuangjia/new_8002_add_get_getdalao_activites_number.py

@@ -0,0 +1,128 @@
+
+# from datetime import datetime, timezone
+# from playwright.async_api import async_playwright, Playwright
+# from playwright.sync_api import expect
+from playwright.async_api import Playwright, async_playwright, expect
+import random
+
+from base_class import BaseVariableFunction
+from base_class import *
+baseclass = BaseVariableFunction(__file__)
+
+baseclass.makedirpath(baseclass.browsercookie_path)
+baseclass.makedirpath(baseclass.dalao_solscan_info_path)
+old_print = print
+
+
+def timestamped_print(*args, **kwargs):
+    old_print(datetime.datetime.utcnow().replace(
+        microsecond=0), *args, **kwargs)
+
+
+print = timestamped_print
+print('\n'*5)
+print(f"{'{:<6}'.format('ENTER')} {baseclass.scriptfilename} ----------------NOTE-----------NOTE---------------")
+ 
+
+async def do_some_thing(playwright,   arr_url_dalao , url_type):
+
+    # browser =  playwright.chromium.launch(headless=True)
+    context = await playwright.firefox.launch_persistent_context(user_data_dir=USER_DIR_PATH, accept_downloads=True, headless=False)
+    # context = browser.new_context()
+    context.set_default_timeout(19000)
+    # context = await browser.new_context()
+    arr_page = [None]*2
+    arr_page[0] = await context .new_page()
+    await arr_page[0].goto(
+        "https://solscan.io/")
+
+    # print(context.pages)
+
+    for idx_url in range(0, len(arr_url_dalao)):
+
+        str_dalaoTransferUrl = arr_url_dalao[idx_url]
+        str_dalaoaddress =obj_url_2_dalao[str_dalaoTransferUrl]
+        
+        print(f"enter str_dalaoaddress= {str_dalaoaddress}")
+        print(f"enter str_dalaoTransferUrl= {str_dalaoTransferUrl}")
+        print(f"cur_arr_str_dalaoaddress remainder = {len(arr_url_dalao)-idx_url}")
+        arr_page[1] = await context.new_page()
+        page = arr_page[1]
+
+        tbody_ = page.locator(
+            'table.w-full tbody')
+        arr_div =await page.locator("#account-tabs div.flex.flex-col.gap-4.items-stretch.justify-start div.flex.gap-1.flex-row.items-center.justify-start.flex-wrap").all()
+        str_tx_info =(await arr_div[0].text_content().strip())
+        #arr_tds = await last_tr.locator('td').all()
+        # p_token_last_active =  arr_tds[0].locator("p")
+        # str_token_last_active =( await p_token_last_active.text_content()).strip()
+
+        print(str_tx_info)
+        # "div.lg\:flex:nth-child(1) > div:nth-child(1)"
+        # "html.light body.min-h-screen.font-sans div#__next div.flex.flex-col.gap-0.items-stretch.justify-start.h-full.min-h-screen div.w-full.flex-1 div.my-0.mx-auto.max-w-full.px-4.md:px-6.2xl:px-0.2xl:max-w-[1400px] div.flex.flex-col.gap-6.items-stretch.justify-start.w-full div.flex.flex-col.gap-6.items-stretch.justify-start.w-full div#account-tabs div.mr-[-16px].ml-[-16px].sm:mr-0.sm:ml-0 div#radix-:rk:-content-defiactivities.ring-offset-background.focus-visible:outline-none.focus-visible:ring-2.bg-neutral0.p-6.rounded-2xl.[&:nth-child(2)]:rounded-tl-none.ring-transparent.ring-offset-0.focus-visible:ring-offset-0.focus-visible:ring-transparent.mt-0 div.flex.flex-col.gap-4.items-stretch.justify-start div.gap-1.flex-row.items-center.justify-between.flex-wrap.w-full.lg:flex.hidden div.flex.gap-1.flex-row.items-center.justify-start.flex-wrap"
+
+ 
+
+
+        time.sleep(1)
+        await page.close()
+
+    await context.close()
+
+
+async def get_onedriver_swapactivities( arr_url_dalao , url_type):
+    async with async_playwright() as playwright:
+
+        await do_some_thing(playwright, arr_url_dalao, url_type)
+
+
+async def main():
+    print("enter main()")
+    if len(arr_dalao_sol_transfer_url)>0:
+        await get_onedriver_swapactivities(
+            arr_url_dalao = arr_dalao_sol_transfer_url , url_type = "transfer_counts")
+        await asyncio.sleep(3)
+        
+    # if len(arr_dalao_token_inflow_transfer_url)>0:
+    #     await get_onedriver_swapactivities(
+    #         arr_url_dalao = arr_dalao_token_inflow_transfer_url , url_type = "swap_counts")
+    #     await asyncio.sleep(3)
+ 
+
+
+df = pd.read_excel(baseclass.dalao_tran_gmgnOrdex_path /
+                 "input_dalao.xlsx", dtype=object)
+
+arr_str_dalaoaddress = df['dalaoaddress'].tolist()
+arr_str_dalaoaddress=arr_str_dalaoaddress[0:4]
+# arr_dalao_sol_transfer_url =[]
+arr_dalao_url = []
+arr_dalao_swap = []
+obj_url_2_dalao={
+    
+}
+def init():
+    now_time = time.time()
+    global obj_url_2_dalao
+    global arr_dalao_sol_transfer_url ,arr_dalao_token_inflow_transfer_url ,arr_dalao_token_outflow_transfer_url , arr_dalao_usdc_transfer_url
+    for str_dalaoaddress in arr_str_dalaoaddress:
+        # file = baseclass.dalao_solscan_info_path / f"ori_txhash_{str_dalaoaddress}.csv"
+        dalao_transfer_counts_file = baseclass.dalao_solscan_info_path / f"dalao_transfer_counts.json"
+        # token_inflow_transfer_file = baseclass.dalao_solscan_info_path / f"token_inflow_{str_dalaoaddress}.csv"
+   
+ 
+        url_transfer = f"https://solscan.io/account/{str_dalaoaddress}#transfers"  
+        url_swap = f"https://solscan.io/account/{str_dalaoaddress}#defiactivities"     
+        arr_dalao_url.append(url_transfer)
+        obj_url_2_dalao[url_transfer] = str_dalaoaddress
+        
+ 
+            
+
+
+init()
+ 
+downloads_path = baseclass.dalao_solscan_info_path
+USER_DIR_PATH = baseclass.browsercookie_path
+asyncio.run(main())
+print(f"{'{:<6}'.format('END')} {baseclass.scriptfilename} ----------------NOTE-----------NOTE---------------")

+ 24 - 33
src/code/test_my_find_zhuangjia/new_8002_get_transfer_info_bysolscan_playwright.py

@@ -79,14 +79,12 @@ async def main():
             arr_url_dalao = arr_dalao_sol_transfer_url , url_type = "sol_transfer")
         await asyncio.sleep(3)
         
-    if len(arr_dalao_token_inflow_transfer_url)>0:
+    if len(arr_dalao_token_transfer_url)>0:
         await get_onedriver_swapactivities(
-            arr_url_dalao = arr_dalao_token_inflow_transfer_url , url_type = "token_inflow")
-        await asyncio.sleep(3)
-    if len(arr_dalao_token_outflow_transfer_url)>0:
-        await get_onedriver_swapactivities(
-            arr_url_dalao = arr_dalao_token_outflow_transfer_url , url_type = "token_outflow")
+            arr_url_dalao = arr_dalao_token_transfer_url , url_type = "token_transfer")
         await asyncio.sleep(3)
+ 
+ 
     if len(arr_dalao_usdc_transfer_url)>0:
         await get_onedriver_swapactivities(
             arr_url_dalao = arr_dalao_usdc_transfer_url , url_type = "usdc_transfer")
@@ -95,11 +93,11 @@ async def main():
 df = pd.read_excel(baseclass.dalao_tran_gmgnOrdex_path /
                  "input_dalao.xlsx", dtype=object)
 
-arr_str_dalaoaddress = df['dalaoaddress'].tolist()
 
+arr_str_dalaoaddress = df['dalaoaddress'].tolist()
 arr_dalao_sol_transfer_url =[]
-arr_dalao_token_inflow_transfer_url =[]
-arr_dalao_token_outflow_transfer_url =[]
+arr_dalao_token_transfer_url =[]
+ 
 arr_dalao_usdc_transfer_url =[]
 obj_url_2_dalao={
     
@@ -107,22 +105,24 @@ obj_url_2_dalao={
 def init():
     now_time = time.time()
     global obj_url_2_dalao
-    global arr_dalao_sol_transfer_url ,arr_dalao_token_inflow_transfer_url ,arr_dalao_token_outflow_transfer_url , arr_dalao_usdc_transfer_url
-    for str_dalaoaddress in arr_str_dalaoaddress:
-        # file = baseclass.dalao_solscan_info_path / f"ori_txhash_{str_dalaoaddress}.csv"
+    global arr_dalao_sol_transfer_url ,arr_dalao_token_transfer_url ,    arr_dalao_usdc_transfer_url
+    for str_dalaoaddress in arr_str_dalaoaddress: 
+ 
         sol_transfer_file = baseclass.dalao_solscan_info_path / f"sol_transfer_{str_dalaoaddress}.csv"
-        token_inflow_transfer_file = baseclass.dalao_solscan_info_path / f"token_inflow_{str_dalaoaddress}.csv"
-        token_outflow_transfer_file = baseclass.dalao_solscan_info_path / f"token_outflow_{str_dalaoaddress}.csv"
+        token_transfer_file = baseclass.dalao_solscan_info_path / f"token_transfer_{str_dalaoaddress}.csv"
         usdc_transfer_file = baseclass.dalao_solscan_info_path / f"usdc_transfer_{str_dalaoaddress}.csv"
         
  
         url_sol_transfer = f"https://api-v2.solscan.io/v2/account/transfer/export?address={str_dalaoaddress}&activity_type[]=ACTIVITY_SPL_TRANSFER&activity_type[]=ACTIVITY_SPL_MINT&amount[]=0.3&amount[]=undefined&token=So11111111111111111111111111111111111111111&exclude_amount_zero=true&remove_spam=true"    
-        url_token_inflow_transfer = f"https://api-v2.solscan.io/v2/account/transfer/export?address={str_dalaoaddress}&activity_type[]=ACTIVITY_SPL_TRANSFER&activity_type[]=ACTIVITY_SPL_MINT&exclude_token=So11111111111111111111111111111111111111111&exclude_amount_zero=true&remove_spam=true&flow=in"
-        url_token_outflow_transfer = f"https://api-v2.solscan.io/v2/account/transfer/export?address={str_dalaoaddress}&activity_type[]=ACTIVITY_SPL_TRANSFER&activity_type[]=ACTIVITY_SPL_MINT&exclude_token=So11111111111111111111111111111111111111111&exclude_amount_zero=true&remove_spam=true&flow=out"
+        # url_token_inflow_transfer = f"https://api-v2.solscan.io/v2/account/transfer/export?address={str_dalaoaddress}&activity_type[]=ACTIVITY_SPL_TRANSFER&activity_type[]=ACTIVITY_SPL_MINT&exclude_token=So11111111111111111111111111111111111111111&exclude_amount_zero=true&remove_spam=true&flow=in"
+        # url_token_outflow_transfer = f"https://api-v2.solscan.io/v2/account/transfer/export?address={str_dalaoaddress}&activity_type[]=ACTIVITY_SPL_TRANSFER&activity_type[]=ACTIVITY_SPL_MINT&exclude_token=So11111111111111111111111111111111111111111&exclude_amount_zero=true&remove_spam=true&flow=out"
+        url_token_transfer = f"https://api-v2.solscan.io/v2/account/transfer/export?address={str_dalaoaddress}&activity_type[]=ACTIVITY_SPL_TRANSFER&activity_type[]=ACTIVITY_SPL_MINT&exclude_token=So11111111111111111111111111111111111111111&exclude_amount_zero=true&remove_spam=true"
+ 
+        
         url_usdc_transfer = f"https://api-v2.solscan.io/v2/account/transfer/export?address={str_dalaoaddress}&activity_type[]=ACTIVITY_SPL_TRANSFER&activity_type[]=ACTIVITY_SPL_MINT&amount[]=100&amount[]=undefined&token=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v&exclude_amount_zero=true&remove_spam=true"
         obj_url_2_dalao[url_sol_transfer] =str_dalaoaddress
-        obj_url_2_dalao[url_token_inflow_transfer] =str_dalaoaddress
-        obj_url_2_dalao[url_token_outflow_transfer] =str_dalaoaddress
+ 
+        obj_url_2_dalao[url_token_transfer] =str_dalaoaddress
         obj_url_2_dalao[url_usdc_transfer] =str_dalaoaddress
         
     
@@ -136,26 +136,17 @@ def init():
         else:
             arr_dalao_sol_transfer_url.append(url_sol_transfer)
             
-        if token_inflow_transfer_file.exists():
-            modified_time  =  token_inflow_transfer_file.stat().st_mtime
+        if token_transfer_file.exists():
+            modified_time  =  token_transfer_file.stat().st_mtime
             # 3 * 60 分钟内不会在获取
             if(now_time -modified_time >3*60*60):
-                arr_dalao_token_inflow_transfer_url.append(url_token_inflow_transfer)
+                arr_dalao_token_transfer_url.append(url_token_transfer)
             else:
                 pass
         else:
-            arr_dalao_token_inflow_transfer_url.append(url_token_inflow_transfer)
-            
-        if token_outflow_transfer_file.exists():
-            modified_time  =  token_outflow_transfer_file.stat().st_mtime
-            # 3 * 60 分钟内不会在获取
-            if(now_time -modified_time >3*60*60):
-                arr_dalao_token_outflow_transfer_url.append(url_token_outflow_transfer)
-            else:
-                pass
-        else:
-            arr_dalao_token_outflow_transfer_url.append(url_token_outflow_transfer)
+            arr_dalao_token_transfer_url.append(url_token_transfer)
             
+ 
         if usdc_transfer_file.exists():
             modified_time  =  usdc_transfer_file.stat().st_mtime
             # 3 * 60 分钟内不会在获取
@@ -170,7 +161,7 @@ def init():
 
 
 init()
-if len(arr_dalao_sol_transfer_url) ==0 and len(arr_dalao_token_inflow_transfer_url) ==0 and len(arr_dalao_token_outflow_transfer_url) ==0 and len(arr_dalao_usdc_transfer_url)==0:
+if len(arr_dalao_sol_transfer_url) ==0 and len(arr_dalao_token_transfer_url) ==0 and  len(arr_dalao_usdc_transfer_url)==0:
     print("dont has dalao need get")
     exit()
 

+ 0 - 56
src/code/test_my_find_zhuangjia/new_8003.py

@@ -1,56 +0,0 @@
-
-# from datetime import datetime, timezone
-# from playwright.async_api import async_playwright, Playwright
-# from playwright.sync_api import expect
-from playwright.async_api import Playwright, async_playwright, expect
-import random
-
-from base_class import BaseVariableFunction
-from base_class import *
-baseclass = BaseVariableFunction(__file__)
-
-baseclass.makedirpath(baseclass.browsercookie_path)
-baseclass.makedirpath(baseclass.dalao_solscan_info_path)
-old_print = print
-
-
-def timestamped_print(*args, **kwargs):
-    old_print(datetime.datetime.utcnow().replace(
-        microsecond=0), *args, **kwargs)
-
-
-print = timestamped_print
-print('\n'*5)
-print(f"{'{:<6}'.format('ENTER')} {baseclass.scriptfilename} ----------------NOTE-----------NOTE---------------")
- 
-arr_exclude_address=[
-    
-]
-
-now_time = time.time()
- 
-df = pd.read_excel(baseclass.dalao_tran_gmgnOrdex_path /
-                 "input_dalao.xlsx", dtype=object)
-arr_str_dalaoaddress = df['dalaoaddress'].tolist()
-
-for str_dalaoaddress in arr_str_dalaoaddress:
-    df_sol_transfer =pd.read_csv(baseclass.dalao_solscan_info_path / f"sol_transfer_{str_dalaoaddress}.csv")
-    df_token_inflow =pd.read_csv(baseclass.dalao_solscan_info_path / f"token_inflow{str_dalaoaddress}.csv")
-    df_token_outflow =pd.read_csv(baseclass.dalao_solscan_info_path / f"token_outflow{str_dalaoaddress}.csv")
-    df_usdc_transfer =pd.read_csv(baseclass.dalao_solscan_info_path / f"usdc_transfer{str_dalaoaddress}.csv")
-    df_sol_transfer=df_sol_transfer.astype({
-        
-        "Time":int,
-    })
-    arr_no_sol_transfer_tx_01 = df_token_inflow["Signature"].tolist() + df_token_outflow["Signature"].tolist() + df_usdc_transfer["Signature"].tolist()
-    df_sol_transfer = df_sol_transfer[~df_sol_transfer["Signature"].isin(arr_no_sol_transfer_tx_01)].reset_index(drop=True)
-    mask_arr_no_sol_transfer_tx_02 =(  df_sol_transfer["Action"]!="TRANSFER"   
-                                     | df_sol_transfer["Time"]<now_time -  1.5*30* 3600*24 
-                                     | df_sol_transfer["From"].isin(arr_exclude_address)
-                                      | df_sol_transfer["To"].isin(arr_exclude_address)
-                                     )
-    df_sol_transfer = df_sol_transfer[mask_arr_no_sol_transfer_tx_02].reset_index(drop=True)
-    df_sol_transfer.columns=["txhash","timestamp","action","from","to","amount","decimals","tokenaddress"]
-    df_sol_transfer=df_sol_transfer[["txhash","timestamp", "from","to","amount", "tokenaddress"]]
-    print(df_sol_transfer)
- 

+ 31 - 6
src/code/new_8003.py → src/code/test_my_find_zhuangjia/new_8003_handle_depth.py

@@ -38,11 +38,14 @@ find_depth = "depth_01"
 
 baseclass.makedirpath(baseclass.ana_dalao_relation_by_solscan_path /str_tokenaddress_dalao_source    )
 baseclass.makedirpath(baseclass.ana_dalao_relation_by_solscan_path /str_tokenaddress_dalao_source /find_depth )
+baseclass.makedirpath(baseclass.ana_dalao_relation_by_solscan_path /str_tokenaddress_dalao_source /find_depth/"mid" )
+baseclass.makedirpath(baseclass.ana_dalao_relation_by_solscan_path /str_tokenaddress_dalao_source /find_depth/"final" )
+
 
 def drop_ex_txhash(gdf):
     is_ex = False
     if( ( gdf["action"] != "TRANSFER" )
-        | (gdf["timestamp"]<now_time - 2*30* 3600*24 )
+        | (gdf["timestamp"]<now_time - 1*30* 24* 3600 )
         |( gdf["from"].isin(arr_exclude_address))
         |( gdf["to"].isin(arr_exclude_address))
         ).any( ):
@@ -77,11 +80,29 @@ def main():
         
 
         df_sol_transfer =pd.read_csv(baseclass.dalao_solscan_info_path / f"sol_transfer_{str_dalaoaddress}.csv" ,dtype=object)
-        df_token_inflow =pd.read_csv(baseclass.dalao_solscan_info_path / f"token_inflow_{str_dalaoaddress}.csv" ,dtype=object)
-        df_token_outflow =pd.read_csv(baseclass.dalao_solscan_info_path / f"token_outflow_{str_dalaoaddress}.csv" ,dtype=object)
+        df_sol_transfer = df_sol_transfer.astype({
+            "Time":int,
+        })
+        
+        # df_token_inflow =pd.read_csv(baseclass.dalao_solscan_info_path / f"token_inflow_{str_dalaoaddress}.csv" ,dtype=object)
+        # df_token_outflow =pd.read_csv(baseclass.dalao_solscan_info_path / f"token_outflow_{str_dalaoaddress}.csv" ,dtype=object)
+        df_token_transfer =pd.read_csv(baseclass.dalao_solscan_info_path / f"token_transfer_{str_dalaoaddress}.csv" ,dtype=object)
+        df_token_transfer=df_token_transfer.astype({
+            "Time":int,
+        })
+        
+        time_min_df_token_transfer = df_token_transfer["Time"].min()
+        df_sol_transfer= df_sol_transfer[df_sol_transfer["Time"]>time_min_df_token_transfer].reset_index(drop=True)
+        
         df_usdc_transfer =pd.read_csv(baseclass.dalao_solscan_info_path / f"usdc_transfer_{str_dalaoaddress}.csv" ,dtype=object)
+        
 
-        arr_no_sol_transfer_tx_01 = df_token_inflow["Signature"].tolist() + df_token_outflow["Signature"].tolist() + df_usdc_transfer["Signature"].tolist()
+        # Signature,Time,Action,From,To,Amount,Decimals,TokenAddress
+        
+        # inflow out time 选最大的那一个
+        
+
+        arr_no_sol_transfer_tx_01 = df_token_transfer["Signature"].tolist() +  df_usdc_transfer["Signature"].tolist()
         
         df_sol_transfer = df_sol_transfer[~df_sol_transfer["Signature"].isin(arr_no_sol_transfer_tx_01)].reset_index(drop=True)
 
@@ -91,6 +112,9 @@ def main():
             "amount":float,
             "decimals":int,
         })
+        
+        time_min_df_token_transfer
+        
 
         df_sol_transfer = df_sol_transfer.groupby(by=["txhash"],  group_keys=False).apply(lambda gdf: drop_ex_txhash(gdf))
         
@@ -104,7 +128,7 @@ def main():
         df_sol_transfer = df_sol_transfer[["timestamp", "txhash", "datetime" ,"from","to","amount"]]     
         
         df_sol_transfer = df_sol_transfer.groupby(by = ["txhash","from","to" ],  group_keys=False).apply(lambda gdf: sum_same_tx_from_to(gdf))
-        df_sol_transfer.to_csv(baseclass.ana_dalao_relation_by_solscan_path /str_tokenaddress_dalao_source/find_depth/ f"mid_sol_transfer_{str_dalaoaddress}.csv",index=False)
+        df_sol_transfer.to_csv(baseclass.ana_dalao_relation_by_solscan_path /str_tokenaddress_dalao_source/find_depth/  "mid" /f"mid_sol_transfer_{str_dalaoaddress}.csv",index=False)
  
         df_sol_transfer = df_sol_transfer[[ "timestamp", "datetime", "from","to","amount"]]       
         df_sol_transfer = df_sol_transfer.groupby(by = [ "from","to" ],  group_keys=False).apply(lambda gdf: sum_same_from_to(gdf))
@@ -117,6 +141,7 @@ def main():
         
         
         df_sol_transfer=df_sol_transfer.sort_values(by="timestamp",ascending=False)
-        df_sol_transfer.to_excel(baseclass.ana_dalao_relation_by_solscan_path /str_tokenaddress_dalao_source/find_depth/ f"sol_transfer_{str_dalaoaddress}.xlsx",index=False)
+        df_sol_transfer.to_excel(baseclass.ana_dalao_relation_by_solscan_path /str_tokenaddress_dalao_source/find_depth/  "final"/f"sol_transfer_{str_dalaoaddress}.xlsx",index=False)
+ 
  
 main()

+ 94 - 0
src/code/test_my_find_zhuangjia/new_8004_merge_depth.py

@@ -0,0 +1,94 @@
+
+# from datetime import datetime, timezone
+# from playwright.async_api import async_playwright, Playwright
+# from playwright.sync_api import expect
+ 
+from base_class import BaseVariableFunction
+from base_class import *
+baseclass = BaseVariableFunction(__file__)
+
+baseclass.makedirpath(baseclass.ana_dalao_relation_by_solscan_path )
+
+ 
+old_print = print
+
+
+def timestamped_print(*args, **kwargs):
+    old_print(datetime.datetime.utcnow().replace(
+        microsecond=0), *args, **kwargs)
+
+
+print = timestamped_print
+print('\n'*5)
+print(f"{'{:<6}'.format('ENTER')} {baseclass.scriptfilename} ----------------NOTE-----------NOTE---------------")
+
+
+df = pd.read_excel(baseclass.dalao_tran_gmgnOrdex_path /
+                "input_dalao.xlsx", dtype=object)
+arr_str_dalaoaddress = df['dalaoaddress'].tolist()
+
+# arr_str_dalaoaddress=arr_str_dalaoaddress[0:5]
+str_tokenaddress_dalao_source = "4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump"
+find_depth = "depth_01"
+
+
+
+
+def main():
+    df_sol_transfer = None
+    for str_dalaoaddress in arr_str_dalaoaddress:
+        if not (baseclass.ana_dalao_relation_by_solscan_path /str_tokenaddress_dalao_source/find_depth/  "final"/f"final_sol_transfer_{str_dalaoaddress}.xlsx" ).exists():
+            continue
+        print(f"enter {str_dalaoaddress}")
+        cur_df_sol_transfer = pd.read_excel(baseclass.ana_dalao_relation_by_solscan_path /str_tokenaddress_dalao_source/find_depth/"final"/ f"final_sol_transfer_{str_dalaoaddress}.xlsx",dtype=object )
+        cur_df_sol_transfer["dalaoaddress"] = str_dalaoaddress
+        df_sol_transfer = pd.concat([df_sol_transfer,cur_df_sol_transfer])
+    df_sol_transfer = df_sol_transfer.astype({
+
+        "timestamp":int,
+        "amount":float,
+        "is_exend":int,
+        "is_relationend":int,
+        
+    })
+ 
+ 
+    df_sol_transfer.to_excel(baseclass.ana_dalao_relation_by_solscan_path /str_tokenaddress_dalao_source/find_depth/  f"fir_sol_transfer_{find_depth}.xlsx" ,index=False)
+    mask_end = ( (df_sol_transfer["is_exend"]==1 ) | (df_sol_transfer["is_relationend"]==1))  
+    end_df = df_sol_transfer[ mask_end]
+    end_df.to_excel(baseclass.ana_dalao_relation_by_solscan_path /str_tokenaddress_dalao_source/find_depth/  f"endaddress_sol_transfer_{find_depth}.xlsx" ,index=False)
+ 
+    df_sol_transfer = df_sol_transfer[ ~mask_end].reset_index(drop=True)
+
+    def get_dalao_len(gdf):
+        gdf["dalao_count"] = len(gdf)
+        
+        return  gdf
+
+    df_sol_transfer["dalao_count"] = 0
+    
+
+    df_sol_transfer =   df_sol_transfer.groupby(by=["dalaoaddress"] ,group_keys=False  ).apply(lambda gdf:  get_dalao_len(gdf))
+    df_sol_transfer = df_sol_transfer.sort_values(by=["dalao_count"],ascending=False)
+    df_dalao_count = df_sol_transfer[[  "dalaoaddress", "dalao_count"  ]].drop_duplicates()
+
+    # str_tokenaddress_dalao_source
+
+ 
+    df_dalao_count["scan_activites"] = df_dalao_count.apply(lambda ser : baseclass.makeurl(f"https://solscan.io/account/{ser['dalaoaddress']}#defiactivities" , f"{ser['dalaoaddress'][0:6]}") , axis=1)
+ 
+    df_dalao_count["scan_token_source"] = df_dalao_count.apply(lambda ser : baseclass.makeurl(f"https://solscan.io/account/{ser['dalaoaddress']}?token_address={str_tokenaddress_dalao_source}#transfers" , f"{ser['dalaoaddress'][0:6]}") , axis=1)
+ 
+
+#  https://gmgn.ai/sol/token/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump?tab=activity&maker=58YHxodnzZKxVBE5EsATs38ywEFV7M8ijjBoBkYAJY8J
+
+    df_dalao_count=df_dalao_count.sort_values(by=["dalao_count"],ascending=False)
+    
+    df_dalao_count.to_excel(baseclass.ana_dalao_relation_by_solscan_path /str_tokenaddress_dalao_source/find_depth/  f"counts_sol_transfer_{find_depth}.xlsx" ,index=False)
+    df_sol_transfer.to_excel(baseclass.ana_dalao_relation_by_solscan_path /str_tokenaddress_dalao_source/find_depth/  f"sec_sol_transfer_{find_depth}.xlsx" ,index=False)
+     
+
+
+    return
+
+main()

+ 0 - 9
src/library/002.sql

@@ -1,9 +0,0 @@
-
-
-WITH cte (col1, col2) AS
-(
-  SELECT 'aa', 'bb'
-  UNION ALL
-  SELECT 'cc', 'dd'
-)
-SELECT col1, col2 FROM cte;

+ 4 - 0
src/library/autojs.md

@@ -0,0 +1,4 @@
+http://doc.autoxjs.com/#/
+
+extension
+Auto.js-Autox.js-VSCodeExt

+ 0 - 42
src/library/dalao_one_token_transfer copy.sql

@@ -1,42 +0,0 @@
-WITH
-  transfers AS (
-    SELECT
-      block_time AS time,
-      amount AS amount,
-      from_owner AS from_owner,
-      to_owner AS to_owner,
-      from_token_account AS from_token_account,
-      to_token_account AS to_token_account,
-      token_mint_address AS token_address,
-      tx_id as transaction_id
-    FROM
-      tokens_solana.transfers
-    WHERE
-      block_date > (TIMESTAMP '2024-09-01 00:00:00 +08:00')
-      AND token_address = '4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump'
-      AND action = 'transfer'
-  )
-
-
-
-SELECT
-  time,
-  amount / POWER(10, tk.decimals) as amount,
-  tk.symbol,
-  from_owner,
-  to_owner,
-  from_token_account,
-  to_token_account,
-  transaction_id,
-  token_address
-FROM
-  transfers
-  LEFT JOIN tokens_solana.fungible tk ON tk.token_mint_address = transfers.token_address
-WHERE
-  
- (
-    to_owner = 'ELeMLdqSaFF31SappKg4wrqBKmknguJrtAXRT8xbpWaP'
-    OR from_owner = 'ELeMLdqSaFF31SappKg4wrqBKmknguJrtAXRT8xbpWaP'
-  )
-ORDER BY
-  time ASC

+ 0 - 70
src/library/dalao_one_token_transfer.sql

@@ -1,70 +0,0 @@
-WITH
-  transfers AS (
-    SELECT
-      block_time AS time,
-      amount AS amount,
-      from_owner AS from_owner,
-      to_owner AS to_owner,
-      from_token_account AS from_token_account,
-      to_token_account AS to_token_account,
-      token_mint_address AS token_address,
-      tx_id as transaction_id
-    FROM
-      tokens_solana.transfers
-    WHERE
-      block_date > (TIMESTAMP '2024-09-01 00:00:00 +08:00')
-      AND token_address = '4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump'
-      AND action = 'transfer'
-  )
-
-WITH RECURSIVE inflow_owners AS (
-  SELECT
-    time,
-    from_owner,
-    to_owner,
-    from_token_account,
-    to_token_account,
-    transaction_id,
-    token_address,
-    1 as level
-  FROM
-    transfers
-  WHERE
-    to_owner = 'ELeMLdqSaFF31SappKg4wrqBKmknguJrtAXRT8xbpWaP'
-
-  UNION ALL
-
-  SELECT
-    t.time,
-    t.from_owner,
-    t.to_owner,
-    t.from_token_account,
-    t.to_token_account,
-    t.transaction_id,
-    t.token_address,
-    io.level + 1 as level
-  FROM
-    transfers t
-  INNER JOIN inflow_owners io ON t.from_owner = io.to_owner
-  WHERE
-    t.to_owner!= 'ELeMLdqSaFF31SappKg4wrqBKmknguJrtAXRT8xbpWaP'
-),
-
--- SELECT
---     time,
---     from_owner,
---     to_owner,
---     from_token_account,
---     to_token_account,
---     transaction_id,
---     token_address
--- FROM
---   transfers
--- WHERE
-  
---  (
---     to_owner = 'ELeMLdqSaFF31SappKg4wrqBKmknguJrtAXRT8xbpWaP'
---     OR from_owner = 'ELeMLdqSaFF31SappKg4wrqBKmknguJrtAXRT8xbpWaP'
---   )
--- ORDER BY
---   time ASC

+ 98 - 0
src/library/find_token_relation.sql

@@ -0,0 +1,98 @@
+-- table_01是你的实际表名。
+-- excludeIP是排除 IP 的表名。
+-- overconnefir_resdIPTable是存储连接数过多 IP 的表名。
+-- ip0和ip1是你指定的初始 IP 值。
+
+-- use mine_01;
+WITH RECURSIVE 
+excludeIP(exclude_ip) AS(
+  SELECT 'ip20'  
+  UNION ALL
+  SELECT 'ip21' 
+),  
+
+temp_table as (
+  SELECT ID , time, from_ip,to_ip, data 
+   FROM table_01 
+   left join excludeIP on (table_01.from_ip = excludeIP.exclude_ip  or table_01.to_ip = excludeIP.exclude_ip )
+   WHERE 
+     excludeIP.exclude_ip IS null   
+),
+
+distinct_temp_table as (
+    SELECT 
+    DISTINCT 
+    from_ip,to_ip
+  from temp_table
+),
+input (ip)as(
+SELECT "ip0"
+UNION ALL
+SELECT "ip1"
+),
+-- 我要什么 
+-- 结果是 distinct_temp_table 的from或者 to 与  input 的ip  相等的
+
+
+
+fir_res as (
+  SELECT 
+  --  from_ip, to_ip,   1 AS level, 
+  * ,
+          1 AS addtion_info
+  
+    FROM distinct_temp_table 
+     inner join input on (distinct_temp_table.from_ip = input.ip  or distinct_temp_table.to_ip = input.ip )
+    --   where  
+    --  (SELECT COUNT(*) FROM distinct_temp_table sub WHERE sub.from_ip = distinct_temp_table.from_ip OR sub.to_ip = distinct_temp_table.from_ip) <= 8
+  -- count 没法再这里用  无法处理 inner join 之后的表格
+)
+,
+
+sec_res as(
+    SELECT 
+    -- DISTINCT 
+      t.from_ip, t.to_ip,    fir_res.level + 1 as level,
+           CASE WHEN   (t.from_ip = fir_res.from_ip AND t.to_ip = fir_res.to_ip) 
+           OR (t.to_ip = fir_res.from_ip AND t.from_ip = fir_res.to_ip) THEN 0 ELSE 1 END AS addtion_info ,
+
+           CASE
+            WHEN 
+                (SELECT COUNT(*) FROM distinct_temp_table t2 WHERE t2.from_ip = t1.from_ip OR t2.to_ip = t1.from_ip) > 5 OR
+                (SELECT COUNT(*) FROM distinct_temp_table t2 WHERE t2.from_ip = t1.to_ip OR t2.to_ip = t1.to_ip) > 5 THEN 1
+            ELSE 0
+
+    FROM distinct_temp_table t
+    JOIN fir_res ON t.from_ip = fir_res.to_ip OR t.to_ip = fir_res.from_ip
+    WHERE fir_res.addtion_info = 1 AND
+          (SELECT COUNT(*) FROM distinct_temp_table sub WHERE sub.from_ip = t.from_ip OR sub.to_ip = t.from_ip) <= 10 
+      
+)
+
+
+
+ 
+SELECT ID, time, from_ip, to_ip, data, level, addtion_info
+FROM fir_res;
+
+
+
+
+-- 使用WITH RECURSIVE语句定义递归查询:
+-- 首先定义名为fir_res的公共表表达式(Common Table Expression),它包含了递归查询的逻辑。
+-- 在初始部分,从表table_01中选择满足from_ip为指定初始 IP 之一或to_ip为指定初始 IP 之一的记录,并计算初始的level(递归层级)为 1,
+-- 以及根据 IP 是否在排除 IP 表中来确定addtion_info的值(用于标记该记录是否可继续用于递归)。
+-- 在递归部分,从表table_01中选择新的记录,这些记录的from_ip与上一层级结果的to_ip相等或者to_ip与上一层级结果的from_ip相等。
+-- 同时,进行一系列条件判断,确保新记录满足:addtion_info 为 1(即不是排除的 IP)、连接的 IP 数量不超过 5、新 IP 不在排除 IP 表中。并且计算新的level和addtion_info值。
+-- 定义排除 IP 和连接数过多 IP 的临时表:
+-- excluded_ips临时表通过从递归结果fir_res中选择addtion_info为 0 的记录的from_ip和to_ip作为排除的 IP。
+-- overconnefir_resd_ips临时表从递归结果fir_res中选择连接数超过 5 的 IP(通过子查询计算连接数)。
+-- 插入数据到排除 IP 表和连接数过多 IP 表:
+-- 使用INSERT INTO语句将excluded_ips临时表中的排除 IP 插入到excludeIP表中。
+-- 将overconnefir_resd_ips临时表中的连接数过多 IP 插入到overconnefir_resdIPTable表中。
+-- 选择最终结果集:
+-- 从递归结果fir_res中选择所需的列(ID、time、from_ip、to_ip、data、from_pos、to_pos、level、addtion_info)作为最终的查询结果集。
+
+
+
+

+ 78 - 0
src/library/find_token_relation——02方案.sql

@@ -0,0 +1,78 @@
+-- table_01是你的实际表名。
+-- excludeIP是排除 IP 的表名。
+-- overconneinputdIPTable是存储连接数过多 IP 的表名。
+-- ip0和ip1是你指定的初始 IP 值。
+
+-- use mine_01;
+WITH RECURSIVE 
+excludeIP(exclude_ip) AS(
+  SELECT 'ip20'  
+  UNION ALL
+  SELECT 'ip21' 
+),  
+temp_table as (
+  SELECT ID , time, from_ip,to_ip, data 
+   FROM table_01 
+   left join excludeIP on (table_01.from_ip = excludeIP.exclude_ip  or table_01.to_ip = excludeIP.exclude_ip )
+   WHERE 
+          excludeIP.exclude_ip IS null   
+),
+
+distinct_temp_table as (
+    SELECT 
+    DISTINCT 
+    from_ip,to_ip
+  from temp_table
+),
+
+input as (from_ip,to_ip)(
+SELECT 'ip0' ,'ip0'
+ UNION ALL
+ SELECT 'ip1' ,'ip1'
+),
+
+
+fir_res as(
+    SELECT 
+    DISTINCT 
+    t.ID, t.time, t.from_ip, t.to_ip
+           CASE WHEN         
+             (t.from_ip = input.from_ip AND t.to_ip = input.to_ip) 
+            OR (t.to_ip = input.from_ip AND t.from_ip = input.to_ip) 
+          THEN 0 ELSE 1 END AS addtion_info
+    FROM distinct_temp_table t
+    JOIN   input ON t.from_ip = input.to_ip OR t.to_ip = input.from_ip
+    WHERE input.addtion_info = 1 AND
+          (SELECT COUNT(*) FROM distinct_temp_table sub WHERE sub.from_ip = t.from_ip OR sub.to_ip = t.from_ip) <= 10 
+              
+)
+
+
+
+
+
+ 
+SELECT ID, time, from_ip, to_ip, data, from_pos, to_pos, level, addtion_info
+FROM fir_res;
+
+
+
+
+-- 使用WITH RECURSIVE语句定义递归查询:
+-- 首先定义名为input的公共表表达式(Common Table Expression),它包含了递归查询的逻辑。
+-- 在初始部分,从表table_01中选择满足from_ip为指定初始 IP 之一或to_ip为指定初始 IP 之一的记录,并计算初始的level(递归层级)为 1,
+-- 以及根据 IP 是否在排除 IP 表中来确定addtion_info的值(用于标记该记录是否可继续用于递归)。
+-- 在递归部分,从表table_01中选择新的记录,这些记录的from_ip与上一层级结果的to_ip相等或者to_ip与上一层级结果的from_ip相等。
+-- 同时,进行一系列条件判断,确保新记录满足:addtion_info 为 1(即不是排除的 IP)、连接的 IP 数量不超过 5、新 IP 不在排除 IP 表中。并且计算新的level和addtion_info值。
+-- 定义排除 IP 和连接数过多 IP 的临时表:
+-- excluded_ips临时表通过从递归结果input中选择addtion_info为 0 的记录的from_ip和to_ip作为排除的 IP。
+-- overconneinputd_ips临时表从递归结果input中选择连接数超过 5 的 IP(通过子查询计算连接数)。
+-- 插入数据到排除 IP 表和连接数过多 IP 表:
+-- 使用INSERT INTO语句将excluded_ips临时表中的排除 IP 插入到excludeIP表中。
+-- 将overconneinputd_ips临时表中的连接数过多 IP 插入到overconneinputdIPTable表中。
+-- 选择最终结果集:
+-- 从递归结果input中选择所需的列(ID、time、from_ip、to_ip、data、from_pos、to_pos、level、addtion_info)作为最终的查询结果集。
+
+
+
+

+ 0 - 12
src/library/mysql01.sql

@@ -1,12 +0,0 @@
-WITH   my_table (ip, level) AS (
-  VALUES
-    ('ip0', 1),
-    ('ip1', 1)
-),
-excluded_ips (ip) AS (
-  VALUES
-    ('ip20'),
-    ('ip21')
-)
-SELECT * FROM my_table
-WHERE ip NOT IN (SELECT ip FROM excluded_ips);

+ 0 - 56
src/library/nanlysis.sql

@@ -1,56 +0,0 @@
--- List all transfers made on a given Solana wallet
--- Author: Tuan
--- Date: 20240916
--- State: 
--- Todo: 
--- 0. BUG : these are not transfers but swaps !!!
--- 1. categorize withdraw / deposit depending on to_owner / from_owner
--- 2. pass the wallet address as a parameter
-
- 
-WITH
-  transfers AS (
-    SELECT
-      block_time AS time,
-      action AS action,
-      amount / 1e6 AS amount,
-      -- token_version as version,
-    --   fee / 1e6 AS fee, 
-      from_owner AS from_owner,
-      to_owner AS to_owner,
-      from_token_account AS from_token_account,
-      to_token_account AS to_token_account,
-      token_mint_address AS token_address,
-      tx_id as transaction_id
-    FROM
-      tokens_solana.transfers
-  )
-SELECT
-  time,
-  action,
-  amount,
---   fee,
-  tk.symbol,
-  p.symbol as symbol,
-  from_owner,
-  to_owner,
-  from_token_account,
-  to_token_account,
-  COALESCE(p.price, dp.median_price) as price, -- take the price or if it does not exist, the median price.
-  transaction_id,
-  --version,
-  token_address
-FROM
-  transfers
-  LEFT JOIN tokens_solana.fungible tk ON tk.token_mint_address = transfers.token_address
-  LEFT JOIN prices.usd p ON p.blockchain = 'solana' -- look for the price during a given minute
-  and toBase58 (p.contract_address) = transfers.token_address
-  and p.minute = date_trunc('minute', transfers.time)
-  LEFT JOIN dune.dune.result_dex_prices_solana dp -- look for the median price during that day as a backup, in case the price does not exist
-    ON dp.token_mint_address = transfers.token_address
-    and date_trunc('day',transfers.time) = dp.day
-    and dp.rolling_two_months_trades > 1000
-    and dp.total_holders_ever > 5000
-WHERE
-  to_owner = 'Ckc4FEhaykq6wnKVZnbvhJCJv95xWMznPkTzGNt5F7ab'
-  OR from_owner = 'Ckc4FEhaykq6wnKVZnbvhJCJv95xWMznPkTzGNt5F7ab'

+ 0 - 51
src/library/sql_xianyu.sql

@@ -1,51 +0,0 @@
-SHOW TABLES;
-USE mine_01;
-WITH RECURSIVE excluded_ips(ip) AS(
-  SELECT 'ip20'  
-  UNION ALL
-  SELECT 'ip21' 
-),  ConnectedIPs AS (
-    -- 递归基: 初始化起始 IP 和结束 IP
-    -- 这些是递归查询的起点
-    SELECT 
-        1 AS level,  -- 记录当前递归层级(初始为1)
-        'ip0' AS from_ip,  -- 起始 IP
-        NULL AS to_ip,  -- 初始时没有 to ip
-        0 AS addition_info  -- 初始时没有标记为连接数过多
-    UNION ALL
-    SELECT 
-        1 AS level,  -- 记录当前递归层级(初始为1)  
-        'ip1' AS from_ip,  -- 起始 IP
-        NULL AS to_ip,  -- 初始时没有 to ip
-        0 AS addition_info  -- 初始时没有标记为连接数过多
-    -- 递归步骤:查找与已知 IP 相连的其他 IP
-    UNION ALL
-    SELECT 
-        ci.level + 1 AS level,  -- 下一层级的递归层级(当前层级+1)
-        ci.from_ip AS from_ip,  -- 当前层级的 from ip
-        c.ip_to AS to_ip,  -- 新的 to ip
-        CASE 
-            -- 检査当前 IP 的连接数是否超过s
-            WHEN (SELECT COUNT(*) FROM table_01 cc WHERE cc.ip_from = ci.from_ip OR cc.ip_to = ci.from_ip) >= 5 THEN 1
-            ELSE 0
-        END AS addition_info
-    FROM ConnectedIPs ci
-    JOIN table_01 c ON (c.ip_from = ci.from_ip OR c.ip_to = ci.from_ip)
-    -- 递归条件:确保递归深度不超过最大值并且新Ip不在排除列表中
-    WHERE ci.level < 5  -- 最大递归深度为5
-    AND NOT EXISTS (SELECT 1 FROM excluded_ips ei WHERE ei.ip = c.ip_from OR ei.ip = c.ip_to)
-    )
--- 选择最终结果
-SELECT 
-    ci.level,
-    ci.from_ip,
-    ci.to_ip,
-    NULL AS unique_hash,  -- 需要替换为你实际的 unique hash 生成逻辑
-    CURRENT_TIMESTAMP AS time,  -- 当前时间戳作为时间字段
-    NULL AS data,  -- 需要替换为你实际的数据
-    NULL AS from_pos,  -- 需要替换为你实际的位置信息
-    NULL AS to_pos,  -- 需要替换为你实际的位置信息
-    ci.addition_info  -- 标记是否连接数过多
-FROM ConnectedIPs ci
-WHERE ci.level <= 5;  -- 确保只选择不超过最大递归深度的结果
-

+ 0 - 54
src/library/sql_xianyu001_myxiugai.sql

@@ -1,54 +0,0 @@
-WITH RECURSIVE excluded_ips(ip) AS(
-  SELECT 'ip20'  
-  UNION ALL
-  SELECT 'ip21' 
-),
-
- ConnectedIPs AS (
-    -- 递归基: 初始化起始 IP 和结束 IP
-    -- 这些是递归查询的起点
-    SELECT 
-        1 AS level,  -- 记录当前递归层级(初始为1)
-        'ip0' AS from_ip,  -- 起始 IP
-        NULL AS to_ip,  -- 初始时没有 to ip
-        0 AS addition_info  -- 初始时没有标记为连接数过多
-    UNION ALL
-    SELECT 
-        1 AS level,  -- 记录当前递归层级(初始为1)  
-        'ip1' AS from_ip,  -- 起始 IP
-        NULL AS to_ip,  -- 初始时没有 to ip
-        0 AS addition_info  -- 初始时没有标记为连接数过多
-    -- 递归步骤:查找与已知 IP 相连的其他 IP
-    UNION ALL
-    SELECT 
-        ConnectedIPs.level + 1 AS level,  -- 下一层级的递归层级(当前层级+1)
-        ConnectedIPs.from_ip AS from_ip,  -- 当前层级的 from ip
-        table_01.to_ip AS to_ip,  -- 新的 to ip
-        CASE 
-            -- 检査当前 IP 的连接数是否超过s
-            WHEN (SELECT COUNT(*) FROM table_01   WHERE table_01.from_ip = ConnectedIPs.from_ip OR table_01.to_ip = ConnectedIPs.from_ip) >= 5 THEN 1
-            ELSE 0
-        END AS addition_info
-    FROM ConnectedIPs  
-    JOIN table_01  ON (table_01.from_ip = ConnectedIPs.from_ip OR table_01.to_ip = ConnectedIPs.from_ip)
-    -- 递归条件:确保递归深度不超过最大值并且新Ip不在排除列表中
-
-    WHERE ConnectedIPs.level < 5  -- 最大递归深度为5
-    AND NOT EXISTS (SELECT 1 FROM excluded_ips  WHERE excluded_ips.ip = table_01.from_ip OR excluded_ips.ip = table_01.to_ip)
-    )
--- 选择最终结果
-
-
-SELECT 
-    ConnectedIPs.level,
-    ConnectedIPs.from_ip,
-    ConnectedIPs.to_ip,
-    NULL AS unique_hash,  -- 需要替换为你实际的 unique hash 生成逻辑
-    CURRENT_TIMESTAMP AS time,  -- 当前时间戳作为时间字段
-    NULL AS data,  -- 需要替换为你实际的数据
-    NULL AS from_pos,  -- 需要替换为你实际的位置信息
-    NULL AS to_pos,  -- 需要替换为你实际的位置信息
-    ConnectedIPs.addition_info  -- 标记是否连接数过多
-FROM ConnectedIPs  
-WHERE ConnectedIPs.level <= 5;  -- 确保只选择不超过最大递归深度的结果
-

+ 60 - 0
src/library/xianyu_sql.sql

@@ -0,0 +1,60 @@
+-- table_01是你的实际表名。
+-- excludeIP是排除 IP 的表名。
+-- overconnectedIPTable是存储连接数过多 IP 的表名。
+-- ip0和ip1是你指定的初始 IP 值。
+
+use mine_01;
+WITH RECURSIVE cte AS (
+    SELECT ID, time, from_ip, to_ip, data, from_pos, to_pos, 1 AS level, 
+           CASE WHEN from_ip IN (SELECT exclude_ip FROM excludeIP) OR to_ip IN (SELECT exclude_ip FROM excludeIP) THEN 0 ELSE 1 END AS addtion_info
+    FROM table_01
+    WHERE from_ip IN ('ip0','ip1') OR to_ip IN ('ip0','ip1')
+    UNION ALL
+    SELECT t.ID, t.time, t.from_ip, t.to_ip, t.data, t.from_pos, t.to_pos, cte.level + 1,
+           CASE WHEN t.from_ip IN (SELECT exclude_ip FROM excludeIP) OR t.to_ip IN (SELECT exclude_ip FROM excludeIP) OR
+                (t.from_ip = cte.from_ip AND t.to_ip = cte.to_ip) OR
+                (t.to_ip = cte.from_ip AND t.from_ip = cte.to_ip) THEN 0 ELSE 1 END AS addtion_info
+    FROM table_01 t
+    JOIN cte ON t.from_ip = cte.to_ip OR t.to_ip = cte.from_ip
+    WHERE cte.addtion_info = 1 AND
+          (SELECT COUNT(*) FROM table_01 sub WHERE sub.from_ip = t.from_ip OR sub.to_ip = t.from_ip) <= 5 AND
+          t.from_ip NOT IN (SELECT exclude_ip FROM excludeIP) AND t.to_ip NOT IN (SELECT exclude_ip FROM excludeIP)
+), excluded_ips AS (
+    SELECT from_ip AS exclude_ip FROM cte WHERE addtion_info = 0
+    UNION ALL
+    SELECT to_ip AS exclude_ip FROM cte WHERE addtion_info = 0
+), overconnected_ips AS (
+    SELECT from_ip AS overconnected_ip FROM cte WHERE (SELECT COUNT(*) FROM table_01 sub WHERE sub.from_ip = cte.from_ip OR sub.to_ip = cte.from_ip) > 5
+    UNION ALL
+    SELECT to_ip AS overconnected_ip FROM cte WHERE (SELECT COUNT(*) FROM table_01 sub WHERE sub.from_ip = cte.to_ip OR sub.to_ip = cte.to_ip) > 5
+)
+INSERT INTO excludeIP (exclude_ip)
+SELECT exclude_ip FROM excluded_ips;
+
+INSERT INTO overconnectedIPTable (overconnected_ip)
+SELECT overconnected_ip FROM overconnected_ips;
+
+SELECT ID, time, from_ip, to_ip, data, from_pos, to_pos, level, addtion_info
+FROM cte;
+
+
+
+
+-- 使用WITH RECURSIVE语句定义递归查询:
+-- 首先定义名为cte的公共表表达式(Common Table Expression),它包含了递归查询的逻辑。
+-- 在初始部分,从表table_01中选择满足from_ip为指定初始 IP 之一或to_ip为指定初始 IP 之一的记录,并计算初始的level(递归层级)为 1,
+-- 以及根据 IP 是否在排除 IP 表中来确定addtion_info的值(用于标记该记录是否可继续用于递归)。
+-- 在递归部分,从表table_01中选择新的记录,这些记录的from_ip与上一层级结果的to_ip相等或者to_ip与上一层级结果的from_ip相等。
+-- 同时,进行一系列条件判断,确保新记录满足:addtion_info 为 1(即不是排除的 IP)、连接的 IP 数量不超过 5、新 IP 不在排除 IP 表中。并且计算新的level和addtion_info值。
+-- 定义排除 IP 和连接数过多 IP 的临时表:
+-- excluded_ips临时表通过从递归结果cte中选择addtion_info为 0 的记录的from_ip和to_ip作为排除的 IP。
+-- overconnected_ips临时表从递归结果cte中选择连接数超过 5 的 IP(通过子查询计算连接数)。
+-- 插入数据到排除 IP 表和连接数过多 IP 表:
+-- 使用INSERT INTO语句将excluded_ips临时表中的排除 IP 插入到excludeIP表中。
+-- 将overconnected_ips临时表中的连接数过多 IP 插入到overconnectedIPTable表中。
+-- 选择最终结果集:
+-- 从递归结果cte中选择所需的列(ID、time、from_ip、to_ip、data、from_pos、to_pos、level、addtion_info)作为最终的查询结果集。
+
+
+
+

+ 1 - 0
src/library/爬虫结论

@@ -0,0 +1 @@
+dexscreener 完全不行,  solscan 除了下载可以,其余都不行

BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/.~sec_sol_transfer_depth_01.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/counts_sol_transfer_depth_01.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/sol_transfer_13k54MVb47mqHnC1e9DrBdWE339De34qMrDL8Y3j5Fae.xlsx → src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/endaddress_sol_transfer_depth_01.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/sol_transfer_88ux1j5Dmv9QrtBLxCVie5marpNv6iuocHjeUQs297ki.xlsx → src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_128StzFht2ALnHGTZN2CKdSwT7qav1T1mwLN1hUSwhFu.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/sol_transfer_BNBx8JBvxrmM699C92bZQ7VKngdfcdudFcQrH7oLnFvw.xlsx → src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_2Gj1xmqgxyFHuFxA6FHLcwYPHkqsdGf2H9bdtpYFxgzn.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/sol_transfer_2NmBRrkojJK6sEXaVzCw8vwsnCwvjxfJELEdL41YpE5k.xlsx → src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_2GjViMLQBVX2F7F1xGwuxYUkYtPnJ4qusjxhX95DG7xQ.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/sol_transfer_Bt65TtMCey7GARig16qp7LmxzYHwWyBitKJBswPeFsXE.xlsx → src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_2TvYDht6fQ9WencbkdHo5zisdWU6z4EDvvTjdVekmqSJ.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_2dVcvshsWeRXAMoy7h2Ae1V5sNS6qcdLF5APMo9UZ6CR.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_2oLAt5nHoM8jrfFqqDvYcehXgn9oPkySCJsA1TALRWAN.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_2yt4c1KDiWDzz62aj6jSjHVpzd1WzAYvuAjqDPqKLLFR.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_367CqCGUSBhrpfhBoXxCKjbXBNP5aMFoyVHd1vQ5eHc8.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/sol_transfer_DugBdsvaN7PsEPK5xefi9g84RgC7PLsPY42Rt1UJvqjy.xlsx → src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_3GH5GyVqRRdJZggekBrPLssHbW3Qg9Y1Dgsz8KG1hs1S.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_3RQzC86faRYAgHjWx3jnfbt8PfwM6cLLD81d73LinwBi.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_3ZfGsZtPW4z1VD9iD4tDrkocTGC2LjXMtZYHn3szTaf6.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_3gAJAMY5fRD4QymyHPik9db5FpRADBV1cJ7uzfpiVyDk.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_3tApYF7oDnXuu5oDrjXrYQHF2jo4ED4MRx4RjNxdEnKD.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_3vjvHYUVdaTDwaDxJJPM5d2ki3tLwKobMdPAMWmfDrE5.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_41Dkni5dyHranPKq8p9fTwQ7hy8dPPnR9iwMBmyM5sDj.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_41x6KhvrSbmf1285YUqHvQpc9BtYNek5A4xJ3sdbg4yL.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/sol_transfer_4kBAKyY6wYgqHsWTUnanQCtqu8qCc5Ln2b4f4ubQqtbq.xlsx → src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_4LQuLeQYrAsqHtsJ3s15dT8A4Jpbr6iEKnK2DJAL7ZNo.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_4ZStjfNTvTDHGsBGqQLTfXvtALMHwnfpUEdbnRmgbPVm.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/sol_transfer_62GvRgevD9g93xoyV8SjFL5VKF2h7YhCvJWiLzfNm8uC.xlsx → src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_4bCghpnzid8MSw3KV4A449zqeFuKxL59f4rvKMAT3pLB.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_4g6MzgJ31eHwTgUWUrVAEkmcVZ5HYnKDurHq8Qa4ximt.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_4kBAKyY6wYgqHsWTUnanQCtqu8qCc5Ln2b4f4ubQqtbq.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/sol_transfer_128StzFht2ALnHGTZN2CKdSwT7qav1T1mwLN1hUSwhFu.xlsx → src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_58YHxodnzZKxVBE5EsATs38ywEFV7M8ijjBoBkYAJY8J.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/sol_transfer_9kTx1no1d1C81N8zFT6ck4S5zvKsgpbbLEUf5KZJeC32.xlsx → src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_5E7G5aiJcsNa6euqxEXgZdwGM3fu9sAVpqY8S5Hz2ETY.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/sol_transfer_hCBW9EqREix4VXWj2xBpwEpSVMFx2tfVG78zFYbVQBT.xlsx → src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_5FZ6h28UnFkZ43PRFvMcwSE9kcdT4YNmcxvqdpHe6MuW.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_5HKmPLjiFy7RqfWKCrrSGPvoXQnXfnBahRya8c13FgHd.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/sol_transfer_Dx7Vfq9f5UAMB2BUwi3WHNnhyo2pWipKFk54wTunk6Uq.xlsx → src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_5KepH8US17rotNGJfZFpPRZShERGJnKwDieVxgeEH6vr.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_5N3mvHw9ZiZ78vQFcMrZ4dT9tQ98SSsE5dJQeqciV7Km.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_5ci8DDNfyBhcrV7aqbNRRwQRNSGeZMrtt5xvj79TQMqw.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/sol_transfer_9gpss8bMuEA5jfunfL3eCDJNZ5fpc3vY2phWFKpr1YwR.xlsx → src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_5d2PUxoqCcRSThzgtHx8gEH3zeqZsWbAEpzaM5zmGFF5.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/sol_transfer_5d9b1VxTz34nKuWaLAQ4oTzo9rrNLVxWycjds4pGBmfr.xlsx → src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_5d9b1VxTz34nKuWaLAQ4oTzo9rrNLVxWycjds4pGBmfr.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/sol_transfer_EYMogFcMChGBsKEcMBDpzUTWeBh8fNBjyDRYKchR2dm.xlsx → src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_5eftcUwY3GHQ8gtJ7h4sfodfj1Lwo94bDGVmavKGyNMy.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_62GvRgevD9g93xoyV8SjFL5VKF2h7YhCvJWiLzfNm8uC.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/sol_transfer_2TvYDht6fQ9WencbkdHo5zisdWU6z4EDvvTjdVekmqSJ.xlsx → src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_6iXMRCCBuXDNP2sEKERdqYwJn8BzLjH55NCu2RcsYg2Z.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_71miLUAUhRmLtahde3e79XzG3yLQGDkw3vkJhRrr1WBq.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_7vQ49m5dsgfKPBSwUzE3epRYjD3DLXEXXLEnrn1bD3ac.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/sol_transfer_AFcXNrFiQehbJxFePzabUBKeyvF2kVhKjkYXiS5EtcoK.xlsx → src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_88ux1j5Dmv9QrtBLxCVie5marpNv6iuocHjeUQs297ki.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_8D4bknJuKUH1LgxAXLAJ9ZcQz2Grfd2uyF37QpmQgyWc.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/sol_transfer_7vQ49m5dsgfKPBSwUzE3epRYjD3DLXEXXLEnrn1bD3ac.xlsx → src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_8cy6GzSnnY967otEFMPhkpUKKqaqHb1LMGSNnQvwvBUr.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_8yBgWwLK6JBKVVpqtAxnjcf75qRPNBiHH85wruwp6rin.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/sol_transfer_2dVcvshsWeRXAMoy7h2Ae1V5sNS6qcdLF5APMo9UZ6CR.xlsx → src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_95GgGqZx9EjHrpcARw8k51KPKjJ9HsdQPq2j7HmPNoSn.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/sol_transfer_8cy6GzSnnY967otEFMPhkpUKKqaqHb1LMGSNnQvwvBUr.xlsx → src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_9LB364wgGh3Mc57Mvg9Vi2gzLFjc7sJBUkRgQ5sBfaej.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_9R4gSQNZPbEiJMKm12fVAh7pVKPBXjbiojHxHeUSe14b.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_9U2nDnZEHADzrJHzzBVU3eJQKmf1tQ3pWh7zCKKyj18s.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_9Yjr9BhdFthLzQMW4kY7j6rcDKXC3Wvj74p7bCsFVyyJ.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_9gpss8bMuEA5jfunfL3eCDJNZ5fpc3vY2phWFKpr1YwR.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_9kTx1no1d1C81N8zFT6ck4S5zvKsgpbbLEUf5KZJeC32.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_9p4LXuXDsY6Ec168bdLM8vL5PwYrfpNcoHYg3cifz97F.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/sol_transfer_9U2nDnZEHADzrJHzzBVU3eJQKmf1tQ3pWh7zCKKyj18s.xlsx → src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_9zcddzV4MZR41c4CHMcyy7t8z8o8kTbGst3xi3rrbnkZ.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_AFcXNrFiQehbJxFePzabUBKeyvF2kVhKjkYXiS5EtcoK.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/sol_transfer_4bCghpnzid8MSw3KV4A449zqeFuKxL59f4rvKMAT3pLB.xlsx → src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_AgPsPtpAiQqMtcmSsGEGvje1dXTco3NGi1gAF7gvYC7L.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/sol_transfer_HqVxz1ve5YgFW3xyxrj6PyPgWm4cYutfnewJ3kUoYrNZ.xlsx → src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_BAgn8NWpFqkXHkGeztqJU69rq3f5ngzX97f793K1BKmG.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/sol_transfer_J2ijoouRw5qgqiGkcKYVYBcB3RdxxiKJzr2PV3eCJFbr.xlsx → src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_BBjXNAHiim3QMALgBhHjDkXNVhNwE9FAsC8SN1ePayeq.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_BNBx8JBvxrmM699C92bZQ7VKngdfcdudFcQrH7oLnFvw.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/sol_transfer_J3aGfRaHFPTFDRxshPScsDAivsPZih1RNQfqpUfvaGPb.xlsx → src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_BXvEmdFHrSCDE1DYg47U1SgW6juGtSHfx32ijpM5oq23.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_Bfm6Q11iuFoaK8HnWTP14ZLwqBXMm35KSJtTb1PuErVX.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_BodPAcQsBE55C5jYn2UwpKK232YdLnhDaWYamshzvX5t.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/sol_transfer_BAgn8NWpFqkXHkGeztqJU69rq3f5ngzX97f793K1BKmG.xlsx → src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_Bt65TtMCey7GARig16qp7LmxzYHwWyBitKJBswPeFsXE.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_C7JWFr5NHJ5kVmu9z5qjttgvgnSGaUyJsUzc3PuqE6BP.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_CQvgGA9MbyKrpdKW7PhjJDy8LeJY6tb4ACe9Yb5QVBx8.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/sol_transfer_G4q4MbmhHU1ixmYuqoKqgnkBx4kx3JFo3CpV3aVFeTZh.xlsx → src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_CSjHti7ML8zUuCY8WwLbMVJMJghT9vPeviuFE273zMwn.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/sol_transfer_BodPAcQsBE55C5jYn2UwpKK232YdLnhDaWYamshzvX5t.xlsx → src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_CYBX2h2cFVUqDWnbemmo7UndkyfHKWM5e77eqyTN8ma6.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_CrHNNo7Eq7ELtNS7GAVb881go9MryF3UqkzsB7YgWDJZ.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_CwTNqDtpCg9ZBD9Kfsh8iPjrzrWmywjNzYsYD1LY5Y9x.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_DS7wjwsSqDJStxpfUb8qJLf57NvHvGPQ4z2XNVBVGa4m.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_DZQ7yP5jZ2K5G9PhXKgjqWr9a7Ne2yd8tna6cXHQqXn3.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_DZuiugsZ8bJNLYnkLE3aK6Fyj3PdGEeev2kUQ9htk1No.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_DugBdsvaN7PsEPK5xefi9g84RgC7PLsPY42Rt1UJvqjy.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_Dx7Vfq9f5UAMB2BUwi3WHNnhyo2pWipKFk54wTunk6Uq.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_E3hscp88Hmp4tp8E6rXKdhxTWVCLKpHFQQSPuKNQxi3N.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_EYMogFcMChGBsKEcMBDpzUTWeBh8fNBjyDRYKchR2dm.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_F4epX4JL7N1cwwtazSvaCXatHu1cN5VurbiXocauf8oM.xlsx


Unele fișiere nu au fost afișate deoarece prea multe fișiere au fost modificate în acest diff