Autoforum (Forum Expander)

Автоматический разворот форума, для показа первых постов в списке раздач rutracker и ... т.д.

  1. // ==UserScript==
  2. // @name Autoforum (Forum Expander)
  3. // @author SpyDeX
  4. // @namespace PSVScripts
  5. // @description Автоматический разворот форума, для показа первых постов в списке раздач rutracker и ... т.д.
  6. // @include https*
  7. // @include http*
  8. // @version 0.0.0.11
  9. // @grant GM_xmlhttpRequest
  10. // @grant GM_openInTab
  11. // @grant GM_registerMenuCommand
  12. // @contributionURL https://www.paypal.me/GreasyScripts/1.5usd
  13. // @supportURL https://phantomcity.github.io/GS/AF/
  14. // @icon data:image/svg+xml;utf8;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTYuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjUxMnB4IiBoZWlnaHQ9IjUxMnB4IiB2aWV3Qm94PSIwIDAgNjA2LjE5MSA2MDYuMTkxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA2MDYuMTkxIDYwNi4xOTE7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPGc+Cgk8Zz4KCQk8Zz4KCQkJPHBhdGggZD0iTTkwLjU3MSw0MTMuNzkzYzEwLjU5OSwxMC42LDI0LjYzNCwxNi40MzYsMzkuNTIxLDE2LjQzNmMxNC4zMTIsMCwyNy45NTctNS4zODEsMzguNDIyLTE1LjE1NiAgICAgYzUuNTA0LTUuMTM5LDkuODQxLTExLjIyNywxMi44OS0xOC4wODhjMy4xOTEtNy4xODgsNC44MS0xNC44NTksNC44MS0yMi44MDdWMjMyLjAxNWMwLTcuOTQ3LTEuNjE4LTE1LjYxOS00LjgwOS0yMi44MDUgICAgIGMtMy4wNDgtNi44NjMtNy4zODQtMTIuOTUtMTIuODg5LTE4LjA5MWMtMTAuNDY1LTkuNzczLTI0LjExLTE1LjE1Ny0zOC40MjMtMTUuMTU3Yy0xNC44ODYsMC0yOC45MjIsNS44MzctMzkuNTIxLDE2LjQzNiAgICAgbC02OC43NSw2OC43NTFjLTIzLjEyOSwyMy4xMjktMjMuMTI5LDYwLjc2NCwwLDgzLjg5M0w5MC41NzEsNDEzLjc5M3ogTTUyLjExMywyOTEuNDQybDY4Ljc1LTY4Ljc1ICAgICBjMi42ODYtMi42ODYsNS45ODgtMy44ODgsOS4yMjgtMy44ODhjNi43NzgsMCwxMy4yOCw1LjI2NCwxMy4yOCwxMy4yMTF2MTQyLjE2M2MwLDcuOTQ3LTYuNTAyLDEzLjIxMS0xMy4yOCwxMy4yMTEgICAgIGMtMy4yNCwwLTYuNTQyLTEuMjAxLTkuMjI4LTMuODg5bC02OC43NS02OC43NUM0NS42NzcsMzA4LjMxNCw0NS42NzcsMjk3Ljg3OCw1Mi4xMTMsMjkxLjQ0MnoiIGZpbGw9IiMwMDAwMDAiLz4KCQkJPHBhdGggZD0iTTEzMC4wOTEsNDMwLjcyOWMtMTUuMDIxLDAtMjkuMTgyLTUuODg5LTM5Ljg3NC0xNi41ODJsLTY4Ljc1LTY4Ljc1Yy0xMS4yODEtMTEuMjgtMTcuNDk0LTI2LjMwMy0xNy40OTQtNDIuMyAgICAgczYuMjEzLTMxLjAyLDE3LjQ5NC00Mi4zbDY4Ljc1LTY4Ljc1MWMxMC42OTMtMTAuNjkzLDI0Ljg1NC0xNi41ODMsMzkuODc0LTE2LjU4M2MxNC40MzgsMCwyOC4yMDUsNS40MzEsMzguNzY0LDE1LjI5MiAgICAgYzUuNTUzLDUuMTg2LDkuOTI5LDExLjMyOCwxMy4wMDQsMTguMjUzYzMuMjIsNy4yNTEsNC44NTIsMTQuOTkyLDQuODUyLDIzLjAwOHYxNDIuMTYzYzAsOC4wMTctMS42MzMsMTUuNzU4LTQuODUzLDIzLjAxICAgICBjLTMuMDc4LDYuOTI3LTcuNDUzLDEzLjA2Ni0xMy4wMDUsMTguMjVDMTU4LjI5OSw0MjUuMjk4LDE0NC41MzIsNDMwLjcyOSwxMzAuMDkxLDQzMC43Mjl6IE0xMzAuMDkyLDE3Ni40NjIgICAgIGMtMTQuNzUzLDAtMjguNjYzLDUuNzg1LTM5LjE2NywxNi4yOWwtNjguNzUsNjguNzUxYy0xMS4wOTIsMTEuMDkyLTE3LjIwMSwyNS44NjMtMTcuMjAxLDQxLjU5MyAgICAgYzAsMTUuNzI5LDYuMTA5LDMwLjUwMSwxNy4yMDEsNDEuNTkzbDY4Ljc1LDY4Ljc1YzEwLjUwMywxMC41MDQsMjQuNDEzLDE2LjI4OSwzOS4xNjcsMTYuMjg5ICAgICBjMTQuMTg3LDAsMjcuNzEtNS4zMzUsMzguMDgxLTE1LjAyMWM1LjQ1NC01LjA5Miw5Ljc1MS0xMS4xMjIsMTIuNzc0LTE3LjkyNmMzLjE2My03LjEyMyw0Ljc2Ny0xNC43MjgsNC43NjctMjIuNjA0VjIzMi4wMTUgICAgIGMwLTcuODc1LTEuNjA0LTE1LjQ3OS00Ljc2Ni0yMi42MDJjLTMuMDIxLTYuODAyLTcuMzE4LTEyLjgzNC0xMi43NzMtMTcuOTI5QzE1Ny44LDE4MS43OTcsMTQ0LjI3NiwxNzYuNDYyLDEzMC4wOTIsMTc2LjQ2MnogICAgICBNMTMwLjA5MSwzODcuODg5Yy0zLjU3OCwwLTYuOTgtMS40MzMtOS41ODEtNC4wMzVsLTY4Ljc1LTY4Ljc1Yy0zLjIwOC0zLjIwNy00Ljk3NC03LjQ3MS00Ljk3NC0xMi4wMDcgICAgIGMwLTQuNTM3LDEuNzY3LTguODAxLDQuOTc0LTEyLjAwOGw2OC43NS02OC43NWMyLjYwMi0yLjYwMiw2LjAwNC00LjAzNSw5LjU4MS00LjAzNWM4LjYyNiwwLDEzLjc4LDYuOTcyLDEzLjc4LDEzLjcxMXYxNDIuMTYzICAgICBDMTQzLjg3MiwzODAuOTE3LDEzOC43MTcsMzg3Ljg4OSwxMzAuMDkxLDM4Ny44ODl6IE0xMzAuMDkxLDIxOS4zMDNjLTMuMzU3LDAtNi40MjYsMS4yOTQtOC44NzQsMy43NDJsLTY4Ljc1LDY4Ljc1ICAgICBjLTMuMDE5LDMuMDE5LTQuNjgxLDcuMDMyLTQuNjgxLDExLjMwMWMwLDQuMjY5LDEuNjYzLDguMjgxLDQuNjgxLDExLjNsNjguNzUsNjguNzVjMi40NDcsMi40NDgsNS41MTYsMy43NDIsOC44NzQsMy43NDIgICAgIGM2LjI4MiwwLDEyLjc4LTQuNzU1LDEyLjc4LTEyLjcxMVYyMzIuMDE1QzE0Mi44NzIsMjI0LjA1OCwxMzYuMzc0LDIxOS4zMDMsMTMwLjA5MSwyMTkuMzAzeiIgZmlsbD0iIzAwMDAwMCIvPgoJCTwvZz4KCQk8Zz4KCQkJPHBhdGggZD0iTTU0My41NzksMC41SDI3OS44ODhjLTMyLjA1OSwwLTU4LjE0LDI2LjA4Mi01OC4xNCw1OC4xNHY2NC43NWMwLDMyLjA1OSwyNi4wODIsNTguMTQsNTguMTQsNTguMTRoMjYzLjY4OSAgICAgYzMyLjA1OSwwLDU4LjE0MS0yNi4wODIsNTguMTQxLTU4LjE0VjU4LjY0QzYwMS43MiwyNi41ODIsNTc1LjYzOCwwLjUsNTQzLjU3OSwwLjV6IE01NTguODc4LDEyMy4zOSAgICAgYzAsOC40NS02Ljg1LDE1LjMtMTUuMjk5LDE1LjNIMjc5Ljg4OGMtOC40NSwwLTE1LjMtNi44NS0xNS4zLTE1LjNWNTguNjRjMC04LjQ1LDYuODUtMTUuMywxNS4zLTE1LjNoMjYzLjY4OSAgICAgYzguNDUxLDAsMTUuMzAxLDYuODUsMTUuMzAxLDE1LjNWMTIzLjM5TDU1OC44NzgsMTIzLjM5eiIgZmlsbD0iIzAwMDAwMCIvPgoJCQk8cGF0aCBkPSJNNTQzLjU3NywxODIuMDNIMjc5Ljg4OGMtMzIuMzM0LDAtNTguNjQtMjYuMzA2LTU4LjY0LTU4LjY0VjU4LjY0YzAtMzIuMzM0LDI2LjMwNi01OC42NCw1OC42NC01OC42NGgyNjMuNjkxICAgICBjMTUuNjM5LDAsMzAuMzU3LDYuMTA2LDQxLjQ0NSwxNy4xOTRjMTEuMDg5LDExLjA4OCwxNy4xOTQsMjUuODA4LDE3LjE5Myw0MS40NDZ2NjQuNzUgICAgIEM2MDIuMjE4LDE1NS43MjUsNTc1LjkxMiwxODIuMDMsNTQzLjU3NywxODIuMDN6IE0yNzkuODg4LDFjLTMxLjc4MywwLTU3LjY0LDI1Ljg1Ny01Ny42NCw1Ny42NHY2NC43NSAgICAgYzAsMzEuNzgzLDI1Ljg1Nyw1Ny42NCw1Ny42NCw1Ny42NGgyNjMuNjg5YzMxLjc4MywwLDU3LjY0MS0yNS44NTcsNTcuNjQxLTU3LjY0VjU4LjY0YzAuMDAxLTE1LjM3MS02LjAwMS0yOS44MzktMTYuOS00MC43MzggICAgIEM1NzMuNDE5LDcuMDAyLDU1OC45NSwxLDU0My41NzksMUgyNzkuODg4eiBNNTQzLjU3OSwxMzkuMTlIMjc5Ljg4OGMtOC43MTIsMC0xNS44LTcuMDg4LTE1LjgtMTUuOFY1OC42NCAgICAgYzAtOC43MTIsNy4wODgtMTUuOCwxNS44LTE1LjhoMjYzLjY4OWM4LjcxMywwLDE1LjgwMSw3LjA4OCwxNS44MDEsMTUuOHY2NC43NUM1NTkuMzc4LDEzMi4xMDMsNTUyLjI5MSwxMzkuMTksNTQzLjU3OSwxMzkuMTl6ICAgICAgTTI3OS44ODgsNDMuODRjLTguMTYxLDAtMTQuOCw2LjYzOS0xNC44LDE0Ljh2NjQuNzVjMCw4LjE2MSw2LjYzOSwxNC44LDE0LjgsMTQuOGgyNjMuNjkxYzguMTYsMCwxNC43OTktNi42MzksMTQuNzk5LTE0LjggICAgIFY1OC42NGMwLTguMTYxLTYuNjQtMTQuOC0xNC44MDEtMTQuOEgyNzkuODg4eiIgZmlsbD0iIzAwMDAwMCIvPgoJCTwvZz4KCQk8Zz4KCQkJPHBhdGggZD0iTTU0My41NzksMjEyLjU4MkgyNzkuODg4Yy0zMi4wNTksMC01OC4xNCwyNi4wODItNTguMTQsNTguMTR2NjQuNzVjMCwzMi4wNTksMjYuMDgyLDU4LjE0MSw1OC4xNCw1OC4xNDFoMjYzLjY4OSAgICAgYzMyLjA1OSwwLDU4LjE0MS0yNi4wODIsNTguMTQxLTU4LjE0MXYtNjQuNzVDNjAxLjcyLDIzOC42NjMsNTc1LjYzOCwyMTIuNTgyLDU0My41NzksMjEyLjU4MnogTTU1OC44NzgsMzM1LjQ3MSAgICAgYzAsOC40NDktNi44NSwxNS4zMDEtMTUuMjk5LDE1LjMwMUgyNzkuODg4Yy04LjQ1LDAtMTUuMy02Ljg1Mi0xNS4zLTE1LjMwMXYtNjQuNzVjMC04LjQ1LDYuODUtMTUuMywxNS4zLTE1LjNoMjYzLjY4OSAgICAgYzguNDUxLDAsMTUuMzAxLDYuODUsMTUuMzAxLDE1LjNWMzM1LjQ3MUw1NTguODc4LDMzNS40NzF6IiBmaWxsPSIjMDAwMDAwIi8+CgkJCTxwYXRoIGQ9Ik01NDMuNTc3LDM5NC4xMTFIMjc5Ljg4OGMtMzIuMzM0LDAtNTguNjQtMjYuMzA2LTU4LjY0LTU4LjY0MXYtNjQuNzVjMC0zMi4zMzQsMjYuMzA2LTU4LjY0LDU4LjY0LTU4LjY0aDI2My42OTEgICAgIGMxNS42MzksMCwzMC4zNTcsNi4xMDYsNDEuNDQ1LDE3LjE5NGMxMS4wODksMTEuMDg4LDE3LjE5NCwyNS44MDcsMTcuMTkzLDQxLjQ0NXY2NC43NSAgICAgQzYwMi4yMTgsMzY3LjgwNiw1NzUuOTEyLDM5NC4xMTEsNTQzLjU3NywzOTQuMTExeiBNMjc5Ljg4OCwyMTMuMDgyYy0zMS43ODMsMC01Ny42NCwyNS44NTctNTcuNjQsNTcuNjR2NjQuNzUgICAgIGMwLDMxLjc4MywyNS44NTcsNTcuNjQxLDU3LjY0LDU3LjY0MWgyNjMuNjg5YzMxLjc4MywwLDU3LjY0MS0yNS44NTcsNTcuNjQxLTU3LjY0MXYtNjQuNzUgICAgIGMwLjAwMS0xNS4zNzEtNi4wMDEtMjkuODM5LTE2LjktNDAuNzM4Yy0xMC44OTgtMTAuODk5LTI1LjM2Ni0xNi45MDEtNDAuNzM4LTE2LjkwMUgyNzkuODg4eiBNNTQzLjU3OSwzNTEuMjcxSDI3OS44ODggICAgIGMtOC43MTIsMC0xNS44LTcuMDg4LTE1LjgtMTUuODAxdi02NC43NWMwLTguNzEyLDcuMDg4LTE1LjgsMTUuOC0xNS44aDI2My42ODljOC43MTMsMCwxNS44MDEsNy4wODgsMTUuODAxLDE1Ljh2NjQuNzUgICAgIEM1NTkuMzc4LDM0NC4xODQsNTUyLjI5MSwzNTEuMjcxLDU0My41NzksMzUxLjI3MXogTTI3OS44ODgsMjU1LjkyMWMtOC4xNjEsMC0xNC44LDYuNjM5LTE0LjgsMTQuOHY2NC43NSAgICAgYzAsOC4xNjEsNi42MzksMTQuODAxLDE0LjgsMTQuODAxaDI2My42OTFjOC4xNiwwLDE0Ljc5OS02LjY0LDE0Ljc5OS0xNC44MDF2LTY0Ljc1YzAtOC4xNjEtNi42NC0xNC44LTE0LjgwMS0xNC44SDI3OS44ODh6IiBmaWxsPSIjMDAwMDAwIi8+CgkJPC9nPgoJCTxnPgoJCQk8cGF0aCBkPSJNNTQzLjU3OSw0MjQuNjYySDI3OS44ODhjLTMyLjA1OSwwLTU4LjE0LDI2LjA4Mi01OC4xNCw1OC4xNDF2NjQuNzVjMCwzMi4wNTksMjYuMDgyLDU4LjEzOSw1OC4xNCw1OC4xMzloMjYzLjY4OSAgICAgYzMyLjA1OSwwLDU4LjE0MS0yNi4wOCw1OC4xNDEtNTguMTM5di02NC43NUM2MDEuNzIsNDUwLjc0NCw1NzUuNjM4LDQyNC42NjIsNTQzLjU3OSw0MjQuNjYyeiBNNTU4Ljg3OCw1NDcuNTUzICAgICBjMCw4LjQ0OS02Ljg1LDE1LjI5OS0xNS4yOTksMTUuMjk5SDI3OS44ODhjLTguNDUsMC0xNS4zLTYuODUtMTUuMy0xNS4yOTl2LTY0Ljc1YzAtOC40NTEsNi44NS0xNS4zMDEsMTUuMy0xNS4zMDFoMjYzLjY4OSAgICAgYzguNDUxLDAsMTUuMzAxLDYuODUsMTUuMzAxLDE1LjMwMVY1NDcuNTUzTDU1OC44NzgsNTQ3LjU1M3oiIGZpbGw9IiMwMDAwMDAiLz4KCQkJPHBhdGggZD0iTTU0My41NzcsNjA2LjE5MUgyNzkuODg4Yy0zMi4zMzQsMC01OC42NC0yNi4zMDYtNTguNjQtNTguNjM5di02NC43NWMwLTMyLjMzNSwyNi4zMDYtNTguNjQxLDU4LjY0LTU4LjY0MWgyNjMuNjkxICAgICBjMTUuNjM5LDAsMzAuMzU3LDYuMTA2LDQxLjQ0NSwxNy4xOTRjMTEuMDg5LDExLjA4OSwxNy4xOTQsMjUuODA4LDE3LjE5Myw0MS40NDZ2NjQuNzUgICAgIEM2MDIuMjE4LDU3OS44ODYsNTc1LjkxMiw2MDYuMTkxLDU0My41NzcsNjA2LjE5MXogTTI3OS44ODgsNDI1LjE2MmMtMzEuNzgzLDAtNTcuNjQsMjUuODU3LTU3LjY0LDU3LjY0MXY2NC43NSAgICAgYzAsMzEuNzgyLDI1Ljg1Nyw1Ny42MzksNTcuNjQsNTcuNjM5aDI2My42ODljMzEuNzgzLDAsNTcuNjQxLTI1Ljg1Niw1Ny42NDEtNTcuNjM5di02NC43NSAgICAgYzAuMDAxLTE1LjM3MS02LjAwMS0yOS44MzktMTYuOS00MC43MzhjLTEwLjg5OC0xMC44OTktMjUuMzY3LTE2LjkwMi00MC43MzgtMTYuOTAySDI3OS44ODh6IE01NDMuNTc5LDU2My4zNTJIMjc5Ljg4OCAgICAgYy04LjcxMiwwLTE1LjgtNy4wODctMTUuOC0xNS43OTl2LTY0Ljc1YzAtOC43MTMsNy4wODgtMTUuODAxLDE1LjgtMTUuODAxaDI2My42ODljOC43MTMsMCwxNS44MDEsNy4wODgsMTUuODAxLDE1LjgwMXY2NC43NSAgICAgQzU1OS4zNzgsNTU2LjI2NSw1NTIuMjkxLDU2My4zNTIsNTQzLjU3OSw1NjMuMzUyeiBNMjc5Ljg4OCw0NjguMDAyYy04LjE2MSwwLTE0LjgsNi42NC0xNC44LDE0LjgwMXY2NC43NSAgICAgYzAsOC4xNiw2LjYzOSwxNC43OTksMTQuOCwxNC43OTloMjYzLjY5MWM4LjE2LDAsMTQuNzk5LTYuNjM5LDE0Ljc5OS0xNC43OTl2LTY0Ljc1YzAtOC4xNjEtNi42NC0xNC44MDEtMTQuODAxLTE0LjgwMUgyNzkuODg4eiAgICAgIiBmaWxsPSIjMDAwMDAwIi8+CgkJPC9nPgoJPC9nPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+Cjwvc3ZnPgo=
  15. // ==/UserScript==
  16.  
  17.  
  18. ///////////////////////////////////
  19. // Впринципе развернуть можно кучу phpBB сайтов, но либо надо делать
  20. // окно настроек, либо кастомизацию в коде
  21. ///////////////////////////////////
  22.  
  23. // 23:08 05.05.2013 *.*.*.* заливка на us.org
  24. // 09:00 16.08.2014 0.0.0.1 Сброс версии
  25. // 09:03 16.08.2014 0.0.0.2 заливка на GitHUb + синхронизация с GitForge
  26. // 13:25 08.11.2014 0.0.0.3 Поправил хоткеи, теперь если находимся не в области постов, хоткеи не срабатывают (мешали вводу поискового запроса на форме)
  27. // 23:58 18.12.2014 0.0.0.4 Поправлена загрузка картинок (пропускались некоторые)
  28. // 2017 09 27 16 13 0.0.0.5 Добавлены Grant, т.к. обязательны, убрано название обрабатываемых сайтов, потом прикрутить редактор списка обрабатываемых хостов.
  29. // 2017 09 27 17 07 0.0.0.6 Pal Donate
  30. // 2017 09 27 17 16 0.0.0.7 Support url
  31. // 2017 09 27 17 28 0.0.0.8 +Icon
  32. // 2017 11 10 17 10 0.0.0.9 Переехала ссылка синхронизации в индивидуальную подпапку
  33. // 2017 11 15 19 05 0.0.0.10 Переехала ссылка главной страницы скрипта
  34. // 2017 11 15 19 09 0.0.0.11 @match => @include не разобрался в чём отличия
  35.  
  36.  
  37. var http = new XMLHttpRequest();
  38. var tempdoc = new DOMParser();
  39. var origtitle = document.title;
  40. var msgidx = -1;
  41. var msgs = Array();
  42. var cellidx = 1;
  43. var topics = Array();
  44. var hasscipts = 0;
  45.  
  46.  
  47.  
  48. var allrows = document.getElementsByTagName('tr');
  49.  
  50. for (var i = 0; i<allrows.length; i++)
  51. {
  52. // if (allrows[i].className.indexOf('hl-tr') >= 0)
  53. topics.push(allrows[i]);
  54. };
  55.  
  56. if (0 === topics.length)
  57. for (var i = 0; i<allrows.length; i++)
  58. {
  59. if (allrows[i].id.indexOf('tr-') == 0)
  60. topics.push(allrows[i]);
  61. };
  62.  
  63. //
  64.  
  65. if ('viewforum.php' === location.pathname.split('/')[2])
  66. {
  67. cellidx = 1;
  68. document.title = '['+ topics.length +'] ' +origtitle;
  69. }
  70. else
  71. if ('tracker.php' === location.pathname.split('/')[2])
  72. {
  73. cellidx = 3;
  74. document.title = '['+ topics.length +'] ' +origtitle;
  75. }
  76. else
  77. if ('search.php' === location.pathname.split('/')[2])
  78. {
  79. cellidx = 2;
  80. document.title = '['+ topics.length +'] ' +origtitle;
  81. }
  82. else
  83. if ('search_cse.php' === location.pathname.split('/')[2])
  84. {
  85. cellidx = 0;
  86. document.title = '['+ topics.length +'] ' +origtitle;
  87. }
  88. else
  89. return null;
  90.  
  91.  
  92.  
  93. function pause(ms)
  94. {
  95. return;
  96. var date = new Date();
  97. var curDate = null;
  98. do { curDate = new Date(); }
  99. while(curDate-date < ms);
  100. }
  101.  
  102. function getcontent(url)
  103. {
  104. try
  105. {
  106. http.open('GET', url+'&tmp='+Math.random(), false);
  107. http.send(null);
  108. }
  109. catch(e)
  110. { return null; };
  111.  
  112. if (http.status == 200)
  113. return tempdoc.parseFromString(http.responseText, 'text/html');
  114. return null;
  115. }
  116.  
  117. function makeImages(dom)
  118. {
  119. var spans = dom.getElementsByTagName('var');
  120. var mwidth = window.innerWidth * 0.8;
  121. for (var i = spans.length -1; i>=0; i--)
  122. if (spans[i].className.indexOf('postImg') >= 0)
  123. {
  124. var aimg = document.createElement('img');
  125. var src = spans[i].getAttribute('title');
  126.  
  127. var img = new Image();
  128. img.src = src;
  129. var divider = 1;
  130. if (img.width > mwidth )
  131. {
  132. divider = (img.width / mwidth);
  133. aimg.setAttribute('width', Math.round(img.width / divider));
  134. aimg.setAttribute('height', Math.round(img.height / divider));
  135. }
  136.  
  137. aimg.setAttribute('src', src);
  138. aimg.className = spans[i].className;
  139. spans[i].parentNode.insertBefore(aimg, spans[i]);
  140. spans[i].parentNode.removeChild(spans[i]);
  141. }
  142.  
  143. var spans = dom.getElementsByTagName('div');
  144. for (var i = spans.length -1; i>=0; i--)
  145. if (spans[i].className.indexOf('sp-') >= 0)
  146. {
  147. var imgs = spans[i].getElementsByTagName('img');
  148. if ((imgs.length > 0) && (imgs.length < 25))
  149. {
  150. spans[i].style.display = 'block';
  151. }
  152. }
  153.  
  154. var spans = dom.getElementsByTagName('a');
  155. for (var i = 0; i < spans.length; i++)
  156. spans[i].setAttribute('target', '_blank');
  157. }
  158.  
  159. function GetFirstPost(url)
  160. {
  161. var dom = getcontent(url);
  162. if (null == dom)
  163. return null;
  164.  
  165. if (hasscipts)
  166. {
  167. hasscipts = 1;
  168. var scripts = dom.getElementsByTagName('script');
  169. for (var i = 0; i < scripts.length; i++)
  170. document.documentElement.appendChild(scripts[i]);
  171. alert('scripts copied');
  172. }
  173.  
  174. var atable = dom.getElementById('topic_main');
  175. if (null == atable)
  176. return -1;
  177.  
  178. var amessages = atable.getElementsByTagName('td');
  179. for (var i = 0; i < amessages.length; i++)
  180. if (amessages[i].className == 'message td2')
  181. {
  182. makeImages(amessages[i]);
  183. return amessages[i];
  184. }
  185. return -1;
  186. }
  187.  
  188. var topicsprocessed = 0;
  189.  
  190. function findtable(element)
  191. {
  192. while (1)
  193. {
  194. if (element == null) return null;
  195. if (element == document.body) return null;
  196. if (element.nodeName.toLowerCase() == 'table') return element;
  197. element = element.parentNode;
  198. }
  199. }
  200.  
  201. function strip_tags( str )
  202. // Strip HTML and PHP tags from a string
  203. //
  204. // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
  205. {
  206. return str.replace(/<\/?[^>]+>/gi, '');
  207. }
  208.  
  209. for (var i = 0; i<topics.length; i++)
  210. {
  211. var textcell = topics[i].getElementsByTagName('td')[cellidx];
  212. if (!textcell)
  213. continue;
  214.  
  215. var lnks = textcell.getElementsByTagName('a');
  216. var lnk = lnks[0];
  217.  
  218. if (cellidx != 2)
  219. for (var n = 0; n < lnks.length; n++)
  220. if (lnks[n].className == 'torTopic bold tt-text') lnk = lnks[n];
  221.  
  222. if (cellidx == 2)
  223. for (var n = 0; n < lnks.length; n++)
  224. if (lnks[n].className == 'topictitle') lnk = lnks[n];
  225.  
  226. if (!lnk)
  227. continue;
  228.  
  229. if (String(lnk).indexOf('viewtopic.php') <0)
  230. continue;
  231.  
  232. textcell.setAttribute('lnk', lnk);
  233. textcell.setAttribute('ttl', strip_tags(lnk.innerHTML) );
  234.  
  235. document.title = '[...'+ (topicsprocessed +1) +'/' +topics.length +'] ' +lnk;
  236. textcell.scrollIntoView();
  237. var amsg = null;
  238. for (var n = 0; n< 5; n++)
  239. {
  240. amsg = GetFirstPost(lnk);
  241. if (-1 === amsg)
  242. break;
  243.  
  244. if (null != amsg)
  245. {
  246. msgs.push(textcell);
  247. textcell.innerHTML = amsg.innerHTML;
  248. break;
  249. }
  250. // alert(lnk +' : no page');
  251. document.title = '[$..'+ (n +1) +'] ' +lnk;
  252. }
  253. // if (-1 === amsg) alert(lnk +' : no first post content');
  254.  
  255. topicsprocessed++;
  256. document.title = '['+ topicsprocessed +'/' +topics.length +'] ' +origtitle;
  257. }
  258.  
  259. if (msgs.length > 0)
  260. {
  261. var atbl = findtable(msgs[0]);
  262. atbl.innerHTML = '';
  263. for (var i = 0; i < msgs.length; i++)
  264. {
  265. var tr = document.createElement('tr');
  266. tr.appendChild(msgs[i]);
  267. atbl.appendChild(tr);
  268. }
  269. msgs[0].scrollIntoView();
  270. }
  271.  
  272. function setDocTitle(idx)
  273. {
  274. document.title = '[>'+ (1 +idx)+'/' +msgs.length +'] ' +msgs[idx].getAttribute('ttl');
  275. }
  276.  
  277.  
  278.  
  279. function keypresshandler(e)
  280. {
  281. if (((e.charCode == 106)&&(msgidx != -1)) || (e.keyCode == 37))
  282. {
  283. msgidx++;
  284. if (msgidx >= msgs.length) msgidx = 0;
  285. msgs[msgidx].scrollIntoView();
  286. return false;
  287. }
  288.  
  289. if (((e.charCode == 107)&&(msgidx != -1)) || (e.keyCode == 39))
  290. {
  291. msgidx--;
  292. if (msgidx < 0) msgidx = msgs.length -1;
  293. msgs[msgidx].scrollIntoView();
  294. return false;
  295. }
  296.  
  297. if ((e.charCode == 32)&&(msgidx != -1))
  298. {
  299. window.open(msgs[msgidx].getAttribute('lnk'), '_blank');
  300. return false;
  301. }
  302. if (((e.charCode == 108)&&(msgidx != -1)) || (e.keyCode == 45))
  303. {
  304. window.sidebar.addPanel(msgs[msgidx].getAttribute('ttl'), msgs[msgidx].getAttribute('lnk'), '');
  305. return false;
  306. }
  307.  
  308. // alert(e.charCode +' '+e.keyCode);
  309. }
  310.  
  311. function scrollhandler(e)
  312. {
  313. for (var i = 0; i < msgs.length; i++)
  314. if ((msgs[i].getBoundingClientRect().top < 1) && (msgs[i].getBoundingClientRect().bottom >= 1))
  315. {
  316. setDocTitle(i);
  317. msgidx = i;
  318. return false;
  319. }
  320. msgidx = -1;
  321. document.title = origtitle;
  322. }
  323.  
  324. document.title = origtitle;
  325. window.onkeypress = keypresshandler;
  326. window.onscroll = scrollhandler;
  327. window.onmousedown = keypresshandler;

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址