Скрипт Python: не показывать список (dialog.select), вместо этого выберите первый результат - PullRequest
0 голосов
/ 23 мая 2018

Этот скрипт покажет список (dialog.select), я хотел бы изменить его на auto.pick первый результат (без диалога) или что-то в этом роде.

В 1 всегда есть 1 результатURL, поэтому нет необходимости в диалоге, это «проблемная» часть:

bestanden = []
filelist = getHtml(listurl)
filelist = re.compile('path":"([^"]+)"', re.DOTALL | re.IGNORECASE).findall(filelist)

for bestand in filelist:
    bestanden.append(urllib.unquote_plus(bestand[1:].replace('\u00','%')))

vh = dialog.select('Selecteer bestand om te downloaden', bestanden)
if vh == -1:
    return

dlpath = filelist[vh]
dlname = bestanden[vh]
dlpath = urllib.unquote_plus(dlpath.replace('\u00','%'))
stackpage = getHtml(url)
csrftoken = re.compile('csrf-token" content="([^"]+)"', re.DOTALL | re.IGNORECASE).findall(stackpage)[0]
archive = "zip"
all = "false"

stackdata = {'CSRF-Token':csrftoken,
            'archive':archive,
            'all':all,
            'query':'',
            'paths[]':dlpath}

stackdata = urllib.urlencode(stackdata)
fullurl = dlurl + "|" + stackdata
fildl = downloadFile(fullurl, dlname, download_path)

в 'default.py', который я использую:

<...etc...>

def mainMenu():
addItem('[B]U[/B]pdate', url, 1,icon, 1)

<...etc...>

elif mode==1:
showFiles(url, location)

Я пробовал много разныхвещи, но, кажется, не могут заставить его работать, каждый раз, когда получаю ошибки, например, такие:

TypeError: list indices must be integers, not str
TypeError: list indices must be integers, not list
TypeError: list indices must be integers, not function
TypeError: 'list' object is not callable
TypeError: 'str' object is not callable
AttributeError: 'list' object has no attribute 'replace'
AttributeError: 'list' object has no attribute 'split'

, как вы можете видеть, я действительно пробовал много проб и ошибок;) Явроде как застрял, как вы видите, и, надеюсь, пытался выучить несколько новых трюков;)

С уважением

1 Ответ

0 голосов
/ 24 мая 2018

FIX

    bestanden = []
    filelist = getHtml(listurl)
    filelist = re.compile('path":"([^"]+)"', re.DOTALL | re.IGNORECASE).findall(filelist)

    for bestand in filelist:
        bestanden.append(urllib.unquote_plus(bestand[1:].replace('\u00','%')))

   #OLD / PREVIOUS!
   #vh = dialog.select('Selecteer bestand om te downloaden', bestanden)
   #if vh == -1:
   #    return

    if len(bestanden) > 1:
        vh = dialog.select('Selecteer bestand om te downloaden', bestanden)
        if vh == -1:
            return
    else:
        vh = 0

    dlpath = filelist[vh]
    dlname = bestanden[vh]
    dlpath = urllib.unquote_plus(dlpath.replace('\u00','%'))
...