PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : (Java) - Regex, "das richtige in Zeile 3"



Nope
05.11.2016, 13:39
Hallo, ich finde den Fehler nicht und bräuchte mal Hilfe!


Search for: ^.+\n.+\n.+\n
Replace with:$0http://nitroflare.com/view/(.+?)+\.pdf\n


Ausgabe: Murks...


Search for: ^.+\n.+\n.+\n
Replace with: $0http?://pxhst\.co[^\s]+.jpg


Ausgabe: Murks...


http://pxhst.co/aaaaaaa/a0/a0/00000aaa.jpg
http://pxhst.co/aaaaaaa/a0/a0/00000aaa.png

http://nitroflare.com/view/A0A0A0A0A0A0/aaaaaa_0000.rar
http://nitroflare.com/view/A0A0A0A0A0A0/aaaaaa_0000.pdf

Ich komm da einfach nicht drauf woran es liegt, gebe ich es in der Suche ein findet er es gleich.

Unlimiter
05.11.2016, 14:23
Wie wäre es mit einem sauberen Input, den du einliest und den von dir gewünschten Output. Noch besser mit fertigen Snippet vom IST-Stand.

Nope
05.11.2016, 14:37
Wenn man das hin bekommt, sicher eine schöne Sache. Wie du siehst habe ich aber schon daran zu kämpfen^^

Unlimiter
05.11.2016, 14:50
Du wirst doch wohl wissen, was du als Input eingibst und welchen fertigen Output du wünschst? Der Code den du anhängen sollst, soll dafür genutzt werden, um ihn direkt adaptieren zu können und darin die Fehler auszubessern.

Nope
05.11.2016, 17:22
Nach dem auslesen sieht die txt so aus:

<subject>Diabetes Living Germany - Oktober-November 2016</subject>

<url>http://avxhome.se/magazines/DiabetesLivingGermanyOktoberNovember2016.html</url>

<tags>Diabetes, Living, Germany, Oktober, November, 2016</tags>

https://www.szenebox.org/images/_imported/2016/11/30.jpg ×
Diabetes Living Germany - Oktober-November 2016
https://www.szenebox.org/images/_imported/2016/11/31.jpg (http://pxhst.co/avaxhome/60/51/00405160.jpg) Wow! What a picture!



Diabetes Living Germany - Oktober-November 2016
German | 100 pages | True PDF | 30,5 MB

[b]


Download from nitroflare.com (http://nitroflare.com/view/F791C72313AADE3/Diabetes_Living_Germany_-_Oktober-November_2016.pdf)


In diesen txt sollen 3 Zeilen ergänzt werden

->NEW ENTRY<-
chunks=0
#a comment
extractPasswords=["Password1","Password2"]
enabled=true
text=<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Hoster Link und Cover Link
packageName=<<<<<<<<<<<<<<<<<<<<<<<<<< 1 Subject ohne Leerzeichen
extractAfterDownload=true
downloadFolder= <<<<<<<<<<<<<<<<<<<<<<<<<< 1 Subject ohne Leerzeichen
priority=DEFAULT
downloadPassword=null
#use only if text contains one single link
#filename=null
#overwritePackagizerEnabled=false
#comment=null
autoStart=TRUE
autoConfirm=true
forcedStart=true
#deepAnalyseEnabled=false
#addOfflineLink=true

So soll sie aussehen

->NEW ENTRY<-
chunks=0
#a comment
extractPasswords=["Password1","Password2"]
enabled=true
text=http://nitroflare.com/view/F791C72313AADE3/Diabetes_Living_Germany_-_Oktober-November_2016.pdf http://pxhst.co/avaxhome/60/51/00405160_medium.jpg
packageName=Diabetes.Living.Germany.-.Oktober-November.2016
extractAfterDownload=true
downloadFolder=E:\pdf\Magazine_DE\Diabetes.Living. Germany.-.Oktober-November.2016
priority=DEFAULT
downloadPassword=null
#use only if text contains one single link
#filename=null
#overwritePackagizerEnabled=false
#comment=null
autoStart=TRUE
autoConfirm=true
forcedStart=true
#deepAnalyseEnabled=false
#addOfflineLink=true

Erweiterungen für "myFile.crawljob" txt Datei wird umbenannt in .crawljob

#this is a property file format. You can put all these entries in a jsonarray [{..},{...}] as well.
#save this as myFile.crawljob
#Start a new entry with anything but a comment (#...) or key=. An empty line would be ok as well
->NEW ENTRY<-
chunks=0
#a comment
extractPasswords=["Password1","Password2"]
enabled=null
text=http://www.hornoxe.com/kreuzfahrtschiff-wird-verlaengert-zeitraffer/
packageName=MyPackageName
autoStart=TRUE
extractAfterDownload=UNSET
downloadFolder=null
priority=DEFAULT
forcedStart=UNSET
downloadPassword=null
#use only if text contains one single link
filename=null
overwritePackagizerEnabled=false
comment=null
autoConfirm=UNSET
deepAnalyseEnabled=false
addOfflineLink=true

->NEW ENTRY<-
#properties that are not required can be ignored. This is absolutly fine:
text=http://www.hornoxe.com/katze-nimmt-die-post-entgegen/


### Available Fields:

# priority Type: Priority
# priority = null
# comment Type: String
# comment = null
# enabled Type: BooleanStatus
# enabled = null
# text Type: String
# text = null
# type Type: JobType
# type = NORMAL
# chunks Type: int
# chunks = 0
# downloadPassword Type: String
# downloadPassword = null
# downloadFolder Type: String
# downloadFolder = null
# packageName Type: String
# packageName = null
# filename Type: String
# filename = null
# addOfflineLink Type: boolean
# addOfflineLink = true
# extractAfterDownload Type: BooleanStatus
# extractAfterDownload = UNSET
# extractPasswords Type: String[]
# extractPasswords = null
# overwritePackagizerEnabled Type: boolean
# overwritePackagizerEnabled = true
# deepAnalyseEnabled Type: boolean
# deepAnalyseEnabled = false
# autoStart Type: BooleanStatus
# autoStart = UNSET
# autoConfirm Type: BooleanStatus
# autoConfirm = UNSET
# forcedStart Type: BooleanStatus
# forcedStart = UNSET

Der Idealfall wäre wenn eine weitere txt Datei erstellt wird

Diabetes Living Germany - Oktober-November 2016
German | 100 pages | True PDF | 30,5 MB

Tags: Diabetes, Living, Germany, Oktober, November, 2016

Die gespeicherte Datei soll nach Abschluß des Downloads dem Download Ordner hinzugefügt werden mittels Script.

/*
Event Script: writeInfoFile

Creates an Info-File into the DL-Folder with detailed information

Version: 0.21

Requirements:
Trigger "Package Finished"

Tested:
JD2 on Windows7-32bit Platform and jre8 (see path-creation code at the end of this script)
*/


//---------- Global declarations -----------------
var bWriteFile = false; //pessimistic approach: no file-writing at start, if situation ok, then set it "true"
var sInfoFilePath = ""; //the target file, if already available, then APPENDING, else creation
var sText = ""; //will be filled with content (or not :-)
var sInfoFileType = ".info" //set path creation at the end of the script
var iContent = 0; //setting bit 1 if pwd is available, setting bit 2 if comments available //if not set, no info file
var myPackage = package;
var aParts = myPackage.getDownloadLinks();
var aArchives = package.getArchives();






//---------- ANALYZING SITUATION ----------
if (myPackage.isFinished() == true) {
//no further analysis due to Trigger "Package Finished" :-)
bWriteFile = true;
}




//---------- Building Info-Text -----------
if (bWriteFile == true) {
sText += "**********************************" + "\r\n"
sText += "* P A C K A G E *" + "\r\n"
sText += "**********************************" + "\r\n"
sText += "Package.Name : " + myPackage.getName() + "\r\n" +
"Package.DownloadFolder : " + myPackage.getDownloadFolder() + "\r\n" +
"Package.Total : " + myPackage.getBytesTotal() + "\r\n" +
"Package.Loaded : " + myPackage.getBytesLoaded() + "\r\n" +
"Package.Finished : " + myPackage.isFinished() + "\r\n";
if (myPackage.getComment() != undefined) {
sText += "Package.Comment : " + myPackage.getComment() + "\r\n";
iContent |= 2;
}

sText += "\r\n"
sText += "**********************************" + "\r\n"
sText += "* P A R T S *" + "\r\n"
sText += "**********************************" + "\r\n"
for (var i = 0; i < aParts.length; i++) {
sText += "Part.# : " + i + "\r\n" +
"Part.Name : " + aParts[i].getName() + "\r\n" +
"Part.Status : " + aParts[i].getStatus() + "\r\n" +
"Part.Enabled : " + aParts[i].isEnabled() + "\r\n" +
"Part.Finished : " + aParts[i].isFinished() + "\r\n" +
"Part.Skipped : " + aParts[i].isSkipped() + "\r\n" +
"Part.ExtractionStatus : " + aParts[i].getExtractionStatus() + "\r\n" +
"Part.Total : " + aParts[i].getBytesTotal() + "\r\n" +
"Part.Loaded : " + aParts[i].getBytesLoaded() + "\r\n";
if (aParts[i].getUrl() != undefined) {
sText += "Part.URL : " + aParts[i].getUrl() + "\r\n";
}
if (aParts[i].getComment() != undefined) {
sText += "Part.Comment : " + aParts[i].getComment() + "\r\n";
iContent |= 2;
}
var myArchive = aParts[i].getArchive();
if (myArchive != undefined) {
if (myArchive.getUsedPassword() != undefined) {
sText += "Part.UsedPassword : " + myArchive.getUsedPassword() + "\r\n";
iContent |= 1;
}
}
sText += "--------------------------:-" + "\r\n"
}

sText += "\r\n"
sText += "**********************************" + "\r\n"
sText += "* A R C H I V E S *" + "\r\n"
sText += "**********************************" + "\r\n"
for (var i = 0; i < aArchives.length; i++) {
sText += "Archive.# : " + i + "\r\n" +
"Archive.Name : " + aArchives[i].getName() + "\r\n" +
"Archive.ArchiveTyp : " + aArchives[i].getArchiveType() + "\r\n";

if (aArchives[i].getInfo() != undefined) {
sText += "Package.Archive.Info : ";
sText += JSON.stringify(aArchives[i].getInfo(), null, 2) + "\r\n";
}
sText += "--------------------------:-" + "\r\n"
}
}




//---------- INFO.FILE naming and writing -----------
if (bWriteFile == true && iContent > 0) { //comment out or set "iContent >= 0" if info-file should be written always
//- path creation
sInfoFileType = "." + iContent + sInfoFileType //add content-type hint to filetype
sInfoFilePath = myPackage.getDownloadFolder() + "/" + myPackage.getName() + sInfoFileType; //<packageFolder>/<packageName>.<iContent>.info
if (sInfoFilePath.length > 255) { //path to long! -> shorten!!
sInfoFilePath = myPackage.getDownloadFolder() + "/jd" + sInfoFileType; //<packageFolder>/jd.<iContent>.info
}
//- writing
try {
writeFile(sInfoFilePath, sText, true);
} catch (e) {
//no error handling implemented !
}
}

1stAid
05.11.2016, 19:19
Du hast den Sinn einer Regex glaub falsch verstanden.
Du kannst mit einer Regex verschiedene passagen in einem text treffen und dir diese treffer als var ausgeben lassen.

Was du vorhast sind mehrere Schritte... Erst suchst du dir mit RegEx den Link. Diesen speicherst du in einer var.
Danach in schritt 2 suchst du dir mit RegEx die Passage "text=" und ersetzt diese durch "text= + var aus regex1"

deine regexpattern
^.+\n.+\n.+\n
trifft ja auch gar nichts in dem von dir gezeigtem text. Das funktioniert so nicht.
diese Pattern macht so auch wenig Sinn.



Ausserdem kommt mir das mächtig bekannt vor. Du kannst mich ja gerne nochmal antippern, wenn ich mit meinem Verdacht richtig liege ;)
Gruß

Unlimiter
05.11.2016, 19:42
So ist es.

Im Prinzip kann man es aber auch auf eine andere Art angehen, wenn du das File sowieso in einem Array zwischenspeicherst (so kommt es mir laut deinem Text vor). Das kürzt das ganze nur "gering" ab, macht die Sache aber wesentlich strikter.

An der Stelle solltest du bereits die korrekten Positionen kennen und direkt die richtigen Zeilen ansprechen.

Danach bleibt es aber beim üblichen Vorgang:

Überprüfen ob die Zeile nach ...= befüllt ist
Wenn ja -> füge den Link vorne hinzu / willst du ihn durch den anderen extrahieren muss nochmal ein Filterpattern her


Zudem würdest du übrigens beim "ersetzen", eine neue Zeile hinzufügen.

Nope
05.11.2016, 20:44
@1stAid
Du könntest recht haben ;)

Also ich sitze da jetzt schon einige Tage drann und die Ausgabe ist die beste die ich hin bekomm.
Weil der Crawler nicht immer gleich ausgibt und nur find and replace zu Verfügung steht. Der Coder stellt sich bisschen Quer was Custum Template angeht.
JDownloader macht zu viele Fehler so wie es jetzt ist Cover und File sind oft getrennt und somit das Ziel verfällt wurde ich sagen.
Jetzt war der Gedanke ich hole mit ^.+\n.+\n.+\n ihm den Hosterlink hoch und gleichzeitig auf diese Weise Zeile für Zeile fertig machen und
unten kommt dann das drunter ################## JD liest nur das was er soll und sollte dann Endlich mal Arbeiten. Aber leider scheint man den link nicht hoch zu bekommen.

1stAid
05.11.2016, 23:14
Ich würde eher die RemoteApi einschalten und simpel die gefilterten Links per get direkt an den JD2 senden... Du läufst mit dem Vorhaben mit der Kirche ums Dorf.
Weil das soll doch eine JD Datei werden die die in die Ordnerüberwachung vom JD soll oder?


Result := idhtp1.get('http://localhost:3128/linkgrabberv2/addLinks?' + DataStringUrlEncoded);
Wenn RemoteApi eingeschaltet ist
http://localhost:3128/linkgrabberv2/addLinks?%7B%22links%22%3A%22http%3A%2F%2Ful.to%2F dqlb4qid%22%7D
in den Browser eingeben und zack sind die Links im JD2


oder lass dir was coden, wenn du mit Regex nicht viel am Hut hast wird es schwierig.
Wenn das ganze noch in ein "unbekanntes" 3rd Partytool eingegeben wird....


Gruß

Nope
06.11.2016, 16:48
Las dir was Coden hört sich jut, die frage ist wer hat Lust dazu oder vielmehr wer hat Zait dazu und erschlägt mich nicht mit seinen Preisen?
Wie die txt am Ende aussehen soll steht ja oben alles,aus einer txt Datei werden 2-3, 3 für den Idealfall.
3 Pfade die ich frei angeben kann, Einlesen, txt Ausgabe und Ausgabe für Jdownloader. Ausgabe für Jdownloader "muß" so sein wie oben angeben um fehler zu vermeiden, wichtig ist das die Hoster in einer Zeile sind mit einem Leerzeichen dazwischen, da die Beschreibung doch recht unterschiedlich ist sollte diese an das Ende kommen, mal nur 2 Zeilen und dann wieder 6-7 Zeilen, dann ein Feld wo ich eigene Wörter Zeichen oder was auch immer eingeben kann die dann raus genommen werden. Dann soll es natürlich Automatischen den Ordner der Ausgabe einlesen txt Dateien die er nicht lesen kann weil sie völlig verschoben sind kann er löschen oder auch extra wo ablegen.

Ein Extra wäre noch wenn er ein Ordner erstellt mit dem Subject Namen von der ersten Zeile und die Beschreibung gleich da rein packt bevor er die "my.crawljob" weiterreicht an den Jdownloader.
<subject>Diabetes.Living.Germany.-.Oktober-November.2016</subject>

Joar mehr brauch ich gerade nicht bzw fällt mir nicht ein

doge
08.11.2016, 08:16
Wenn man hier sauber herauslesen könnte, was denn überhaupt gewollt ist, wäre man (bzw. ich) durchaus bereit einen Versuch zu implementieren..
Aber das ist mir ganz ehrlich nach mehrmaligem lesen immer noch nicht klar ¯\_(ツ)_/¯

1stAid
08.11.2016, 16:28
Er hat 2 Dateien, eine die er von nem "Crawler" hat. Damit will er einen Jd DL Job erstellen dazu erstellt er die myFile.crawljob mit den Infos die er aus der "Crawlerdatei" entnehmen möchte... die soll dann in die Ordnerüberwachung von JD geschoben werden ....

Nope
09.11.2016, 06:41
Ist das dein ernst das du aus den Spoilern nicht raus lesen kannst wo es anfängt und was er ausgeben soll?
Bei fragen, schreib ruhig und du sollst auf jede Frage eine Antwort bekommen!


Ich habe da was für euch:



search (?si)(http://pxhst.+)(http://nitroflare.+)

Replace: $2$1

Nope
16.11.2016, 10:49
Keine bereit nen Script/Tool zu schreiben das mir das oben genannte richtig ausgibt?