for flooders
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум
   Лисоводы   всех   стран,  объединяйтесь !!!  

Список Форумов  :: Visual Foxpro, Foxpro for DOS
  

что не так с автоскачкой
boba

Сообщений: 5829
Откуда: Медвежьи озера-
Дата: 14.01.21 13:40:57
делаю автоскачку файлов по некоему списку
Скачал около 200 файлов
Потом интернет отвалился
и все мои попытки пойти дольше
проваливаются
Качает из списка первый файл , выдает код ошибки
с минусом, и все
При следующем запуске снова читает только первый файл
в списке
Если в программе ошибка, как она ухитрилась до этого
отработать несколько часов и скачать пару сотен файлов
Файл список скачки вкладываю
Зацикливание до отсутствия ошибки не помогло

Declare Integer URLDownloadToFile In URLMON.Dll Long, String, String, Long, Long

adrr ='https://www.ncdc.noaa.gov/orders/qclcd/'
lcfile =Getfile('csv')
If Not Empty(lcfile)
strr = Filetostr(lcfile)
Endif
ln = Getwordcount(strr, Chr(13))
SET STEP ON
For ii = 1 To 2* ln

lcwrd = Getwordnum(Getwordnum(strr, ii, Chr(13)),1,';')
IF EMPTY(lcwrd)
lcwrd = Getwordnum(Getwordnum(strr, ii, Chr(13)),2,';')
endif

lcXMLFile = Curdir() + Sys(2015) + '.TMP'
hadrr = adrr + lcwrd
If Not Empty(lcwrd)
lok = IsFileDownloaded(hadrr, lcwrd)
Endif
ENDFOR
Clear Dlls 'URLDownloadToFile'


* ???????? ???? ? ???????? ??? ????????



Function IsFileDownloaded
Lparameters tcSourceFile As String, tcTargetFile As String
If !File(tcTargetFile)
lon = -1
DO WHILE lon !=0
lon = URLDownloadToFile(0, tcSourceFile, tcTargetFile, 0, 0)
enddo

Return File(tcTargetFile)
Endif
Return .F.
Function isinternetconnected
Local lnFlags As Integer
Declare SHORT InternetGetConnectedState In WININET Long @, Long
lnFlags = 0
InternetGetConnectedState(@lnFlags, 0)

Return !Inlist(lnFlags, 0, 16, 32, 48)
Ratings: 0 negative/0 positive

Re: что не так с автоскачкой
Каратаев
Автор

Сообщений: 3686
Откуда: Алматы
Дата: 14.01.21 13:57:34
У меня вот такая конструкция работает уже долгое время. Выдрал из рабочего проекта:
* Вызывающая программа должна подсунуть updater-у файлик updater.cfg  
 * в этом файле должно быть указано:  
 * откуда что скачать   
 * Пример содержания файла updater.cfg  
 * http :// kzgo.kz/files-ddw/prg/kb/version.txt  
 * http: // kzgo.kz/files-ddw/prg/kb/updkb.zip  
 ***********************************************************************  
 * В качестве параметра передается путь к папке обновления программы  
 ***********************************************************************  
  LPARAMETERS tcPathUpd  
    
  LOCAL lcPathUpdTmp, lcFileCFG  
  m.lcPathUpdTmp = ADDBS(m.tcPathUpd+"Temp")  
    
  IF !DIRECTORY(m.lcPathUpdTmp)  
  	MKDIR (m.lcPathUpdTmp)  
  ENDIF   
    
  m.lcFileCFG = m.tcPathUpd+"updater.cfg"  
  IF !FILE(m.lcFileCFG)  
  	=MESSAGEBOX("Нет файла конфигурации",0+16,"Обновление")  
  	RETURN 1000  
  ENDIF   
    
  Clear    
        
  Declare Integer isxdl_AddFile In "isxdl.dll" String strURL , String strFilename    
  Declare Integer isxdl_AddFileSize In "isxdl.dll" String strURL, String strFilename, Integer dwSize    
  Declare Integer isxdl_ClearFiles In "isxdl.dll"    
  Declare Integer isxdl_Download In "isxdl.dll" Integer ihWnd, String strURL,String strFilename    
  Declare Integer isxdl_DownloadFiles In "isxdl.dll" Integer ihWnd    
  Declare String  isxdl_GetFileName In "isxdl.dll" String strURL    
  Declare Integer isxdl_IsConnected In "isxdl.dll"    
  Declare Integer isxdl_SetOption In "isxdl.dll" String strOption, String strValue    
        
  If isxdl_IsConnected()!=1    
    	=MESSAGEBOX("Нет подключения",0+16,"Обновление")  
    	Return 2000   
  EndIf    
        
  isxdl_ClearFiles()    
    
  isxdl_SetOption("language",m.tcPathUpd+"isxdl_ru.ini")    
  isxdl_SetOption("label","Обновление")    
  isxdl_SetOption("description","Закачиваем файлы")    
  isxdl_SetOption("title","Загрузка файлов")      
  isxdl_SetOption("smallwizardimage",m.tcPathUpd+"WizModernSmallImage-IS.bmp")   
        
 * считываем информацию из файла updater.cfg  
 * все строки - ссылки на модули обновления  
  STORE FOPEN(m.lcFileCFG,12) TO lnFile 	&& Откроем файл  
  STORE FSEEK(lnFile, 0) TO gnTop  	&& Переместим указатель в начало  
  LOCAL lcString, lcFileName  
  lcFileName = ''  
  do while .not. FEOF(lnFile)  
  	m.lcString = ALLTRIM(FGETS(lnFile))  && Считаем строку  
  	IF !EMPTY(m.lcString)  
 		* отсекаю последний символ "=" из записи в ини-файле  
  		IF RIGHT(m.lcString,1) == "="  
  			m.lcString = LEFT(m.lcString,LEN(m.lcString)-1)  
  		ENDIF   
  		lcFileName = ALLTRIM(JUSTFNAME(m.lcString))  
  		isxdl_AddFile(m.lcString,m.lcPathUpdTmp+lcFileName)  
  	ENDIF   
  ENDDO 	  
  = FCLOSE(lnFile)  && Закрываем файл  
  LOCAL lnRetval  
  m.lnRetval = isxdl_DownloadFiles(0)  
 *=MESSAGEBOX("Загрузка завершена "+Iif(isxdl_DownloadFiles(0)=1,"успешно","с ошибкой или прервана пользователем"))  
  RETURN m.lnRetval
Если надо - dll-ку могу выслать...


------------------
Никогда не бывает настолько плохо, чтобы не могло быть еще хуже.




Исправлено: Каратаев, 14.01.21 14:06
Ratings: 0 negative/0 positive

Re: что не так с автоскачкой
boba

Сообщений: 5829
Откуда: Медвежьи озера-
Дата: 14.01.21 15:23:16
да,
пришлите dll
на vladimirzhuravlevtver53@yandex.ru
Ratings: 0 negative/0 positive

Re: что не так с автоскачкой
boba

Сообщений: 5829
Откуда: Медвежьи озера-
Дата: 14.01.21 15:58:16
ничего не качает
и ошибки не дает
В файле списка были только имена без пути
Исправил так
Ничего не делает, и ошибки никакой не дает
файл списка верх такой
QCLCD201209.zip
QCLCD201210.zip
QCLCD201211.zip
QCLCD201212.zip

do while .not. FEOF(lnFile)
m.lcString = ALLTRIM(FGETS(lnFile)) && Считаем строку
IF !EMPTY(m.lcString)
* отсекаю последний символ "=" из записи в ини-файле
IF RIGHT(m.lcString,1) == "="
m.lcString = LEFT(m.lcString,LEN(m.lcString)-1)
ENDIF
lcFileName = 'https://www.ncdc.noaa.gov/orders/qclcd/'+ALLTRIM(JUSTFNAME(m.lcString))
SET STEP ON
isxdl_AddFile(m.lcString,m.lcPathUpdTmp+lcFileName)
ENDIF
ENDDO
Ratings: 0 negative/0 positive

Re: что не так с автоскачкой
boba

Сообщений: 5829
Откуда: Медвежьи озера-
Дата: 14.01.21 19:58:24
Вопрос закрыт
Список линков с некоторой позиции
содержал невидимые символы chr(10)
В тексте их не видно,
а при сшивке линка для скачки получается ошибка
По номеру ошибке на формуе Бейсика нашел,
как человек нарвался 1-1 на такую же проблему
Сижу, докачиваю
Ratings: 0 negative/0 positive

Re: что не так с автоскачкой
Каратаев
Автор

Сообщений: 3686
Откуда: Алматы
Дата: 15.01.21 10:34:07
Отправил на почту... Может пригодиться в любом случае...


------------------
Никогда не бывает настолько плохо, чтобы не могло быть еще хуже.
Ratings: 0 negative/0 positive



Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 10 (Гостей: 10)


© 2000-2021 Fox Club 
Яндекс.Метрика