Вопрос по импорту новостей

Тема в разделе "Решение проблем с использованием программы", создана пользователем AlexesZ, 23 янв 2012.

  1. AlexesZ

    AlexesZ New Member Пользователи

    Регистрация:
    23 янв 2012
    Сообщения:
    12
    Я заранее извиняюсь за глупый вопрос, но что-то своими силами ответа пока не могу найти.

    Вопрос вот в чем. Есть сайт. Как его спарсить я знаю... Но при парсинге каждая статья ложится в файл с названием article_ххх.txt (вместо "ххх" цифры от 1 до "ххх").
    При обработке полученого материала в инструменте "Обработка и импорт" файлы в левом столбике распологаются по алфавиту, тобиш:
    article_1.txt
    article_11.txt
    article_111.txt
    article_112.txt
    article_113.txt
    .......
    article_х.txt
    article_хх.txt
    article_ххх.txt

    Ну и т.д.
    Что приводит к неправильной сортировке статей на сайте. (т.е. xml файл формируется именно так, не попорядку)
    Можно ли как то сделать сортировку правильную или как то по другому решить этот вопрос.
    Заранее Спасибо.
     
    Последнее редактирование: 23 янв 2012
  2. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Здравствуйте.
    Вы можете назначить имена документам при парсинге макросом шаблона вывода DOCSNAMES_[INT_ID].txt (Ссылки недоступны для гостей) - пронумерует документы по порядку (если поставить 1 поток).
    Но тут загвоздка в следующем, Windows воспринимает названия имен файлов не как числовые, а как строковые. То есть 7777 будет стоять раньше, чем 91.
    Это только один нюанс, второй заключается в том, что программа при создании файла импорта в Wordpress перемешивает статьи!
     
  3. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Если вы сильны в PHP+MySQL попробуйте постить новости в базу прямо при парсинге:
    Ссылки недоступны для гостей
    Ссылки недоступны для гостей
     
  4. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Можно еще присваивать файлам (при парсинге) имена, которые будут браться из текстового файла на диске.
    Код:
    DOCSNAMES_<FILE=C:\111.txt>.txt
     
  5. AlexesZ

    AlexesZ New Member Пользователи

    Регистрация:
    23 янв 2012
    Сообщения:
    12
    Это можно убать или лучше научится напрямую парсить?
     
  6. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Извините, я ошибся, перемешивает только даты (если используете отложенную публикацию). А в файл импорта выстраивает статьи согласно списку в программе.
     
  7. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Через "добавить файлы используя диалог системы" вы сами прямо в диалоге можете порядок менять (изменить тип упорядочивания), но там ограничение в 150 файлов (ограничение OpenFileDialog).
     
  8. AlexesZ

    AlexesZ New Member Пользователи

    Регистрация:
    23 янв 2012
    Сообщения:
    12
    Ясно... спасибо большое...будем пробывать...
     
  9. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Вот нагенерировал вам список имен файлов.

    Список выстроен в том порядке, в котором он будет отображаться при добавлении файлов (через Ctrl+O).

    Чтобы при парсинге документы назывались согласно этому списку поставьте количество потоков = 1 и добавьте в шаблон вывода следующую строку:
    Код:
    DOCSNAMES_<FILE=C:\names_list.txt>.txt
    Где C:\names_list.txt - прикрепленный к этому сообщению файл.
     

    Вложения:

    • names_list.rar
      Размер файла:
      134,7 КБ
      Просмотров:
      5
  10. AlexesZ

    AlexesZ New Member Пользователи

    Регистрация:
    23 янв 2012
    Сообщения:
    12
    Спасибо... я понял...
    Но названия файлов я бы сделал в другом порядке
    Пример:
    000000001
    000000002
    000000003
    000000004
    000000005
    000000006
    000000007
    000000008
    000000009
    000000010
    000000011
    И т.д.

    Правда еще не пробывал, но по аналогиии с прогами под винлу (даже которые я пишу) работает именно так...

    Но все равно ОГРОМНОЕ СПАСИБО за прогу... это единственая прога, о приобретении которой я не жалею ни капли...
     
  11. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Спасибо на добром слове! Обращайтесь!
     
  12. Valiks

    Valiks New Member Супер Модератор

    Регистрация:
    18 янв 2012
    Сообщения:
    554
    Адрес:
    Всё время в скэйпе
    Я решаю все эти задачи проще. Не стоит мучать CD там, где нет в этом особой нужды. Вот порядок действий

    1. Спарсиваю нужный контент в нужную папку

    2. Иду в ТоталКоммандер, а там, файлы будут отображать не как

    article_1.txt
    article_11.txt
    article_111.txt
    article_112.txt
    article_113.txt

    а как

    article_1.txt
    article_2.txt
    article_3.txt
    article_.....txt
    article_10.txt
    article_11.txt
    article_12.txt
    article_13.txt и т.д.

    Что делать дальше?

    3. В том же Тотал коммандере, выделить файлы и использовать "Переименование". Тут есть два варианта

    а) тупо задать нумерацию, выбрав в счётчике числительное с нужным количеством цифр, чтобы получить 0001, 0002 и так далее, и проставить их в конце имени, или

    б) если хочется, чтобы всё выглядело красивенько,- используем одновременно регулярное выражение, которое удалит существующие цифры
     
  13. AlexesZ

    AlexesZ New Member Пользователи

    Регистрация:
    23 янв 2012
    Сообщения:
    12
    Спасибо...

    А вот про это можно поподробней...
     
  14. Valiks

    Valiks New Member Супер Модератор

    Регистрация:
    18 янв 2012
    Сообщения:
    554
    Адрес:
    Всё время в скэйпе
    Я не настолько силён в регулярках, надо ковыряться. Этот инструмент находится там же в "Переименовании", справа "Поиск-замена" называется. Вот, нашёл вариант. Суть в том, чтобы найти что-то "особенное" и задать (в нашем случае), чтобы программа удалила ненужное, оставив нужное. Могу показать пример. Формула такая (лучше картинкой, чтобы меньше объяснять):

    Ссылки недоступны для гостей

    Если работали с регулярками, должно быть ясно, что будет происходить.

    P.S. В принципе, тут регулярка даже и не нужна, если в названии всего одно слово, и оно повторяется. Достаточно задать диапазон букв, которые должны остаться. А вот если имена файлов разные,- без регулярки не обойтись. Там всё немного по другому будет
     
    Последнее редактирование: 27 янв 2012
  15. AlexesZ

    AlexesZ New Member Пользователи

    Регистрация:
    23 янв 2012
    Сообщения:
    12
    Спасибо большое... попробую
     
  16. Valiks

    Valiks New Member Супер Модератор

    Регистрация:
    18 янв 2012
    Сообщения:
    554
    Адрес:
    Всё время в скэйпе
    Папробуй. Надеюсь, отпишешься?
     
  17. AlexesZ

    AlexesZ New Member Пользователи

    Регистрация:
    23 янв 2012
    Сообщения:
    12
    да... как сделаю - отпишусь...
     
  18. AlexesZ

    AlexesZ New Member Пользователи

    Регистрация:
    23 янв 2012
    Сообщения:
    12
    Доброго времени суток.

    Конечно извиняюсь, что так поздно, но что то раньше руки не дошли.

    И так... Если Вы (как и Я) испытываете острую проблему с неправильной последовательностью добавления новостей, т.е. в CD файлы добавляются следующим образом:

    [​IMG]

    Ну есть программисты, которые на это не обращают внимания, но такими доморощенными "хацкерами" как Я, есть вот такое решение - это поставить перед цифрой в названии файла несколько нулей, т.е файл вида article_1.txt сделать article_0001.txt. Для этого можно сделать следующее:

    1. Запускаете Total Commander (описывать что это такое я не буду :D).
    2. Заходите в папку, куда Вы спарсили контент.

    [​IMG]

    3. Выделяете все файлы и выбираете Файл -> Груповое переивенование.
    Или нажимаете комбинацию клавиш Ctrl+M

    [​IMG]

    продолжение дальше...
     

    Вложения:

    • 0.PNG
      0.PNG
      Размер файла:
      34,2 КБ
      Просмотров:
      45
    • 1.PNG
      1.PNG
      Размер файла:
      27,7 КБ
      Просмотров:
      45
    • 2.png
      2.png
      Размер файла:
      16 КБ
      Просмотров:
      89
    • 4.PNG
      4.PNG
      Размер файла:
      32,8 КБ
      Просмотров:
      45
    • 5.PNG
      5.PNG
      Размер файла:
      39,5 КБ
      Просмотров:
      43
    Последнее редактирование: 2 мар 2012
  19. AlexesZ

    AlexesZ New Member Пользователи

    Регистрация:
    23 янв 2012
    Сообщения:
    12
    4. В появившемся окне в пункте "Маска для: имени файла" пишем article_[C], а в параметрах счетчика ставите "Начинать с: 1", "Шаг: 1", "Количество цифр: ставите на 1 больше количества цифр в названии вашего последнего файла (или больше чем на 1)" (т.е. если у Вас 245 файлов то ставите 4).

    В колонке "Новое имя" Вы сразу увидите результат.

    [​IMG]

    5. Нажимаем кнопку "Выполнить" и, после выполнения, "Закрыть".
    И Ваши файлы будут переименованы.

    [​IMG]


    Итог:
    Загрузив такие файлы в CD, они у Вас будут идти уже попорядку.

    [​IMG]

    Спасибо за внимание.
    Буду рад, если кому помог.


    P.S.: С регулярными выражениями сделаю, и тоже распишу, как это все делается.
     
    Последнее редактирование: 2 мар 2012
  20. Valiks

    Valiks New Member Супер Модератор

    Регистрация:
    18 янв 2012
    Сообщения:
    554
    Адрес:
    Всё время в скэйпе
    Спасибо за обстоятельное объяснение, но Много лишнего и неправильного.

    1. В "Маске имени файла" нет необходимости зазря задавать расширение файла. Зачем? Чтобы потом его удалить?

    2. Если есть однотипные наименования, то можно и другое решение задать, через [N #-#] диапазон. Нужно выбрать только нужную часть имени, в нашем случае article_, к нему приставить счётчик ([C]) и задать необходимое количество цифр.

    Через регулярное выражение всё намного проще, я чуть выше показал формулу. Или есть желание предложить более эффективную формулу?
     

Поделиться этой страницей