Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.64
lohness
131 / 103 / 5
Регистрация: 24.04.2008
Сообщений: 943
#1

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

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

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

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


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

Давно хочется автоматизировать хотя бы последнюю часть 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. Может я придумываю велосипед и все уже придумано до нас?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2013, 16:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос стоит связываться или это не задачка для начинающих? (C++):

Какие книги стоит купить после "Герберт Шилдт С++ для начинающих"? - C++
Почти дочитал данную книгу, многое узнал. Планирую изучать язык и дальше. Какую книгу желательно приобрести для дальнейшего обучения? ПС....

Низкоуровневость в c++. Стоит или не стоит его учить? - C++
Приветствую! Захотел выучить язык c++, но знакомый сказал, что у него есть стремление к низкоуровневости! Подскажите пожалуйста, можно...

WMI, стоит ли связываться? - Visual Basic
Посмотрел, очень удобная штука, но есть проблема, прога с такой фишкой пойдет далеко не на всех машинах, про 95-98 вообще молчу. Что скажут...

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

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

Стоит ли взять это пк или нет? - Выбор компьютера
Ну в общем вопрос таков, характеристика нормальные? :D Характеристики компьютера: Центральный процессор: AMD Athlon II x2 (2.40 GHz)...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
newbie666
Заблокирован
25.11.2013, 14:39 #31
Цитата Сообщение от lohness Посмотреть сообщение
или когда запрашивается программой?
да когда угодно, можно и когда программа запрашивает, можно в программе, а можно и параметром в командной строке
0x10
2460 / 1632 / 238
Регистрация: 24.11.2012
Сообщений: 4,015
25.11.2013, 14:41 #32
Цитата Сообщение от lohness Посмотреть сообщение
в самой программе или когда запрашивается программой?
Такие параметры обычно передаются как аргументы командной строки. Опционально в самой программе можно сделать значения по умолчанию. Чтобы не возиться с ручной обработкой списка аргументов, можно взять boost program_options.
lohness
131 / 103 / 5
Регистрация: 24.04.2008
Сообщений: 943
25.11.2013, 14:44  [ТС] #33
а есть несложное решение первый десяток нумеровать с нулем спереди, т.е. чтобы было не 1.jpg, а 01.jpg

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

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

Была проблема с отладкой так как там путь другой был.
0x10
2460 / 1632 / 238
Регистрация: 24.11.2012
Сообщений: 4,015
25.11.2013, 14:45 #34
Цитата Сообщение от lohness Посмотреть сообщение
а есть несложное решение первый десяток нумеровать с нулем спереди, т.е. чтобы было не 1.jpg, а 01.jpg
http://en.cppreference.com/w/cpp/io/manip/setfill
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
25.11.2013, 15:45 #35
Цитата Сообщение от lohness Посмотреть сообщение
полазил по настройкам назначив рабочий каталог туда где лежит готовый экзешник теперь и из студии заработало
По умолчанию, файл ищется студией в папке проекта. Разве ошибку не выдавало, когда не ручной ввод имени файла был?

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

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

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

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

Не по теме:

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

lohness
131 / 103 / 5
Регистрация: 24.04.2008
Сообщений: 943
25.11.2013, 17:33  [ТС] #40
Цитата Сообщение от newbie666 Посмотреть сообщение

Не по теме:


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


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

Добавлено через 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());

Пытаюсь добавить замену символов в строке (показано красным)
Код компилится без ошибок, но при запуске программы как только доходит до этого места программа валится
gray_fox
What a waste!
1511 / 1214 / 69
Регистрация: 21.04.2012
Сообщений: 2,550
Завершенные тесты: 3
25.11.2013, 17:40 #41
lohness, а если find npos вернёт?
lohness
131 / 103 / 5
Регистрация: 24.04.2008
Сообщений: 943
25.11.2013, 17:46  [ТС] #42
Цитата Сообщение от gray_fox Посмотреть сообщение
lohness, а если find npos вернёт?
О, точно!
newbie666
Заблокирован
25.11.2013, 17:47 #43
надо во время поиска find_ом проверять, нашёл ли он что - то, а иначе конечно ты сразу за границы вылетаешь, если он ничего не нашёл и итератор соответственно в самый конец влепил:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
string::size_type n = str.find(".jpg");
 
if (n != string::npos)
{
    str.erase(str.begin(), str.begin() + str.find('/') + 2);
    auto it = str.find("XXXL");
    if(it != string::npos)
    {
        str.replace(str.find("XXXL"), 4, "orig");
        it = str.find('\"');
        if(it != string::npos)
            str.erase(str.begin() + str.find('\"'), str.end());
    }       
}
zero50x
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 5
25.11.2013, 18:24 #44
блин просто в каждой строчке проверять есть ли ".jpg" это на любом языке с пол пинка делается)
lohness
131 / 103 / 5
Регистрация: 24.04.2008
Сообщений: 943
26.11.2013, 11:16  [ТС] #45
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
string::size_type n = str.find(".jpg");
                
                if (n != string::npos)
                {
            str.erase(str.begin(), str.begin() + str.find('/') + 2);
                auto it = str.find("XXXL");
                if(it != string::npos)
                {
                str.replace(str.find("XXXL"), 4, "orig");
                it = str.find('\"');
                }       
                auto it1 = str.find("XXL");
                if(it1 != string::npos)
                {
                str.replace(str.find("XXL"), 3, "orig");
                it1 = str.find('\"');
                }       
                
                auto it2 = str.find("XL");
                if(it2 != string::npos)
                {
                str.replace(str.find("XL"), 2, "orig");
                it2 = str.find('\"');
                }       
                
                auto it3 = str.find("L");
                if(it3 != string::npos)
                {
                str.replace(str.find("L"), 1, "orig");
                it3 = str.find('\"');
                }       
 
                auto it4 = str.find("S");
                if(it4 != string::npos)
                {
                str.replace(str.find("S"), 1, "orig");
                it4 = str.find('\"');
                }       
 
                auto it5 = str.find("M");
                if(it5 != string::npos)
                {
                    str.replace(str.find("M"), 1, "orig");
                it5 = str.find('\"');
                
                }
                    str.erase(str.begin() + str.find('\"'), str.end());
    
                
                fout << "<P><IMG SRC=http://" << str << ">" << endl;
                
                }
Добавлено через 16 минут
теперь все размеры картинок приводятся к оригиналу
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.11.2013, 11:16
Привет! Вот еще темы с ответами:

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

Стоит ли покупать Lenovo или это не качественная фирма, если интересует ноутбук? - Компьютерное железо
Ноутбук Lenovo IdeaPad V570

Хорошая книга или сайт по photoshop для начинающих - Photoshop
Посоветуйте хорошую книгу или сайт с подробными мануалами или видеоуроками по photoshop. Уровень - для начинающего юзера.

Выбор бесплатной хорошей литературы или видео уроков для начинающих - Turbo Pascal
Здравствуйте, в этом году начинаю изучать ''Delphi7'' и ''Pascal'', хотел попросить вашей помощи в выборе бесплатной хорошей литературы или...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
26.11.2013, 11:16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru