View Single Post
  #272  
Old 30.09.2019, 10:22
Amiganer Amiganer is offline
DSL Light User
 
Join Date: Mar 2019
Posts: 31
Default

Quote:
Originally Posted by snickers2k View Post
da du ja deine config noch nicht geshared hast, muss ich mir erstmal das ganze mit digest mal anschauen.. bin da jetzt auf den selben fehler mit dem folderwatch gestoßen wie du
Hmmm..... Die relevanten Teile habe ich gepostet....
Dann mal ganz ausführlich....

in der config.yml...
-------------------------------------------------------------------
XYZ:
disable: seen
priority: 10
html:
url: **External links are only visible to Support Staff**...
accept_all: yes
make_html:
file: cfgXYZ.yml
template: cfgXYZ
--------------------------------------------------------------------

die cfgXYZ.template sieht so aus
--------------------------------------------------------------------
tasks:
{%- for entry in task.accepted %}
XYZ_{{ loop.index }}:
priority: {{ loop.index }}
cfscraper: yes
html:
url: {{ entry.url }}
digest:
list: AddUrlBat
state: accepted
#
{%- endfor %}
makeAddUrlbat:
priority: 99999
from_digest:
list: AddUrlBat
seen: no
accept_all: yes
make_html:
file: dataXYZ.csv
template: AddUrlcsv
list_add:
- entry_list: mySeenList
--------------------------------------------------------------------
Zur Sicheerheit wird hier noch der loop index mit angefügt, damit es auch immer eindeutig ist.

AddUrlcsv.template
-------------------------------------------------------------------
{%- for entry in task.accepted %}
"{{ entry.title }}-{{ loop.index }}","{{ entry.url }}"
{%- endfor %}
-------------------------------------------------------------------
Das schreibt den CSV-File...


cfgXYZ.template (im Verzeichnis Templates)
--------------------------------------------------------------------
chunks=0
autoConfirm=true
autoStart=true
deepAnalyseEnabled=true
enabled=true
extractAfterDownload=true
forcedStart=true
priority=HIGHEST
packageName=XYZ.abc
#
# Links
#
text={% for entry in task.accepted %}{{ entry.url }}
{% endfor %}
#
--------------------------------------------------------------
Das muß für jeden angelegt werden, es unterscheidet sich aber nur um den Namen in "packageName".


Aufrug des neuen cfgXYZ.yml
---------------------------------------------------------------
cfgDo:
priority: 95
disable: seen
mock:
- {title: 'Filename', filename: 'cfgXYZ.yml' }
accept_all: yes
exec:
allow_background: no
on_output:
for_accepted: FlexGet.exe -c "{? cfgpath ?}/{{filename}}" -L error execute
--------------------------------------------------------------
Hier kann man mit mock weitere cfg.... einfügen.

Einlesen des CSV (in config.yml)
--------------------------------------------------------------
csvMegabusty:
priority: 98
csv:
url: '{? path ?}/dataXYZ.csv'
values:
title: 1
url: 2
accept_all: yes
digest:
list: XYZLinks
state: accepted
--------------------------------------------------------------
Die Links werden so in mein digest übernommen

Das finale (in config.yml):
--------------------------------------------------------------
makeXYZ:
priority: 99
from_digest:
list: XYZLinks
seen: no
accept_all: yes
make_html:
file: JD2\XYZ.crawljob
template: XYZ
list_add:
- entry_list: mySeenList
-------------------------------------------------------------
Mit den Proritäten regel ich, das auf jedenfall alles nacheinander ausgeführt wird.

Wenn jetzt noch etwas fehlt, einfach danach fragen....

Ich sammle ALLE Links eben in einem Digest, das erst ganz zum Schluß auch in der crawljob ausgelesen wird. Dadurch kann ich halt auch Links von der zweiten Seite laden.

Wie man die Links für die zweite Seite findet ist recht unterschiedlich. Das "schlimmste" ist eine Seite, wo ich wirklich mit "-text" danach suchen muß (alle Links stehen zB im Button mit Label "Continue reading").

Bei mir landen jetzt alle "...crawlob" im Verzeichnis "JD2", mit einem Python-Script kopiere ich die dann in "folderwatch"....

folderwatch.py
-----------------------------------------------------------------------------------------------------
#! python3

import os, shutil
from os.path import join as ospj
from os.path import basename as ospb

BASEDIR = os.path.dirname(os.path.abspath(__file__))
FROMPATH = ospj(BASEDIR, 'JD2')
SAVEPATH = ospj('D:\\', 'JD2', 'folderwatch')

opath = None
for path, fname in walkdir(FROMPATH, False):
if fname.endswith('crawljob'):
print('CP:', ospj(path, fname))
print('-->', SAVEPATH)
shutil.move(ospj(path, fname), SAVEPATH)
--------------------------------------------------------------------------------------------
Das Script ist so eingestellt, das es im selben Verzeichnis wie das config.yml steht. Wer es nicht erkennt: Es ist in Python3 geschrieben (der Support für Python 2 ist ausgelaufen).

Bye, Christian
P.S.: Die Formatierung ist wohl verloren gegangen, ich hoffe das stört nicht....

Last edited by Amiganer; 30.09.2019 at 10:28.
Reply With Quote