Jump to content

Recommended Posts

Posted

how file StringReplace
and read file String Len or file size?

#include <File.au3>
#include <Array.au3>
#include <Inet.au3>
#include <String.au3>

Global $readlist = FileRead(@ScriptDir & "\sitelist.txt")

_firstdownloaded()

Func _firstdownloaded()
    Local $olddir = @ScriptDir & '\old\'
    Local $sitelisturl = StringSplit(StringStripCR($readlist), @LF)
        For $i = 1 To UBound($sitelisturl) - 1
            $sitenamestr = StringRegExp($sitelisturl[$i], 'https?://(?:www.)?([^.]+)', 3)
            $sitenames = $sitenamestr[0]
            ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sitenames = ' & $sitenames & @CRLF & '>Error code: ' & @error & @CRLF)
            $downloadtemp = @ScriptDir & '\old\' & $sitenames & '.xml'
            If FileExists(@ScriptDir & "\old" & $downloadtemp) Then
                $inetgetsites = InetGet($sitelisturl[$i], $downloadtemp, 1, 1)
            Else
                DirCreate(@ScriptDir & "\" & "old")
                $inetgetsites = InetGet($sitelisturl[$i], $downloadtemp, 1, 1)
            EndIf
Local $ext = $sitenames & '.xml'
Local $array = _FileListToArray($olddir, $ext, $FLTA_FILES)
 For $i = 1 To UBound($array) - 1
    $openFile = FileOpen($olddir & $array[$i], 1)
    $sFileRead = FileRead($openFile)
    $olderLine = StringLen($sFileRead)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $olderLine = ' & $olderLine & @CRLF & '>Error code: ' & @error & @CRLF)
    If StringInStr($sFileRead, "<!--") Then
    $ReadString = StringReplace($sFileRead,@CRLF,@LF)
    $htmlcommentDelete = StringRegExpReplace($ReadString[$i], '(?s)<!--.*?-->', "")
    $ReplaceString = StringReplace($htmlcommentDelete,@LF,@CRLF)
    $newerLine = StringLen($sFileRead)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $newerLine = ' & $newerLine & @CRLF & '>Error code: ' & @error & @CRLF)
    FileClose($openFile[$i])
EndIf
Next
    Next
EndFunc

 

Posted

@UEZ @mikell @mLipok  Is it true my code?

#include <File.au3>
#include <Array.au3>
#include <Inet.au3>
#include <String.au3>
Global $aTime = 5
Global $readlist = FileRead(@ScriptDir & "\sitelist.txt")

_firstdownloaded()
_newtest()

Func _newtest()
              While 1
        $ChangetrackingDir = @ScriptDir & '\Changetracking\'
        $olddir = @ScriptDir & '\old\'
        $newdir = @ScriptDir & '\new\'
        Local $sitelisturl = StringSplit(StringStripCR($readlist), @LF)
        Local $olderinfo[UBound($sitelisturl) + 1][2]
        Local $newerinfo[UBound($sitelisturl) + 1][2]
         For $i = 1 To UBound($sitelisturl) - 1
        $sitenamestr = StringRegExp($sitelisturl[$i], 'https?://(?:www.)?([^.]+)', 3)
        $old = $olddir & $sitenamestr[0] & '.xml'
        $new = $newdir & $sitenamestr[0] & '.xml'
            If (FileExists($olddir) And FileExists($newdir)) Then
                $inetgetsitesold = InetGet($sitelisturl[$i], $old, 1, 1)
            Else
                DirCreate($olddir)
                DirCreate($newdir)
                $inetgetsitesold = InetGet($sitelisturl[$i], $old, 1, 1)
            EndIf
            $inetgetsitesnew = InetGet($sitelisturl[$i], $new, 1, 1)
            Sleep($aTime * 1000)
            $olderinfo[$i][1] = StringRegExpReplace(FileRead($old), '(?s)<!--.*?-->', "")
            $newerinfo[$i][1] = StringRegExpReplace(FileRead($new), '(?s)<!--.*?-->', "")
            $olderLine = StringLen($olderinfo[$i][1])
            $newerLine = StringLen($newerinfo[$i][1])
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') :  $olderLine = ' &  $olderLine & " ==> " & $sitenamestr[0] & @CRLF & '>Error code: ' & @error & @CRLF)
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') :  $newerLine = ' &  $newerLine & " ==> " & $sitenamestr[0] & @CRLF & '>Error code: ' & @error & @CRLF)

If $olderLine <> $newerLine Then
$aUrlread = BinaryToString(InetRead($sitelisturl[$i], 0), 4)
$aUrlextract = _StringBetween($aUrlread, '<loc>','</loc>')
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') :  $aUrlextract[0] = ' &  $aUrlextract[0] & " ==> " & $sitenamestr[0] & @CRLF & '>Error code: ' & @error & @CRLF)
$ext = $sitenamestr[0] & '.xml'
$array = _FileListToArray($newdir, $ext, $FLTA_FILES)
$count = $new
For $i = 1 To $array[0]
    $result = FileCopy($newdir & "\" & $array[$i], $ChangetrackingDir, $FC_OVERWRITE)
   If $result = 1 Then $count +=1
Next
    EndIf
         Next
          WEnd
EndFunc

Func _firstdownloaded()
    Local $sitelisturl = StringSplit(StringStripCR($readlist), @LF)
        For $i = 1 To UBound($sitelisturl) - 1
            $sitenamestr = StringRegExp($sitelisturl[$i], 'https?://(?:www.)?([^.]+)', 3)
            $sitenames = $sitenamestr[0]
            ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sitenames = ' & $sitenames & @CRLF & '>Error code: ' & @error & @CRLF)
            $downloadtemp = @ScriptDir & '\old\' & $sitenames & '.xml'
            If FileExists(@ScriptDir & "\old" & $downloadtemp) Then
                $inetgetsites = InetGet($sitelisturl[$i], $downloadtemp, 1, 1)
            Else
                DirCreate(@ScriptDir & "\" & "old")
                $inetgetsites = InetGet($sitelisturl[$i], $downloadtemp, 1, 1)
            EndIf
        Next
EndFunc

 

Posted

This look very similar to one of yours previous post.

 

Signature beginning:
Please remember: "AutoIt"..... *  Wondering who uses AutoIt and what it can be used for ? * Forum Rules *
ADO.au3 UDF * POP3.au3 UDF * XML.au3 UDF * IE on Windows 11 * How to ask ChatGPT for AutoIt Codefor other useful stuff click the following button:

  Reveal hidden contents

Signature last update: 2023-04-24

Posted (edited)

Firstly the sitelist.txt looks like these lines here:

https://wmtrseo.wordpress.com/sitemap.xml
http://autoitscripttr.blogspot.com.tr/sitemap.xml
http://youtubertr.com/sitemap.xml

Secondly the question is how to compare the XML files in folder old/new by excluding the string <!--* --> and thus to calculate the length.

  On 10/11/2016 at 7:58 PM, youtuber said:
            $olderinfo[$i][1] = StringRegExpReplace(FileRead($old), '(?s)<!--.*?-->', "")
            $newerinfo[$i][1] = StringRegExpReplace(FileRead($new), '(?s)<!--.*?-->', "")
            $olderLine = StringLen($olderinfo[$i][1])
            $newerLine = StringLen($newerinfo[$i][1])
Expand  

 

Edited by UEZ

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Posted

You are overwriting both XML files in old / new permanetly and thus they are always equal.

 

Try this:

#include <File.au3>
#include <Array.au3>
#include <Inet.au3>
#include <String.au3>
Global $aTime = 5
Global $readlist = FileRead(@ScriptDir & "\sitelist.txt")

_firstdownloaded()
_newtest()

Func _newtest()
    While 1
        $ChangetrackingDir = @ScriptDir & '\Changetracking\'
        $olddir = @ScriptDir & '\old\'
        $newdir = @ScriptDir & '\new\'
        Local $sitelisturl = StringSplit(StringStripCR($readlist), @LF)
        Local $olderinfo[UBound($sitelisturl) + 1][2]
        Local $newerinfo[UBound($sitelisturl) + 1][2]
        For $i = 1 To UBound($sitelisturl) - 1
            $sitenamestr = StringRegExp($sitelisturl[$i], 'https?://(?:www.)?([^.]+)', 3)
            $old = $olddir & $sitenamestr[0] & '.xml'
            $new = $newdir & $sitenamestr[0] & '.xml'
;~          If (FileExists($olddir) And FileExists($newdir)) Then
;~              $inetgetsitesold = InetGet($sitelisturl[$i], $old, 1, 1)
;~          Else
;~              DirCreate($olddir)
;~              DirCreate($newdir)
;~              $inetgetsitesold = InetGet($sitelisturl[$i], $old, 1, 1)
;~          EndIf
            $inetgetsitesnew = InetGet($sitelisturl[$i], $new, 1, 1)
            Sleep($aTime * 1000)
            $olderinfo[$i][1] = StringRegExpReplace(FileRead($old), '(?s)<!--.*?-->', "")
            $newerinfo[$i][1] = StringRegExpReplace(FileRead($new), '(?s)<!--.*?-->', "")
            $olderLine = StringLen($olderinfo[$i][1])
            ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $olderLine = ' & $olderLine & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
            $newerLine = StringLen($newerinfo[$i][1])
            ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $newerLine = ' & $newerLine & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console

            If $olderLine <> $newerLine Then
                $aUrlread = BinaryToString(InetRead($sitelisturl[$i], 0), 4)
                $aUrlextract = _StringBetween($aUrlread, '<loc>', '</loc>')
                ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') :  $aUrlextract[0] = ' & $aUrlextract[0] & " ==> " & $sitenamestr[0] & @CRLF & '>Error code: ' & @error & @CRLF)
                $ext = $sitenamestr[0] & '.xml'
                $array = _FileListToArray($newdir, $ext, $FLTA_FILES)
                $count = $new
                For $i = 1 To $array[0]
                    $result = FileCopy($newdir & "\" & $array[$i], $ChangetrackingDir, $FC_OVERWRITE)
                    If $result = 1 Then $count += 1
                Next
            EndIf
        Next
    WEnd
EndFunc   ;==>_newtest

Func _firstdownloaded()
    Local $sitelisturl = StringSplit(StringStripCR($readlist), @LF)
    For $i = 1 To UBound($sitelisturl) - 1
        $sitenamestr = StringRegExp($sitelisturl[$i], 'https?://(?:www.)?([^.]+)', 3)
        $sitenames = $sitenamestr[0]
        ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sitenames = ' & $sitenames & @CRLF & '>Error code: ' & @error & @CRLF)
        $downloadtemp = @ScriptDir & '\old\' & $sitenames & '.xml'
        If FileExists(@ScriptDir & "\old" & $downloadtemp) Then
            $inetgetsites = InetGet($sitelisturl[$i], $downloadtemp, 1, 1)
        Else
            DirCreate(@ScriptDir & "\" & "old")
            $inetgetsites = InetGet($sitelisturl[$i], $downloadtemp, 1, 1)
        EndIf
    Next
EndFunc   ;==>_firstdownloaded

 

Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Posted

If only one char changes, both StringLen might be the same
Why don't you directly compare the strings ?

If not ($olderinfo[$i][1] == $newerinfo[$i][1]) Then ...
; or use <> for case insensitivity

 

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...