Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.63/16: Рейтинг темы: голосов - 16, средняя оценка - 4.63
279 / 206 / 22
Регистрация: 24.04.2008
Сообщений: 1,398
1

стоит связываться или это не задачка для начинающих?

22.11.2013, 16:10. Показов 3245. Ответов 52
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Объясню предысторию.
Многие хранят свои картинки на яндексе, затем делают пост вставляя в него уменьшенные копии, причем не всегда есть ссылка на сам альбом где можно взять оригиналы.
Для сохранения оригиналов из альбомов приходится сначала скачивать файл с ссылками, затем править в нем ссылки с копии на оригиналы (благо это несложно), запускать измененный файл, потом сохранять с картинками.
НО яндекс меняет имена файлов на случайные значения поэтому для упорядоченного списка (например страниц книжки) приходится сейчас редактировать файл убирая все не относящееся к именам а затем делать батник который уже переименует имеющиеся файлы.

Даже если есть прямая ссылка на альбом, то там можно скачать его целиком через какой-нибудь менеджер закачек целиком, но, опять же, названия будут кучей символов.


Вот такая понимашь загогулина

Давно хочется автоматизировать хотя бы последнюю часть html -> bat , которая отнимает львиную часть времени.

В идеале, конечно, хотелось бы просто скармливать программе ссылку, а на выходе получать файло-картинки с номерами по порядку в соответствующей папке.

Опыт программирования очень небольшой С на 286 (лет 20 назад в институте) поэтому думаю, что полностью задачу не потяну (вообще не в курсе как заставить общаться прогу с инетом).

А вот работу со строками наверное смогу попробовать.

Как я понимаю надо

1. убрать из файла все строки где нет слова orig.jpg

останутся строки такого вида:
rel="nofollow"><IMG width="800" height="534" title="" alt="" src="папка1_files/0_cfbf2_39396e7_orig.jpg"

2. укоротить строчки до прямых ссылок на картинки

0_cfbf2_39396e7_orig.jpg

4. далее добавить в каждой строчке с

3. далее добавить в каждой строчке слева REN справа xx.jpg

ren 0_cfbf2_39396e7_orig.jpg 01.jpg
ren 0_cfbf3_931d3197_orig.jpg 02.jpg
ren 0_cfbf4_22ba9201_orig.jpg 03.jpg
ren 0_cfbf5_12b53a87_orig.jpg 04.jpg


4. далее сохранить это в bat-файл, который и переименует мои файлы

Куда смотреть в первую очередь

P.S. Может я придумываю велосипед и все уже придумано до нас?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.11.2013, 16:10
Ответы с готовыми решениями:

WMI, стоит ли связываться?
Посмотрел, очень удобная штука, но есть проблема, прога с такой фишкой пойдет далеко не на всех...

Стоит ли скрывать robots txt или нет? Если стоит, то как это надо правильно сделать?
Ребят, если стоит скрывать роботс, то скажите как это сделать, особо толком ничего не нашел в...

Стоит ли связываться с ASP.NET MVC ?
Извините за немного провокационную тему, но не нашел более подходящего форума. В общем есть...

Дайте плиз рецензию, стоит ли связываться?
стоит ли иметь как раб. инструменты программы AddSite Pro &amp; Semonitor? на много они хуже, слабее...

52
alsav22
23.11.2013, 05:08     стоит связываться или это не задачка для начинающих?
  #21

Не по теме:

Цитата Сообщение от OhMyGodSoLong Посмотреть сообщение
А давайте сыграем в гольф?
Такой хоккей нам не нужен...:)

0
279 / 206 / 22
Регистрация: 24.04.2008
Сообщений: 1,398
23.11.2013, 08:51  [ТС] 22
Цитата Сообщение от Cra3y Посмотреть сообщение

Не по теме:

Эм... А зачем создавать батник, если средствами стандартных библиотек можно сразу переименовать?

Так я в начале и спрашивал про это тоже.
Оптимально ввести только ссылку а прога сама уже будет вытаскивать оригиналы и переименовывая их складывать в нужную папку
Но так как в программировании не силен то ограничился задачей, которую, как мне кажется, смогу понять-осилить.
тем более что на яндексе есть нюансы - не всегда имеются файлы xxxxx_orig.jpg иногда максимальное разрешение xxx_XXXL.jpg
т.е. еще надо вводить доп проверки на наличие оригиналов.ну и добавлять GUI для красоты и удобства

так что прога станет довольно навороченной и явно не для новичков кмк


Начну пока с понимания более-менее простой конструкции
0
0x10
23.11.2013, 09:34
  #23

Не по теме:

Цитата Сообщение от lohness Посмотреть сообщение
так что прога станет довольно навороченной и явно не для новичков
Да нет тут ничего сверхъестественного. сделать запрос на указанный урл, стянуть html, распарсить, получить урлы изображений, сохранить под новыми именами. Просто писать такое лучше с использованием более высокоуровневых инструментов.

0
279 / 206 / 22
Регистрация: 24.04.2008
Сообщений: 1,398
25.11.2013, 13:15  [ТС] 24
Пытаюсь вместо

ifstream fin("input.html");

сделать ручной ввод имени файла:


char filename[25];
cout << "\n Введите имя файла (input.html): ";
cin >> filename;
cout <<
"Посмотрите на Ваши данные : ";
cout << filename;
cout <<
"\n";




ifstream fin(filename);
if (!fin) cout << "Ошибка исходного файла!" << endl;
.......

в результате все время ошибка исходного файла

что делаю не так?
0
Заблокирован
25.11.2013, 13:24 25
C++
1
2
3
4
5
6
7
8
9
10
11
std::string filename;
std::cout << "\n Введите имя файла (input.html): ";
std::cin >> filename;
std::cout << "Посмотрите на Ваши данные : "; 
std::cout << filename << std::endl;
std::fstream fs(filename.c_str(), std::ios::in);
if(fs.is_open())
{
    //делаем что надо
    fs.close();
}
Добавлено через 19 секунд
так надо
0
279 / 206 / 22
Регистрация: 24.04.2008
Сообщений: 1,398
25.11.2013, 13:33  [ТС] 26
заработало когда вошел в папку с готовым экзешником, а не работает из компилятора

ну и char сменил на string
0
Заблокирован
25.11.2013, 13:34 27
Цитата Сообщение от lohness Посмотреть сообщение
заработало когда вошел в папку с готовым экзешником, а не работает из компилятора
что значит из компилятора?
0
279 / 206 / 22
Регистрация: 24.04.2008
Сообщений: 1,398
25.11.2013, 13:51  [ТС] 28
в студии по F5

полазил по настройкам назначив рабочий каталог туда где лежит готовый экзешник теперь и из студии заработало

Добавлено через 1 минуту
пол дня потратил на то чтобы понять почему правильный код не работал
0
Заблокирован
25.11.2013, 13:58 29
Цитата Сообщение от lohness Посмотреть сообщение
пол дня потратил на то чтобы понять почему правильный код не работал
можно вводить полный путь к файлу
0
279 / 206 / 22
Регистрация: 24.04.2008
Сообщений: 1,398
25.11.2013, 14:36  [ТС] 30
в самой программе или когда запрашивается программой?
0
Заблокирован
25.11.2013, 14:39 31
Цитата Сообщение от lohness Посмотреть сообщение
или когда запрашивается программой?
да когда угодно, можно и когда программа запрашивает, можно в программе, а можно и параметром в командной строке
0
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
25.11.2013, 14:41 32
Цитата Сообщение от lohness Посмотреть сообщение
в самой программе или когда запрашивается программой?
Такие параметры обычно передаются как аргументы командной строки. Опционально в самой программе можно сделать значения по умолчанию. Чтобы не возиться с ручной обработкой списка аргументов, можно взять boost program_options.
0
279 / 206 / 22
Регистрация: 24.04.2008
Сообщений: 1,398
25.11.2013, 14:44  [ТС] 33
а есть несложное решение первый десяток нумеровать с нулем спереди, т.е. чтобы было не 1.jpg, а 01.jpg

Добавлено через 2 минуты
Цитата Сообщение от newbie666 Посмотреть сообщение
да когда угодно, можно и когда программа запрашивает, можно в программе, а можно и параметром в командной строке

Сейчас программа ищет в том каталоге где и сама лежит.
В принципе меня это устраивает

Была проблема с отладкой так как там путь другой был.
0
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
25.11.2013, 14:45 34
Цитата Сообщение от lohness Посмотреть сообщение
а есть несложное решение первый десяток нумеровать с нулем спереди, т.е. чтобы было не 1.jpg, а 01.jpg
http://en.cppreference.com/w/cpp/io/manip/setfill
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
25.11.2013, 15:45 35
Цитата Сообщение от lohness Посмотреть сообщение
полазил по настройкам назначив рабочий каталог туда где лежит готовый экзешник теперь и из студии заработало
По умолчанию, файл ищется студией в папке проекта. Разве ошибку не выдавало, когда не ручной ввод имени файла был?

Добавлено через 48 секунд
Цитата Сообщение от lohness Посмотреть сообщение
а есть несложное решение первый десяток нумеровать с нулем спереди, т.е. чтобы было не 1.jpg, а 01.jpg
Если не секрет, для чего такое нужно?
0
279 / 206 / 22
Регистрация: 24.04.2008
Сообщений: 1,398
25.11.2013, 15:50  [ТС] 36
Цитата Сообщение от alsav22 Посмотреть сообщение
По умолчанию, файл ищется студией в папке проекта. Разве ошибку не выдавало, когда не ручной ввод имени файла был?

Добавлено через 48 секунд

Если не секрет, для чего такое нужно?
некрасиво когда идет так:
1
2
3
4
5
6
7
8
9
10
11
.....

опять же у некоторых вьюверов просмотр косеет при такой нумерации т.е. после первого покажет десятый
0
Заблокирован
25.11.2013, 15:56 37
ну ты в строку загоняй данные - в std::string, далее проверяй, если size() стринга == 1. тогда insert(0, "0");
0
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
25.11.2013, 16:06 38
Цитата Сообщение от newbie666 Посмотреть сообщение
ну ты в строку загоняй данные - в std::string, далее проверяй, если size() стринга == 1. тогда insert(0, "0");
Эм... Как бы я выше привел ссылку на прямое решение.
0
newbie666
25.11.2013, 16:09
  #39

Не по теме:

Цитата Сообщение от 0x10 Посмотреть сообщение
Эм... Как бы я выше привел ссылку на прямое решение.
ok - не заметил, эта тема просто уже на пустом месте раздулась неимоверно - даже читать то что сверху уже лень :D

0
279 / 206 / 22
Регистрация: 24.04.2008
Сообщений: 1,398
25.11.2013, 17:33  [ТС] 40
Цитата Сообщение от newbie666 Посмотреть сообщение

Не по теме:


ok - не заметил, эта тема просто уже на пустом месте раздулась неимоверно - даже читать то что сверху уже лень :D


ОК - на новые вопросы буду заводить новые темы

Добавлено через 1 час 21 минуту
напоследок в этой же теме спрошу

string::size_type n = str.find(".jpg");

if (n != string::npos)
{
str.erase(str.begin(), str.begin() + str.find(
'/') + 2);
str.replace(str.find(
"XXXL"), 4, "orig");
str.erase(str.begin() + str.find(
'\"'), str.end());

Пытаюсь добавить замену символов в строке (показано красным)
Код компилится без ошибок, но при запуске программы как только доходит до этого места программа валится
0
25.11.2013, 17:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.11.2013, 17:33
Помогаю со студенческими работами здесь

Мусор в движке реальность или миф, стоит удалить и поставить заново, или никак это не влияет
Друзья, подскажите пожалуйста, только без догадок, а те кто реально знает и понимает о чем речь! ...

Стоит ли взять это пк или нет?
Ну в общем вопрос таков, характеристика нормальные? :D Характеристики компьютера: Центральный...

Стоит брать это Пк или по критикуйте конфигу
Мат.плата Gigabyte GA-Z68P-DS3 Soc-1155 iZ68 Процессор Core i5-3450 OEM &lt;3.10GHz, 6Mb,...

Задачка для начинающих
На базе 1с7.7 нужно вывести произвольное число, представляющее собой массу, в виде, например,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru