Benutzer:TextsucheBot/Code/aktuell

aus Memory Alpha, der freien deutschen Star-Trek-Datenbank
Spring zu: Navigation, suche
@echo off
set VERSION=1.0.3
:: kombiniere Namensraum und Kategorie / Suchstring in Seitentitel / Abfragen ob Browser & Ende / -ref deaktiviert / header
:: Dieses Programm steht unter der CC-BY-NC-Lizenz 2.0

:: Erstelle Zeitstempel
    IF "%DATE:~0,1%" GTR "3" (
        SET DATETIME=%DATE:~9,4%-%DATE:~6,2%-%DATE:~3,2%_%TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2%
    ) ELSE (
    :: ASSUMES SHORTDATE DDxMMxYYYY
        SET DATETIME=%DATE:~6,4%-%DATE:~3,2%-%DATE:~0,2%_%TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2%
        )
    :: CORRECT FOR HOURS BELOW 10
    IF %DATETIME:~8,2% LSS 10 SET DATETIME=%DATETIME:~0,8%0%DATETIME:~9,5%
    :: ECHO %DATETIME%
title=TextsucheBot (Version %VERSION%)
mode con lines=30 cols=80
:home
call :header
echo [1] Suche in einer Kategorie
echo [2] Suche in einer Kategorie und all ihren Unterkategorien
echo [3] Suche in einem Namensraum (ACHTUNG: ggf. zeitintensiv!)
echo [4] Suche in allen Seiten, die auf eine bestimmte Seiten zeigen
echo [5] Suche in allen Seiten, auf die eine bestimmte Seite zeigt
echo [6] Rufe alle bisherigen Suchergebnisse auf
echo [7] Stelle eine Frage zu diesem Tool
echo [8] Info
echo [9] Beenden
echo.
:: Erfrage Auswahl 
set /p asw="Bitte Auswahl eingeben: "

if %asw%==1 goto Suche_cat
if %asw%==2 goto Suche_catr
if %asw%==3 goto Suche_ns
if %asw%==4 goto Suche_ref
if %asw%==5 goto Suche_links
if %asw%==6 goto Suchergebnisse
if %asw%==7 goto Help
if %asw%==8 goto Info
if %asw%==9 goto ende
cls
echo.
echo Falsche Eingabe. Bitte gib eine Zahl zwischen 1 und 9 ein.
echo.
set /p ENDE=Drcke "Eingabe" um zum Startbildschirm zu gehen...
goto home

:: ========== Suche Kategorie ==========
:Suche_cat
:: Erfrage die zu durchsuchende Kategorie
call :header
set /p KATEGORIE="Gib eine Kategorie ein, in der gesucht werden soll. Z.B. "Bild (Person)" (ohne Anfhrungszeichen): "
set NS-ERR=0
:Suche_cat_setNS
call :header
echo -^> Es wird gesucht in der Kategorie: %KATEGORIE%
:: Erfrage NAMENSRAUM
echo.
echo Soll die Suche auf einen bestimmten Namensraum begrenzt werden? Gib einen Namensraum ein, auf den die Suche eingeschr„nkt werden soll:
echo.
echo [0] ALLE Namensr„ume
echo.            
echo [1] Artikelnamensraum           [6] Vorlage
echo [2] Datei                       [7] Hilfe
echo [3] Benutzer                    [8] Kategorie
echo [4] Memory Alpha                [9] Portal
echo [5] MediaWiki                   [10] Forum
echo.
if %NS-ERR%==0 goto Suche_cat_setNS_ERR1
echo Falsche Eingabe. Bitte gib eine Zahl zwischen 0 und 10 ein.
echo.
:Suche_cat_setNS_ERR1
set /p ns="Bitte Auswahl eingeben: "
cls
if %ns% LEQ 10 goto Suche_cat_setNS_ERR
set NS-ERR=1
goto Suche_cat_setNS
:Suche_cat_setNS_ERR
call :header
echo -^> Es wird gesucht in der Kategorie: %KATEGORIE%
if %ns%==1 set NAMENSRAUM=0
if %ns%==2 set NAMENSRAUM=6
if %ns%==3 set NAMENSRAUM=2
if %ns%==4 set NAMENSRAUM=4
if %ns%==5 set NAMENSRAUM=8
if %ns%==6 set NAMENSRAUM=10
if %ns%==7 set NAMENSRAUM=12
if %ns%==8 set NAMENSRAUM=14
if %ns%==9 set NAMENSRAUM=102
if %ns%==10 set NAMENSRAUM=110
if %ns%==1 set NAMENSRAUMNAME=Artikelnamensraum
if %ns%==2 set NAMENSRAUMNAME=Datei
if %ns%==3 set NAMENSRAUMNAME=Benutzer
if %ns%==4 set NAMENSRAUMNAME=Memory_Alpha
if %ns%==5 set NAMENSRAUMNAME=MediaWiki
if %ns%==6 set NAMENSRAUMNAME=Vorlage
if %ns%==7 set NAMENSRAUMNAME=Hilfe
if %ns%==8 set NAMENSRAUMNAME=Kategorie
if %ns%==9 set NAMENSRAUMNAME=Portal
if %ns%==10 set NAMENSRAUMNAME=Forum
echo -^> Es wird gesucht im Namensraum:    %NAMENSRAUMNAME% (NS %NAMENSRAUM%)
echo.
:: Setz Namen die Zieldatei für die Suchergebnisse
set DATEINAME=%DATETIME%
echo.
:: Erfrage den Such-String
set /p SUCHSTRING="Gib den Text ein, nach dem gesucht werden soll. Z.B. "Name=Data" (ohne Anfhrungszeichen): "
call :header
echo -^> Es wird gesucht in der Kategorie: %KATEGORIE%
echo -^> Es wird gesucht im Namensraum:    %NAMENSRAUMNAME% (NS %NAMENSRAUM%)
echo -^> Es wird gesucht nach dem String:  %SUCHSTRING%

if %ns%==0 goto Suche_cat_AllNS
echo.
:: Starte Suche in NS
prg\pp.exe prg\pwb\find.py -cat:"%KATEGORIE%" -dateiname:"%DATEINAME%.txt" "%SUCHSTRING%" "###" -ns:%NAMENSRAUM%
goto Suche_cat_exec
:Suche_cat_AllNS
:: Starte Suche in allen NS
prg\pp.exe prg\pwb\find.py -cat:"%KATEGORIE%" -dateiname:"%DATEINAME%.txt" "%SUCHSTRING%" "###"
goto Suche_cat_exec

:Suche_cat_exec
echo Es wurde die tempor„re Datei %DATEINAME%.txt erstellt.
echo.

::Ersetze Sonderzeichen in SUCHSTRING
set REPSTRING=%SUCHSTRING%
call :replace
set SUCHSTRING=%REPSTRING%

:: Schreibe %ZIELSEITE% in "findupload-title.txt"
echo '''User:TextsucheBot/Suchergebnis/%DATETIME%_%SUCHSTRING%''' > prg\pwb\findupload-title.txt
echo Dies sind die Seiten/Dateien in der [[:Kategorie:%KATEGORIE%]], die den String ^<code^>^<nowiki^>%SUCHSTRING%^</nowiki^>^</code^> enthalten:^<p^> > prg\pwb\findupload-head.txt

echo %DATETIME%: "%SUCHSTRING%" -cat:"%KATEGORIE%" >> TextsucheBot.log
goto processing

:: ========== Suche Unterkategorie ==========
:Suche_catr
:: Erfrage die zu durchsuchende Kategorie
call :header
set /p KATEGORIE="Gib eine Kategorie ein, in der gesucht werden soll. Z.B. "Bild (Person)" (ohne Anfhrungszeichen): "
set NS-ERR=0
:Suche_catr_setNS
call :header
echo -^> Es wird gesucht in der Kategorie: %KATEGORIE% und deren Unterkategorien
:: Erfrage NAMENSRAUM
echo.
echo Soll die Suche auf einen bestimmten Namensraum begrenzt werden? Gib einen Namensraum ein, auf den die Suche eingeschr„nkt werden soll:
echo.
echo [0] ALLE Namensr„ume
echo.            
echo [1] Artikelnamensraum           [6] Vorlage
echo [2] Datei                       [7] Hilfe
echo [3] Benutzer                    [8] Kategorie
echo [4] Memory Alpha                [9] Portal
echo [5] MediaWiki                   [10] Forum
echo.
if %NS-ERR%==0 goto Suche_catr_setNS_ERR1
echo Falsche Eingabe. Bitte gib eine Zahl zwischen 0 und 10 ein.
echo.
:Suche_catr_setNS_ERR1
set /p ns="Bitte Auswahl eingeben: "
cls
if %ns% LEQ 10 goto Suche_catr_setNS_ERR
set NS-ERR=1
goto Suche_catr_setNS
:Suche_catr_setNS_ERR
call :header
echo -^> Es wird gesucht in der Kategorie: %KATEGORIE% und deren Unterkategorien
if %ns%==1 set NAMENSRAUM=0
if %ns%==2 set NAMENSRAUM=6
if %ns%==3 set NAMENSRAUM=2
if %ns%==4 set NAMENSRAUM=4
if %ns%==5 set NAMENSRAUM=8
if %ns%==6 set NAMENSRAUM=10
if %ns%==7 set NAMENSRAUM=12
if %ns%==8 set NAMENSRAUM=14
if %ns%==9 set NAMENSRAUM=102
if %ns%==10 set NAMENSRAUM=110
if %ns%==1 set NAMENSRAUMNAME=Artikelnamensraum
if %ns%==2 set NAMENSRAUMNAME=Datei
if %ns%==3 set NAMENSRAUMNAME=Benutzer
if %ns%==4 set NAMENSRAUMNAME=Memory_Alpha
if %ns%==5 set NAMENSRAUMNAME=MediaWiki
if %ns%==6 set NAMENSRAUMNAME=Vorlage
if %ns%==7 set NAMENSRAUMNAME=Hilfe
if %ns%==8 set NAMENSRAUMNAME=Kategorie
if %ns%==9 set NAMENSRAUMNAME=Portal
if %ns%==10 set NAMENSRAUMNAME=Forum
echo -^> Es wird gesucht im Namensraum:    %NAMENSRAUMNAME% (NS %NAMENSRAUM%)
echo.
:: Setz Namen die Zieldatei für die Suchergebnisse
set DATEINAME=%DATETIME%
echo.
:: Erfrage den Such-String
set /p SUCHSTRING="Gib den Text ein, nach dem gesucht werden soll. Z.B. "Name=Data" (ohne Anfhrungszeichen): "
call :header
echo -^> Es wird gesucht in der Kategorie: %KATEGORIE% und deren Unterkategorien
echo -^> Es wird gesucht im Namensraum:    %NAMENSRAUMNAME% (NS %NAMENSRAUM%)
echo -^> Es wird gesucht nach dem String:  %SUCHSTRING%

if %ns%==0 goto Suche_catr_AllNS
echo.
:: Starte Suche in NS
prg\pp.exe prg\pwb\find.py -catr:"%KATEGORIE%" -dateiname:"%DATEINAME%.txt" "%SUCHSTRING%" "###" -ns:%NAMENSRAUM%
goto Suche_catr_exec
:Suche_catr_AllNS
:: Starte Suche in allen NS
prg\pp.exe prg\pwb\find.py -catr:"%KATEGORIE%" -dateiname:"%DATEINAME%.txt" "%SUCHSTRING%" "###"
goto Suche_catr_exec

:Suche_catr_exec
echo Es wurde die tempor„re Datei %DATEINAME%.txt erstellt.
echo.

::Ersetze Sonderzeichen in SUCHSTRING
set REPSTRING=%SUCHSTRING%
call prg\rep.bat
set SUCHSTRING=%REPSTRING%

:: Schreibe %ZIELSEITE% in "findupload-title.txt"
echo '''User:TextsucheBot/Suchergebnis/%DATETIME%_%SUCHSTRING%''' > prg\pwb\findupload-title.txt
echo Dies sind die Seiten/Dateien in der [[:Kategorie:%KATEGORIE%]] und deren Unterkategorien, die den String ^<code^>^<nowiki^>%SUCHSTRING%^</nowiki^>^</code^> enthalten:^<p^> > prg\pwb\findupload-head.txt

echo %DATETIME%: "%SUCHSTRING%" -catr:"%KATEGORIE%" >> TextsucheBot.log
goto processing

:: ========== Suche Namensraum ==========
:Suche_ns
:: Erfrage die zu durchsuchende Kategorie
call :header
echo Gib einen Namensraum ein, der durchsucht werden soll:
echo.
echo [1] Artikelnamensraum
echo [2] Datei
echo [3] Benutzer
echo [4] Memory Alpha
echo [5] MediaWiki
echo [6] Vorlage
echo [7] Hilfe
echo [8] Kategorie
echo [9] Portal
echo [10] Forum
echo.
set /p ns="Bitte Auswahl eingeben: "
if %ns%==1 set NAMENSRAUM=0
if %ns%==2 set NAMENSRAUM=6
if %ns%==3 set NAMENSRAUM=2
if %ns%==4 set NAMENSRAUM=4
if %ns%==5 set NAMENSRAUM=8
if %ns%==6 set NAMENSRAUM=10
if %ns%==7 set NAMENSRAUM=12
if %ns%==8 set NAMENSRAUM=14
if %ns%==9 set NAMENSRAUM=102
if %ns%==10 set NAMENSRAUM=110
if %ns%==1 set NAMENSRAUMNAME=Artikelnamensraum:!
if %ns%==2 set NAMENSRAUMNAME=Datei:!
if %ns%==3 set NAMENSRAUMNAME=Benutzer:!
if %ns%==4 set NAMENSRAUMNAME=Memory_Alpha:!
if %ns%==5 set NAMENSRAUMNAME=MediaWiki:!
if %ns%==6 set NAMENSRAUMNAME=Vorlage:!
if %ns%==7 set NAMENSRAUMNAME=Hilfe:!
if %ns%==8 set NAMENSRAUMNAME=Kategorie:!
if %ns%==9 set NAMENSRAUMNAME=Portal:!
if %ns%==10 set NAMENSRAUMNAME=Forum:!
call :header
echo Es wird gesucht im Namensraum: %NAMENSRAUMNAME%.

:: Setze Namen die Zieldatei fuer die Suchergebnisse
set DATEINAME=%DATETIME%

:: Erfrage den Such-String
echo.
set /p SUCHSTRING="Gib den Text ein, nach dem gesucht werden soll. Z.B. "Name=Data" (ohne Anfhrungszeichen): "

:: Starte Suche
prg\pp.exe prg\pwb\find.py -start:%NAMENSRAUMNAME% -dateiname:"%DATEINAME%.txt" "%SUCHSTRING%" "###"
echo.
echo Es wurde die tempor„re Datei %DATEINAME%.txt erstellt.

::Ersetze Sonderzeichen in SUCHSTRING
set REPSTRING=%SUCHSTRING%
call prg\rep.bat
set SUCHSTRING=%REPSTRING%

:: Schreibe %ZIELSEITE% in "findupload-title.txt"
echo '''User:TextsucheBot/Suchergebnis/%DATETIME%_%SUCHSTRING%''' > prg\pwb\findupload-title.txt
echo Dies sind die Seiten/Dateien im Namensraum %NAMENSRAUMNAME%, die den String ^<code^>^<nowiki^>%SUCHSTRING%^</nowiki^>^</code^> enthalten:^<p^> > prg\pwb\findupload-head.txt

echo %DATETIME%: "%SUCHSTRING%" -ns:%NAMENSRAUM% >> TextsucheBot.log
goto processing

:: ========== Suche Ref ==========
:Suche_ref
echo.
echo Diese Funktion ist derzeit nicht verfgbar.
set /p ENDE=Drcke "Eingabe" um zum Startbildschirm zurckzukehren.
goto home

:: Erfrage die Seite, auf die verlinkt wird
call :header
set /p REF-ZIEL="Gib einen Seitentitel ein. Es werden dann alle Seiten durchsucht, die auf diese Seite verlinken. Z.B. "Spock (Spiegeluniversum)" (ohne Anfhrungszeichen): "
cls
echo.
echo Es werden die Seiten durchsucht, die auf %REF-ZIEL% verlinken.

:: Setz Namen die Zieldatei fuer die Suchergebnisse
set DATEINAME=%DATETIME%

:: Erfrage den Such-String
echo.
set /p SUCHSTRING="Gib den Text ein, nach dem gesucht werden soll. Z.B. "Name=Data" (ohne Anfhrungszeichen): "

:: Starte Suche ohne regex
echo prg\pp.exe prg\pwb\find.py -ref:%REF-ZIEL% -dateiname:"%DATEINAME%.txt" "%SUCHSTRING%" "###"
prg\pp.exe -i prg\pwb\find.py -ref:%REF-ZIEL% -dateiname:"%DATEINAME%.txt" "%SUCHSTRING%" "###"
echo.
echo Es wurde die tempor„re Datei %DATEINAME%.txt erstellt.

:: Schreibe %ZIELSEITE% in "findupload-title.txt"
echo '''User:TextsucheBot/Suchergebnis/%DATETIME%_%SUCHSTRING%''' > prg\pwb\findupload-title.txt
echo Dies sind die Seiten/Dateien, die auf %REF-ZIEL% verlinken und den String ^<code^>^<nowiki^>%SUCHSTRING%^</nowiki^>^</code^> enthalten:^<p^> > prg\pwb\findupload-head.txt

echo %DATETIME%: "%SUCHSTRING%" -ref:"%REF-ZIEL%" >> TextsucheBot.log
goto processing

:: ========== Suche Links ==========
:Suche_links
:: Erfrage die Seite, die auf die Suchziele verlinkt
call :header
set /p LINK-SEITE="Gib einen Seitentitel ein. Es werden dann alle Seiten durchsucht, auf die diese Seite verweist. Z.B. "Spock (Spiegeluniversum)" (ohne Anfhrungszeichen): "
echo.
echo Es werden die Seiten durchsucht, auf die %LINK-SEITE% verweist.

:: Setz Namen die Zieldatei fuer die Suchergebnisse
set DATEINAME=%DATETIME%

:: Erfrage den Such-String
echo.
set /p SUCHSTRING="Gib den Text ein, nach dem gesucht werden soll. Z.B. "Name=Data" (ohne Anfhrungszeichen): "

:: Starte Suche
prg\pp.exe prg\pwb\find.py -links:"%LINK-SEITE%" -dateiname:"%DATEINAME%.txt" "%SUCHSTRING%" "###"
echo.
echo Es wurde die tempor„re Datei %DATEINAME%.txt erstellt.

::Ersetze Sonderzeichen in SUCHSTRING
set REPSTRING=%SUCHSTRING%
call prg\rep.bat
set SUCHSTRING=%REPSTRING%

:: Schreibe %ZIELSEITE% in "findupload-title.txt"
echo '''User:TextsucheBot/Suchergebnis/%DATETIME%_%SUCHSTRING%''' > prg\pwb\findupload-title.txt
echo Dies sind die Seiten/Dateien, auf die %LINK-SEITE% verweist und die den String ^<code^>^<nowiki^>%SUCHSTRING%^</nowiki^>^</code^> enthalten:^<p^> > prg\pwb\findupload-head.txt

echo %DATETIME%: "%SUCHSTRING%" -links:"%LINK-SEITE%" >> TextsucheBot.log
goto processing

:: ========== Help ==========
:Help
start "" "http://plasmarelais.url.ph/ma-mail/plasmarelais.htm"
goto home
:: ========== Suchergebnisse ==========
:Suchergebnisse
start "" "http://de.memory-alpha.org/wiki/Special:Prefixindex/Benutzer:TextsucheBot/Suchergebnis"
goto home

:: ========== Processing ==========
:processing
:: Fuehre die Dateien zur Uploadvorlage zusammen
copy /b "prg\pwb\findupload-start.txt"+"prg\pwb\findupload-title.txt"+"prg\pwb\findupload-head.txt"+"prg\pwb\%DATEINAME%.txt"+"prg\pwb\findupload-ende.txt" "prg\pwb\findupload.txt"

:: Loesche temporaere Dateien
del "prg\pwb\%DATEINAME%.txt"
del "prg\pwb\findupload-head.txt"

:: Lege die Seite im Wiki an
prg\pp.exe prg\pwb\pagefromfile.py -notitle -file:"prg\pwb\findupload.txt"

:: Replace.py und Add_text.py: Absätze, Links, Nummerierung
prg\pp.exe prg\pwb\replace.py -always -page:"Benutzer:TextsucheBot/Suchergebnis/%DATETIME%_%SUCHSTRING%" -regex "#\[\[:" "\n#[[:"

:: Endausgabe mit Link
echo.
echo Die geordnete Liste findet sich nun auf der Memory-Alpha-Seite "User:TextsucheBot/Suchergebnis/%DATETIME%_%SUCHSTRING%".
echo.
set /p BROWSER=Soll diese Seite nun im Browser ge”ffnet werden? (J/N) 
if %BROWSER%==N goto Frage_Neustart
if %BROWSER%==n goto Frage_Neustart

:: Ruft die neue Seite im Wiki auf
start "" "http://de.memory-alpha.org/wiki/User:TextsucheBot/Suchergebnis/%DATETIME%_%SUCHSTRING%"

:Frage_Neustart
echo.
set /p ENDE=Soll eine weitere Suche gestartet werden? (J/N) 
if %ENDE%==J goto home
if %ENDE%==j goto home
goto ende

:: ========== Info ==========
:Info
call :header
echo TextsucheBot V. %VERSION%
echo.
echo Dieses Programm wurde von Plasmarelais (maurl.de.vu/plasmarelais) geschrieben und nutzt das pywikipediabot-Framework sowie PortablePython 2.7.
echo.
echo Quelle fr das Icon: http://findicons.com/pack/108/pastel
echo.
set /p ENDE=Drcke "Eingabe" um zum Startbildschirm zurckzukehren.
goto home

:header
cls
echo.
echo             ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo             º Textsuche in der Memory Alpha mit dem TextsucheBot º
echo             ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.

:replace
set STRING0=%REPSTRING%
set STRING1=%STRING0:#=_%
set STRING2=%STRING1:|=_%
set STRING3=%STRING2:[=_%
set STRING4=%STRING3:]=_%
set STRING5=%STRING4:{=_%
set STRING6=%STRING5:}=_%
::set STRING7=%STRING6:^>=_%
::set STRING8=%STRING7:^<=_%
set REPSTRING=%STRING6%
goto :eof 

:: ========== ENDE ==========
:ende
pause