windowdog 1 місяць тому
батько
коміт
24de53bf56
100 змінених файлів з 387 додано та 377 видалено
  1. 0 0
      src/code/00000_test_dexscreener_playwright_chrome.py
  2. 0 1
      src/code/00000_test_dexscreener_playwright_edge.py
  3. 0 0
      src/code/000_01_test_dexscreener_playwright.py
  4. 23 32
      src/code/new_8002_get_transfer_info_bysolscan_playwright.py
  5. 42 6
      src/code/new_8003_handle_depth.py
  6. 6 4
      src/code/new_8004_merge_depth.py
  7. 24 33
      src/code/test_my_find_zhuangjia/new_8002_get_transfer_info_bysolscan_playwright.py
  8. 25 4
      src/code/test_my_find_zhuangjia/new_8003_handle_depth.py
  9. 26 3
      src/code/test_my_find_zhuangjia/new_8004_merge_depth.py
  10. 0 9
      src/library/002.sql
  11. 4 0
      src/library/autojs.md
  12. 0 42
      src/library/dalao_one_token_transfer copy.sql
  13. 0 70
      src/library/dalao_one_token_transfer.sql
  14. 98 0
      src/library/find_token_relation.sql
  15. 78 0
      src/library/find_token_relation——02方案.sql
  16. 0 12
      src/library/mysql01.sql
  17. 0 56
      src/library/nanlysis.sql
  18. 0 51
      src/library/sql_xianyu.sql
  19. 0 54
      src/library/sql_xianyu001_myxiugai.sql
  20. 60 0
      src/library/xianyu_sql.sql
  21. 1 0
      src/library/爬虫结论
  22. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/counts_sol_transfer_depth_01.xlsx
  23. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/endaddress_sol_transfer_depth_01.xlsx
  24. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_128StzFht2ALnHGTZN2CKdSwT7qav1T1mwLN1hUSwhFu.xlsx
  25. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_2Gj1xmqgxyFHuFxA6FHLcwYPHkqsdGf2H9bdtpYFxgzn.xlsx
  26. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_2GjViMLQBVX2F7F1xGwuxYUkYtPnJ4qusjxhX95DG7xQ.xlsx
  27. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_2TvYDht6fQ9WencbkdHo5zisdWU6z4EDvvTjdVekmqSJ.xlsx
  28. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_2dVcvshsWeRXAMoy7h2Ae1V5sNS6qcdLF5APMo9UZ6CR.xlsx
  29. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_2oLAt5nHoM8jrfFqqDvYcehXgn9oPkySCJsA1TALRWAN.xlsx
  30. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_2yt4c1KDiWDzz62aj6jSjHVpzd1WzAYvuAjqDPqKLLFR.xlsx
  31. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_367CqCGUSBhrpfhBoXxCKjbXBNP5aMFoyVHd1vQ5eHc8.xlsx
  32. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_3GH5GyVqRRdJZggekBrPLssHbW3Qg9Y1Dgsz8KG1hs1S.xlsx
  33. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_3RQzC86faRYAgHjWx3jnfbt8PfwM6cLLD81d73LinwBi.xlsx
  34. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_3ZfGsZtPW4z1VD9iD4tDrkocTGC2LjXMtZYHn3szTaf6.xlsx
  35. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_3gAJAMY5fRD4QymyHPik9db5FpRADBV1cJ7uzfpiVyDk.xlsx
  36. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_3tApYF7oDnXuu5oDrjXrYQHF2jo4ED4MRx4RjNxdEnKD.xlsx
  37. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_3vjvHYUVdaTDwaDxJJPM5d2ki3tLwKobMdPAMWmfDrE5.xlsx
  38. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_41Dkni5dyHranPKq8p9fTwQ7hy8dPPnR9iwMBmyM5sDj.xlsx
  39. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_41x6KhvrSbmf1285YUqHvQpc9BtYNek5A4xJ3sdbg4yL.xlsx
  40. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_4LQuLeQYrAsqHtsJ3s15dT8A4Jpbr6iEKnK2DJAL7ZNo.xlsx
  41. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_4ZStjfNTvTDHGsBGqQLTfXvtALMHwnfpUEdbnRmgbPVm.xlsx
  42. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_4bCghpnzid8MSw3KV4A449zqeFuKxL59f4rvKMAT3pLB.xlsx
  43. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_4g6MzgJ31eHwTgUWUrVAEkmcVZ5HYnKDurHq8Qa4ximt.xlsx
  44. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_4kBAKyY6wYgqHsWTUnanQCtqu8qCc5Ln2b4f4ubQqtbq.xlsx
  45. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_58YHxodnzZKxVBE5EsATs38ywEFV7M8ijjBoBkYAJY8J.xlsx
  46. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_5E7G5aiJcsNa6euqxEXgZdwGM3fu9sAVpqY8S5Hz2ETY.xlsx
  47. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_5FZ6h28UnFkZ43PRFvMcwSE9kcdT4YNmcxvqdpHe6MuW.xlsx
  48. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_5HKmPLjiFy7RqfWKCrrSGPvoXQnXfnBahRya8c13FgHd.xlsx
  49. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_5KepH8US17rotNGJfZFpPRZShERGJnKwDieVxgeEH6vr.xlsx
  50. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_5N3mvHw9ZiZ78vQFcMrZ4dT9tQ98SSsE5dJQeqciV7Km.xlsx
  51. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_5ci8DDNfyBhcrV7aqbNRRwQRNSGeZMrtt5xvj79TQMqw.xlsx
  52. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_5d2PUxoqCcRSThzgtHx8gEH3zeqZsWbAEpzaM5zmGFF5.xlsx
  53. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_5d9b1VxTz34nKuWaLAQ4oTzo9rrNLVxWycjds4pGBmfr.xlsx
  54. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_5eftcUwY3GHQ8gtJ7h4sfodfj1Lwo94bDGVmavKGyNMy.xlsx
  55. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_62GvRgevD9g93xoyV8SjFL5VKF2h7YhCvJWiLzfNm8uC.xlsx
  56. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_6iXMRCCBuXDNP2sEKERdqYwJn8BzLjH55NCu2RcsYg2Z.xlsx
  57. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_71miLUAUhRmLtahde3e79XzG3yLQGDkw3vkJhRrr1WBq.xlsx
  58. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_7vQ49m5dsgfKPBSwUzE3epRYjD3DLXEXXLEnrn1bD3ac.xlsx
  59. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_88ux1j5Dmv9QrtBLxCVie5marpNv6iuocHjeUQs297ki.xlsx
  60. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_8D4bknJuKUH1LgxAXLAJ9ZcQz2Grfd2uyF37QpmQgyWc.xlsx
  61. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_8cy6GzSnnY967otEFMPhkpUKKqaqHb1LMGSNnQvwvBUr.xlsx
  62. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_8yBgWwLK6JBKVVpqtAxnjcf75qRPNBiHH85wruwp6rin.xlsx
  63. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_95GgGqZx9EjHrpcARw8k51KPKjJ9HsdQPq2j7HmPNoSn.xlsx
  64. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_9LB364wgGh3Mc57Mvg9Vi2gzLFjc7sJBUkRgQ5sBfaej.xlsx
  65. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_9R4gSQNZPbEiJMKm12fVAh7pVKPBXjbiojHxHeUSe14b.xlsx
  66. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_9U2nDnZEHADzrJHzzBVU3eJQKmf1tQ3pWh7zCKKyj18s.xlsx
  67. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_9Yjr9BhdFthLzQMW4kY7j6rcDKXC3Wvj74p7bCsFVyyJ.xlsx
  68. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_9gpss8bMuEA5jfunfL3eCDJNZ5fpc3vY2phWFKpr1YwR.xlsx
  69. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_9kTx1no1d1C81N8zFT6ck4S5zvKsgpbbLEUf5KZJeC32.xlsx
  70. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_9p4LXuXDsY6Ec168bdLM8vL5PwYrfpNcoHYg3cifz97F.xlsx
  71. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_9zcddzV4MZR41c4CHMcyy7t8z8o8kTbGst3xi3rrbnkZ.xlsx
  72. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_AFcXNrFiQehbJxFePzabUBKeyvF2kVhKjkYXiS5EtcoK.xlsx
  73. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_AgPsPtpAiQqMtcmSsGEGvje1dXTco3NGi1gAF7gvYC7L.xlsx
  74. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_BAgn8NWpFqkXHkGeztqJU69rq3f5ngzX97f793K1BKmG.xlsx
  75. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_BBjXNAHiim3QMALgBhHjDkXNVhNwE9FAsC8SN1ePayeq.xlsx
  76. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_BNBx8JBvxrmM699C92bZQ7VKngdfcdudFcQrH7oLnFvw.xlsx
  77. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_BXvEmdFHrSCDE1DYg47U1SgW6juGtSHfx32ijpM5oq23.xlsx
  78. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_Bfm6Q11iuFoaK8HnWTP14ZLwqBXMm35KSJtTb1PuErVX.xlsx
  79. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_BodPAcQsBE55C5jYn2UwpKK232YdLnhDaWYamshzvX5t.xlsx
  80. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_Bt65TtMCey7GARig16qp7LmxzYHwWyBitKJBswPeFsXE.xlsx
  81. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_C7JWFr5NHJ5kVmu9z5qjttgvgnSGaUyJsUzc3PuqE6BP.xlsx
  82. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_CQvgGA9MbyKrpdKW7PhjJDy8LeJY6tb4ACe9Yb5QVBx8.xlsx
  83. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_CSjHti7ML8zUuCY8WwLbMVJMJghT9vPeviuFE273zMwn.xlsx
  84. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_CYBX2h2cFVUqDWnbemmo7UndkyfHKWM5e77eqyTN8ma6.xlsx
  85. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_CrHNNo7Eq7ELtNS7GAVb881go9MryF3UqkzsB7YgWDJZ.xlsx
  86. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_CwTNqDtpCg9ZBD9Kfsh8iPjrzrWmywjNzYsYD1LY5Y9x.xlsx
  87. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_DS7wjwsSqDJStxpfUb8qJLf57NvHvGPQ4z2XNVBVGa4m.xlsx
  88. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_DZQ7yP5jZ2K5G9PhXKgjqWr9a7Ne2yd8tna6cXHQqXn3.xlsx
  89. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_DZuiugsZ8bJNLYnkLE3aK6Fyj3PdGEeev2kUQ9htk1No.xlsx
  90. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_DugBdsvaN7PsEPK5xefi9g84RgC7PLsPY42Rt1UJvqjy.xlsx
  91. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_Dx7Vfq9f5UAMB2BUwi3WHNnhyo2pWipKFk54wTunk6Uq.xlsx
  92. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_E3hscp88Hmp4tp8E6rXKdhxTWVCLKpHFQQSPuKNQxi3N.xlsx
  93. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_EYMogFcMChGBsKEcMBDpzUTWeBh8fNBjyDRYKchR2dm.xlsx
  94. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_F4epX4JL7N1cwwtazSvaCXatHu1cN5VurbiXocauf8oM.xlsx
  95. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_FdvbifiUkac7sLw8KjcgMCC8UAE5MDSnq7CYwSmUy6DA.xlsx
  96. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_Ff9WqANM7Xt3KszjHcsK2Qp8rTik1EXNn9bfxaHGzWXB.xlsx
  97. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_FmYK2rewHFNktVKG78shmsRjbqMiBwKkwzHZe4Dkt9jk.xlsx
  98. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_G4q4MbmhHU1ixmYuqoKqgnkBx4kx3JFo3CpV3aVFeTZh.xlsx
  99. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_GZenVCN4Dz9K7GjbgEgXyM7p9C2959CNDBnVfYbbrD12.xlsx
  100. BIN
      src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_HDuHPwfsFPzoBqZJjQQFQWMcNvHzEgApAn9jutju1QMM.xlsx

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


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

@@ -1 +0,0 @@
-

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


+ 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()
 

+ 42 - 6
src/code/new_8003_handle_depth.py

@@ -71,6 +71,13 @@ def sum_same_from_to(gdf ):
     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"] )
+    
+    return gdf
 def main():
     global arr_exclude_address
     for str_dalaoaddress in arr_str_dalaoaddress:
@@ -80,11 +87,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)
 
@@ -94,9 +119,11 @@ def main():
             "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
@@ -107,7 +134,9 @@ 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/  "mid" /f"mid_sol_transfer_{str_dalaoaddress}.csv",index=False)
+        
+        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))
@@ -117,10 +146,17 @@ def main():
         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=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', 'rel_address'  ]]
+        df_sol_transfer=df_sol_transfer.drop_duplicates()
         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"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"final_sol_transfer_{str_dalaoaddress}.xlsx",index=False)
  
  
 main()

+ 6 - 4
src/code/new_8004_merge_depth.py

@@ -37,10 +37,10 @@ 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"sol_transfer_{str_dalaoaddress}.xlsx" ).exists():
+        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"sol_transfer_{str_dalaoaddress}.xlsx",dtype=object )
+        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({
@@ -52,11 +52,12 @@ def main():
         
     })
  
+ 
     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):
@@ -65,9 +66,10 @@ def main():
         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()
     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)

+ 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()
 

+ 25 - 4
src/code/test_my_find_zhuangjia/new_8003_handle_depth.py

@@ -45,7 +45,7 @@ baseclass.makedirpath(baseclass.ana_dalao_relation_by_solscan_path /str_tokenadd
 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( ):
@@ -80,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)
 
@@ -94,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))
         

+ 26 - 3
src/code/test_my_find_zhuangjia/new_8004_merge_depth.py

@@ -27,7 +27,7 @@ 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"
 
@@ -37,8 +37,11 @@ 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"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/ f"sol_transfer_{str_dalaoaddress}.xlsx",dtype=object )
+        cur_df_sol_transfer = pd.read_excel(baseclass.ana_dalao_relation_by_solscan_path /str_tokenaddress_dalao_source/find_depth/"final"/ f"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({
 
@@ -48,7 +51,27 @@ def main():
         "is_relationend":int,
         
     })
-    print(df_sol_transfer.head(5))
+ 
+    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_dalao_count = df_sol_transfer[[  "dalaoaddress", "dalao_count"  ]].drop_duplicates()
+    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

+ 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/counts_sol_transfer_depth_01.xlsx


BIN
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/final/sol_transfer_AFcXNrFiQehbJxFePzabUBKeyvF2kVhKjkYXiS5EtcoK.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/final/sol_transfer_4bCghpnzid8MSw3KV4A449zqeFuKxL59f4rvKMAT3pLB.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/final/sol_transfer_E3hscp88Hmp4tp8E6rXKdhxTWVCLKpHFQQSPuKNQxi3N.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/final/sol_transfer_3RQzC86faRYAgHjWx3jnfbt8PfwM6cLLD81d73LinwBi.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/sol_transfer_5d9b1VxTz34nKuWaLAQ4oTzo9rrNLVxWycjds4pGBmfr.xlsx → 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/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/sol_transfer_5d2PUxoqCcRSThzgtHx8gEH3zeqZsWbAEpzaM5zmGFF5.xlsx → 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/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/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/sol_transfer_J3aGfRaHFPTFDRxshPScsDAivsPZih1RNQfqpUfvaGPb.xlsx → 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/final/sol_transfer_Bt65TtMCey7GARig16qp7LmxzYHwWyBitKJBswPeFsXE.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/final/sol_transfer_HZKNi5RtCM16monmyFPjkSpJNFCKV7mjn3zeL2m7h4c9.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/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/final/sol_transfer_HqVxz1ve5YgFW3xyxrj6PyPgWm4cYutfnewJ3kUoYrNZ.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/sol_transfer_HXVy4JtRaupTwp7UdTXikC3cMPksNPjit87NGU3mRXWE.xlsx → 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/final/sol_transfer_88ux1j5Dmv9QrtBLxCVie5marpNv6iuocHjeUQs297ki.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/final/sol_transfer_J2ijoouRw5qgqiGkcKYVYBcB3RdxxiKJzr2PV3eCJFbr.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/final/sol_transfer_hCBW9EqREix4VXWj2xBpwEpSVMFx2tfVG78zFYbVQBT.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/sol_transfer_3vjvHYUVdaTDwaDxJJPM5d2ki3tLwKobMdPAMWmfDrE5.xlsx → 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/final/sol_transfer_7vQ49m5dsgfKPBSwUzE3epRYjD3DLXEXXLEnrn1bD3ac.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/sol_transfer_9U2nDnZEHADzrJHzzBVU3eJQKmf1tQ3pWh7zCKKyj18s.xlsx → 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/final/sol_transfer_Dx7Vfq9f5UAMB2BUwi3WHNnhyo2pWipKFk54wTunk6Uq.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/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/final/final_sol_transfer_95GgGqZx9EjHrpcARw8k51KPKjJ9HsdQPq2j7HmPNoSn.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/sol_transfer_C7JWFr5NHJ5kVmu9z5qjttgvgnSGaUyJsUzc3PuqE6BP.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/sol_transfer_2NmBRrkojJK6sEXaVzCw8vwsnCwvjxfJELEdL41YpE5k.xlsx → 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/sol_transfer_BodPAcQsBE55C5jYn2UwpKK232YdLnhDaWYamshzvX5t.xlsx → 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/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/final/final_sol_transfer_AgPsPtpAiQqMtcmSsGEGvje1dXTco3NGi1gAF7gvYC7L.xlsx


BIN
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/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/final/final_sol_transfer_BXvEmdFHrSCDE1DYg47U1SgW6juGtSHfx32ijpM5oq23.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/sol_transfer_9gpss8bMuEA5jfunfL3eCDJNZ5fpc3vY2phWFKpr1YwR.xlsx → 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/final/final_sol_transfer_Bt65TtMCey7GARig16qp7LmxzYHwWyBitKJBswPeFsXE.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/sol_transfer_DugBdsvaN7PsEPK5xefi9g84RgC7PLsPY42Rt1UJvqjy.xlsx → 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/final/final_sol_transfer_CSjHti7ML8zUuCY8WwLbMVJMJghT9vPeviuFE273zMwn.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/sol_transfer_BAgn8NWpFqkXHkGeztqJU69rq3f5ngzX97f793K1BKmG.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/sol_transfer_2dVcvshsWeRXAMoy7h2Ae1V5sNS6qcdLF5APMo9UZ6CR.xlsx → 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/sol_transfer_128StzFht2ALnHGTZN2CKdSwT7qav1T1mwLN1hUSwhFu.xlsx → 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/sol_transfer_13k54MVb47mqHnC1e9DrBdWE339De34qMrDL8Y3j5Fae.xlsx → 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


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


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


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


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


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/sol_transfer_41Dkni5dyHranPKq8p9fTwQ7hy8dPPnR9iwMBmyM5sDj.xlsx → src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_GZenVCN4Dz9K7GjbgEgXyM7p9C2959CNDBnVfYbbrD12.xlsx


BIN
src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/sol_transfer_2GjViMLQBVX2F7F1xGwuxYUkYtPnJ4qusjxhX95DG7xQ.xlsx → src/librarydata/ana_dalao_relation_by_solscan/4GULMPKBJLruChBZWksZzukAg1AjSCmCTMn9ny2Xpump/depth_01/final/final_sol_transfer_HDuHPwfsFPzoBqZJjQQFQWMcNvHzEgApAn9jutju1QMM.xlsx


Деякі файли не було показано, через те що забагато файлів було змінено