Seiten eines Forum-Threads zusammenfügen

Top  Previous  Next

Dieses Beispiel zeigt, wie Sie automatisch zur nächsten Seite in einem Forum-Thread folgen können, sobald diese verfügbar ist.

 

Die Links zu den vorhergehenden bzw. nächsten Seiten werden dabei typischerweise wie folgt dargestellt:

  Erste ... 131415 ... Letzte  

 

Wenn wir zB. aktuell auf Seite 14 sind und in dieser Seite ein Link zu Seite 15 bereits existiert, dann soll dieses Plugin diese neue URL zurückliefern, sodass WebSite-Watcher diese neue Seite prüfen und mit der vorhergehenden Seite zusammenfügen kann.

 

Die Links dieser Seiten haben dabei folgendes Format:

  http://domain.com/forum/topic123x-14.html

wobei 14 die Seiten-Nummer angibt. Die URL der ersten Seite enthält keine Seiten-Nummer, also nur topic123x.html

 

Jedes Posting in diesem Forum hat eine eigene Posting-Nummer, die zB. als # 12 für Posting Nummer 12 dargestellt wird. Dazu werden wir einen Überwachen-Filter definieren der nur diese Nummern überwacht, dadurch erhalten wir keine fälschliche Update-Meldung falls nur ein anderer Inhalt ohne neues Posting geändert wird (wie zB. eine aktuelle Zeit oder Forum-Statistiken).

 

Sub Wsw_BeforeCheck(Handle) 

   ' Set a watch filter to monitor only posting numbers

   ' so we will only get an update notification if a new posting number appears

   Bookmark_SetProperty(Handle, "watch_filter", "regex(#\s*\d+)")

   Bookmark_SetProperty(Handle, "filter_ignore_removed_content", "1")

End Sub

 

'*******************************************************************************

 

Sub Wsw_MergePages(Handle, sMemWeb, nPageNumber, sUrl, ByRef sNewUrl, ByRef sNewPostData, ByRef bChangeBookmarkUrl, ByRef sStatusMessage, ByRef iStatusCode)

   Dim nPageParamNumber, sFilename

   

   ' Limit the number of merged pages

   If nPageNumber > 3 Then

      Return

   End If

   

   ' Extract page number

   sFilename = GetFirstRegexMatch(sUrl, "index\d+\.html")

   If sFilename = "" Then

      nPageParamNumber = 2

   Else

      sUrl = ReplaceText(sUrl, sFilename, "")

      nPageParamNumber = CInt(ExtractDigits(sFilename)) + 1

   End If

   sFilename = "index" + CStr(nPageParamNumber) + ".html"

   

   ' Generate possible next page

   If Right(sUrl, 1) <> "/" Then

      sUrl = sUrl + "/"

   End If

   sUrl = sUrl + sFilename

   

   ' check, if the next page is already available in the page source

   If Pos(sUrl, sMemWeb) > 0 Then

      ' the next page already exists

      sStatusMessage = "New page via Merge-Plugin"

      sNewUrl = sUrl 'return new URL

      bChangeBookmarkUrl = True 'change URL in bookmark properties

   End If

End Sub

 

 

Falls ein Forum-Thread die Seiten-Nummer mittels eines Parameters in der URL definiert (zum Beispiel &page=13),dann können Sie folgendes Script als Grundlage verwenden:

 

Sub Wsw_BeforeCheck(Handle)

   ' optional watch filter if each post has a posting number, eg. #14

   Bookmark_SetProperty(Handle, "watch_filter", "regex(#\s*\d+)")

   Bookmark_SetProperty(Handle, "filter_ignore_removed_content", "1")

End Sub

 

'*******************************************************************************

 

Sub Wsw_MergePages(Handle, sMemWeb, nPageNumber, sUrl, ByRef sNewUrl, ByRef sNewPostData, ByRef bChangeBookmarkUrl, ByRef sStatusMessage, ByRef iStatusCode)

   

   Dim nPageParamNumber, sPageParam

   

   ' Limit the number of merged pages

   If nPageNumber > 5 Then

      Return

   End If

   

   ' Extract page number

   sPageParam = GetFirstRegexMatch(sUrl, "\&page=\d+")

   If sPageParam = "" Then

      ' first page, continue with page 2

      sUrl = sUrl + "&page=2"

   Else 

      ' increase page number

      nPageParamNumber = CInt(ExtractDigits(sPageParam)) + 1

      sUrl = ReplaceText(sUrl, sPageParam, "&page=" + CStr(nPageParamNumber))

   End If

   

   ' check, if the next page is already available in the page source

   If Pos(sUrl, sMemWeb) > 0 Then

      ' the next page already exists

      sNewUrl = sUrl

      bChangeBookmarkUrl = True ' change bookmark URL to latest merged URL

      sStatusMessage = "New page via FOLLOW-Plugin"

   End If

   

End Sub