24 ноября, вторник 07:03
Bankir.Ru

Объявление

Свернуть
Пока нет объявлений.

Программа для автоматического скачивания справочника БИК

Свернуть
X
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения

  • Программа для автоматического скачивания справочника БИК

    Написана на C#, требует .NET Framework. Писал под .NET 4.5. Скачивает актуальный справочник на текущую дату с сайта ЦБ: http://www.cbr.ru/mcirabis/?PrtId=bic
    Алгоритм:
    1. Открывает и сохраняет архив справочника.
    2. Запускает внешний процесс 7z.exe и распаковывает. 7z надо установить. 7z.exe положить в каталог с программой.
    3. При наличии в каталоге bnkseek.dbf убивает архив.
    В файле config.cfg путь к каталогу для сохранения справочника.
    Запуск по расписанию через .cmd, аналогично предыдущему посту.
    Приятного использования.
    Извините за внимание.

    С.В. Нехлюдов
    Вложения

  • #2
    а эта чем не нравится?
    http://astrasoft.su/Data/SpravMFOLoa...vMFOLoader.exe

    Комментарий


    • #3
      Об этой http://astrasoft.su/Data/SpravMFOLoa...vMFOLoader.exe понятия не имел. Скачал, запустил. Не нравится. Полностью не автоматизирует.
      Свою писал для Диасофта. Ему нужен актуальный bnkseek.dbf, а не пара архивов. К астрасофтовской придется писать обвязку на запуск и распаковку актуального справочника с учетом отработки каждого шага задания.
      У меня все это сделано.

      Комментарий


      • #4
        Вместо пункта 2. Запускает внешний процесс 7z.exe и распаковывает. 7z надо установить. 7z.exe положить в каталог с программой.
        Лучше использовать DotNetZip https://dotnetzip.codeplex.com/
        С уважением,
        Александр

        Комментарий


        • #5
          Спасибо, Александр.
          7z была выбрана по причине бесплатности. Даже если она не установлена, программа все равно будет скачивать архив актуального справочника.
          Я думал об использовании библиотеки, типа вашей ссылки, например: http://www.componentace.com/.NET_zip...t_zipforge.htm.
          Но в этом случае есть лицензионные ограничения, и пользователю придется её устанавливать.

          С уважением,
          Сергей Витальевич

          Комментарий


          • #6
            Ну для начала нафига вам платники
            1. DotNetZip Microsoft Public License (Ms-PL) https://dotnetzip.codeplex.com/license достаточно включит в проект Ionic.Zip.dll и попользоваться одним методом.
            2. Можно было и сакраментально использовать NET 4.6 там есть класс ZipFile https://msdn.microsoft.com/ru-ru/lib...v=vs.110).aspx
            3. Ну и вашем любимым 7z http://csharpexamples.com/tag/unzip/
            Имхо мне конечно всё одно .
            Но использовать Process при куче... готовых библиотек .. моветон .
            Последний раз редактировалось ALLEX; 08.06.2016, 18:45.
            С уважением,
            Александр

            Комментарий


            • #7
              Спасибо за критику.
              Вот второй вариант с библиотекой Ionic.Zip.dll из dotnetzip вместо 7z.

              С уважением,
              С.В. Нехлюдов

              P.S.
              Кому не нужна распаковка - используйте первый вариант без 7z.

              Извините за внимание.
              Вложения

              Комментарий


              • #8
                The remote server returned an error: (407) Proxy Authentication Required

                Комментарий


                • #9
                  Авторизуйтесь один раз в прокси через браузер. После этого все соединения пойдут (проверено на Kerio Control). Специальную авторизацию в прокси я не писал. Попробую допилить.

                  С уважением,
                  С.В. Нехлюдов

                  Извините за внимание

                  P.S. Еще посмотрите настройки IE: сервис -> свойства обозревателя -> безопасность -> другой -> проверка подлинности пользователя -> автоматический вход в сеть с текущим именем пользователя и паролем (должны совпадать с учеткой прокси).
                  Последний раз редактировалось sergehex; 09.06.2016, 11:43.

                  Комментарий


                  • #10
                    Вот третий вариант с настройками прокси. Файл config.cfg:

                    P:\BIK_Download\ - путь для сохранения
                    192.168.1.1 - proxy address (например 192.168.1.1 или myproxy.mydomain.ru)
                    3128 - proxy port
                    login
                    password

                    Если вторая строка пустая - настройки прокси вебклиент берет из реестра.

                    Извините за внимание

                    С.В. Нехлюдов

                    P.S.
                    Запускать по расписанию через cmd, типа: start BIK_Download.exe
                    Вложения

                    Комментарий


                    • #11
                      на похапе:
                      PHP код:
                        $fn ='bik_db_'.date("dmY").'.zip';
                        
                      $fnn='bik_db_'.date("Ymd").'.zip';
                        
                      $url "http://cbr.ru/mcirabis/BIK/$fn";
                        
                      $dirbik realpath('bikzip');
                        
                      $fnzip  "$dirbik/$fnn";
                        echo 
                      "<h1>$url</h1>";

                        
                      $ch curl_init($url);
                        
                      $fz fopen($fnzip'wb');
                        
                      curl_setopt($chCURLOPT_FILE$fz);
                        
                      curl_setopt($chCURLOPT_HEADER0);
                        
                      curl_exec($ch);
                        
                      curl_close($ch);
                        
                      fclose($fz);

                        
                      $zip = new ZipArchive;
                        
                      $res $zip->open($fnzip);
                        if(
                      $res === TRUE)
                          {
                           
                      $dir4bik=realpath('bik');
                           
                      remDir($dir4bik);
                           
                      mkdir($dir4bik);
                           
                      $zip->extractTo($dir4bik);
                           
                      $zip->close();
                           echo 
                      "ok - скачали $url, разархивировали...<br>";
                          } 

                      Комментарий


                      • #12
                        Доброе время!

                        Кто нить может поделиться примером исходников на С#, закачки справочника БИК.
                        Сам делфист, а надо срочно сделать на #.

                        Спасибо.

                        Комментарий


                        • #13
                          1. http://bfy.tw/EG56
                          2. http://bfy.tw/EG5B

                          Комментарий


                          • #14
                            Скрипт на js, запускается в консоли, для винды. Может качать через прокси.
                            Потребуется curl (бесплатная библиотека, портированная из unix), во вложении можно выбрать, что подойдёт.
                            7z можно заменить на любой другой архиватор, поправить команду для разархивирования.

                            Код:
                            var fso = new ActiveXObject("Scripting.FileSystemObject");
                            var WshShell = new ActiveXObject("WScript.Shell");
                            var ProxyURL = "http://proxy.bank.ru:8080";
                            var ProxyLoginPass="login:password";
                            var DestDir="D:\\BIC\\SPRAV.MFO";
                            
                            var d = new Date();
                            
                            var today="";
                            today+=d.getDate();
                            if (today.length<2){today="0"+today;}
                            var mon=String(d.getMonth()+1);
                            if (mon.length<2) {mon="0"+mon;}
                            today+=mon;
                            today+=d.getFullYear();
                            
                            var CurlString="curl.exe -O http://www.cbr.ru/mcirabis/BIK/bik_db_"+today+".zip --proxy-ntlm --proxy "+ ProxyURL+ " --proxy-user " + ProxyLoginPass;
                            WshShell.Run(CurlString, 1, true);
                            
                            var unzipstr="7z e -y -o"+DestDir+" bik_db_"+today+".zip";
                            WshShell.Run(unzipstr, 1, true);
                            Вложения

                            Комментарий


                            • #15
                              .cmd + wget.exe

                              Код:
                              @echo off & setlocal enabledelayedexpansion enableextensions & cls
                              
                              cd /d %~dp0
                              
                              set ProxyLogin=
                              set ProxyPassword=
                              set rkc_db="C:\N_RKC\DAT\"
                              set temp_db="%~dp0\bik"
                              set bik_url=http://www.cbr.ru/mcirabis/bik/
                              set WG="%~dp0\WGET.EXE"
                              set WGET_LOG="%~dp0\bik_log.log"
                              set arc_exe="c:\arc\7z.exe"
                              set arc_command=e
                              set arc_option=-y -o%rkc_db%
                              
                              For /F "Tokens=1* Delims==" %%i In ('WMIC Path Win32_LocalTime Get Day^, Month^, Year /Value ^| Find "="') Do (
                                Set V=%%j
                                Set $%%i=!V:~0,-1!
                              )
                              If %$Day% Lss 10 Set $Day=0%$Day%
                              If %$Month% Lss 10 Set $Month=0%$Month%
                              Set $DateF=%$Day%%$Month%%$Year%
                              
                              if exist wget.ini del /q wget.ini
                              SET IE_PROXY=HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings
                              For /F "Skip=4 Tokens=3 delims= " %%A In ('Reg Query "%IE_PROXY%" /V ProxyServer 2^>nul') Do Set wget_proxy=%%A
                              if defined wget_proxy (
                              Echo http_proxy = %wget_proxy%/>> wget.ini
                              Echo use_proxy = on>> wget.ini
                              )
                              
                              if not exist %WG% goto :NoWget
                              call %WG% -N -P %temp_db% --proxy-user %ProxyLogin% --proxy-password %ProxyPassword% -o %WGET_LOG% "%bik_url%bik_db_%$DateF%.zip"
                              
                              if not exist %arc_exe% goto :NoArc
                              call %arc_exe% %arc_command% %arc_option% "%temp_db%\bik_db_%$DateF%.zip"
                              
                              del /f /q wget.ini
                              endlocal
                              exit /b 0
                              
                              :NoWget
                              Echo Wget not found.
                              endlocal
                              exit /b 1
                              
                              :NoArc
                              Echo %arc_exe% not found.
                              endlocal
                              exit /b 2

                              Комментарий


                              • #16
                                Для коллекции хорошо бы еще скрипт на PowerShell и без использования внешних утилит )

                                Комментарий


                                • #17
                                  Сообщение от Andry Посмотреть сообщение
                                  Для коллекции хорошо бы еще скрипт на PowerShell и без использования внешних утилит )
                                  Как-нибудь так
                                  Код:
                                  Clear-Host
                                  $ErrorActionPreference = "Continue"
                                  $DebugPreference = "Continue"
                                  $VerbosePreference = "Continue"
                                  
                                  $rkc_db="C:\N_RKC\DAT\"
                                  $name_db= "bik_db_" + (get-date -Format "ddMMyyyy") + ".zip"
                                  $bik_url="http://www.cbr.ru/mcirabis/bik/" + $name_db
                                  $temp_db=$Env:TEMP + "\" + $name_db
                                  
                                  $WebClient = New-Object System.Net.WebClient
                                  $WebProxy = [System.Net.WebRequest]::GetSystemWebProxy()
                                  #$WebProxy.Credentials = New-Object Net.NetworkCredential("user,"","domain.local")
                                  $WebClient.Proxy = $WebProxy
                                  
                                  (New-Object Net.WebClient).DownloadFile($bik_url,$temp_db);New-Item -ItemType Directory -Force -Path $rkc_db;(new-object -com shell.application).namespace($rkc_db).CopyHere((new-object -com shell.application).namespace($temp_db).Items(),16)

                                  Комментарий


                                  • #18
                                    Так будет чуть получше
                                    Код:
                                    Clear-Host
                                    $ErrorActionPreference = "Continue"
                                    $DebugPreference = "Continue"
                                    $VerbosePreference = "Continue"
                                    
                                    $rkc_db="C:\N_RKC\DAT\"
                                    $name_db= "bik_db_" + (get-date -Format "ddMMyyyy") + ".zip"
                                    $bik_url="http://www.cbr.ru/mcirabis/bik/" + $name_db
                                    $temp_db=$Env:TEMP + "\" + $name_db
                                    
                                    
                                    $WebClient = New-Object System.Net.WebClient
                                    $WebProxy = [System.Net.WebRequest]::GetSystemWebProxy()
                                    #$WebProxy.Credentials = New-Object Net.NetworkCredential("user,"","domain.local")
                                    $WebClient.Proxy = $WebProxy
                                    
                                    $WebClient.DownloadFile($bik_url,$temp_db)
                                    if (test-Path $temp_db) {
                                    Unblock-File $temp_db
                                    New-Item -ItemType Directory -Force -Path $rkc_db
                                    (New-object -com shell.application).namespace($rkc_db).CopyHere((new-object -com shell.application).namespace($temp_db).Items(),16)
                                    } else {
                                    Write-Host "Download error"
                                    }

                                    Комментарий


                                    • #19
                                      Всем, кто пользуется программой SpravMFOLoader от АстраСофт.
                                      Если у вас перестали корректно загружаться обновления, добавьте в файл SpravMFOLoader.ini строчку:

                                      BicCatalogURI=http://www.cbr.ru/Queries/FileSource/33411/GetBicCatalog.xml?inline=True

                                      Вчера на сайте ЦБ изменился адрес каталога загрузки.
                                      Последний раз редактировалось cipds; 25.01.2018, 13:03.

                                      Комментарий


                                      • #20
                                        мдя, а полная скачка теперь выглядит так:
                                        http://cbr.ru/vfs/mcirabis/BIK/bik_db_25012018.zip

                                        Комментарий


                                        • #21
                                          Сообщение от cipds Посмотреть сообщение
                                          Всем, кто пользуется программой SpravMFOLoader от АстраСофт.
                                          Если у вас перестали корректно загружаться обновления, добавьте в файл SpravMFOLoader.ini строчку:

                                          BicCatalogURI=http://www.cbr.ru/Queries/FileSource/33411/GetBicCatalog1.xml?inline=True

                                          Вчера на сайте ЦБ изменился адрес каталога загрузки.
                                          А какой версией SpravMFOLoader вы пользуетесь? У нас нет файла SpravMFOLoader.ini и даже если его создать и добавить эту строчку, он её игнорирует.

                                          Комментарий


                                          • #22
                                            rvroman
                                            v1.6.11.47

                                            Комментарий


                                            • #23
                                              cipds

                                              Странно, у нас она же, но даже после создания файла SpravMFOLoader.ini с этой строкой, он лезет на http://cbr.ru/mcirabis/PluginInterfa...icCatalog.aspx

                                              Комментарий


                                              • #24
                                                Если у вас перестали корректно загружаться обновления, добавьте в файл SpravMFOLoader.ini строчку:

                                                BicCatalogURI=http://www.cbr.ru/Queries/FileSource/33411/GetBicCatalog1.xml?inline=True
                                                Точнее
                                                BicCatalogURI=http://www.cbr.ru/Queries/FileSource/33411/GetBicCatalog.xml?inline=True

                                                rvroman
                                                Возможно эта строчка в .ini должна быть в блоке [General]
                                                Примерно так

                                                [General]
                                                BicCatalogURI=http://www.cbr.ru/Queries/FileSource/33411/GetBicCatalog.xml?inline=True

                                                У меня сработало (v1.6.11.47)

                                                Комментарий


                                                • #25
                                                  Сообщение от SasB Посмотреть сообщение
                                                  Точнее BicCatalogURI=http://www.cbr.ru/Queries/FileSource/33411/GetBicCatalog.xml?inline=True
                                                  Да. Прошу прощения. Забыл убрать единичку после тестирования. Исправил в исходном сообщении.

                                                  rvroman

                                                  Попробуйте без ini файла, добавив адрес в виде параметра командной строки:

                                                  Код:
                                                  SpravMFOLoader.exe -BicCatalogURI http://www.cbr.ru/Queries/FileSource/33411/GetBicCatalog.xml?inline=True
                                                  У меня так тоже сработало.

                                                  Комментарий


                                                  • #26
                                                    Да. Банк России изменил расположение своего справочника.
                                                    Теперь, для правильной работы программы SpravMFOLoader необходимо либо создать файл SpravMFOLoader.ini со следующем содержимым:
                                                    Код:
                                                    [General]
                                                    BicCatalogURI=http://www.cbr.ru/Queries/FileSource/33411/GetBicCatalog.xml
                                                    разместив его в папке программы. Если у вас такой файл уже есть, то нужно добавить параметр BicCatalogURI в секцию [General].

                                                    Того же результата можно достичь указав в командной строке запуска программы параметр:
                                                    Код:
                                                    -BicCatalogURI http://www.cbr.ru/Queries/FileSource/33411/GetBicCatalog.xml
                                                    А вообще, если программу запустить с параметром -? то она кое что расскажет о себе, допустимых параметрах запуска и о настройках

                                                    Комментарий


                                                    • #27
                                                      SasB,cipds
                                                      Спасибо, разобрались с настройками.

                                                      Комментарий


                                                      • #28
                                                        Добрый день.
                                                        Может кто в курсе - по какому адресу можно получить xml-каталог файлов со вправочником в формате ED807 ?

                                                        Комментарий


                                                        • #29
                                                          Сообщение от Eugene74 Посмотреть сообщение
                                                          Добрый день.
                                                          Может кто в курсе - по какому адресу можно получить xml-каталог файлов со вправочником в формате ED807 ?
                                                          Где-то вот здесь

                                                          http://www.cbr.ru/PSystem/system_p/#a_44305
                                                          По ссылке "Справочник БИК" начинается закачка актуального архива
                                                          Ну или через ППС

                                                          P/S:Только весь БИК живёт в одном файле XML!

                                                          Комментарий


                                                          • #30
                                                            Сообщение от gptashkin Посмотреть сообщение

                                                            Где-то вот здесь

                                                            http://www.cbr.ru/PSystem/system_p/#a_44305
                                                            По ссылке "Справочник БИК" начинается закачка актуального архива
                                                            Ну или через ППС

                                                            P/S:Только весь БИК живёт в одном файле XML!
                                                            Это понятно, но не подходит. Нужен именно каталог, т.к. размер у него скромный, можно регулярно качать и смотреть - появился новый справочник БИК или нет. Парсить страницу для этих целей не хочется, да и не правильно это.

                                                            Комментарий

                                                            Обработка...
                                                            X