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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.64
lohness
 Аватар для lohness
124 / 96 / 4
Регистрация: 24.04.2008
Сообщений: 885
22.11.2013, 16:10     стоит связываться или это не задачка для начинающих? #1
Объясню предысторию.
Многие хранят свои картинки на яндексе, затем делают пост вставляя в него уменьшенные копии, причем не всегда есть ссылка на сам альбом где можно взять оригиналы.
Для сохранения оригиналов из альбомов приходится сначала скачивать файл с ссылками, затем править в нем ссылки с копии на оригиналы (благо это несложно), запускать измененный файл, потом сохранять с картинками.
НО яндекс меняет имена файлов на случайные значения поэтому для упорядоченного списка (например страниц книжки) приходится сейчас редактировать файл убирая все не относящееся к именам а затем делать батник который уже переименует имеющиеся файлы.

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


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

Давно хочется автоматизировать хотя бы последнюю часть 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     стоит связываться или это не задачка для начинающих?
Посмотрите здесь:

Что такое __attribute__((packed)),и когда это стоит использовать? C++
Факториал! Для кого-то это легко, а кто-то вообще это не знает! C++
Странная реализация класса - многоточие: стоит ли понимать это буквально? C++
C++ Низкоуровневость в c++. Стоит или не стоит его учить?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
25.11.2013, 17:40     стоит связываться или это не задачка для начинающих? #41
lohness, а если find npos вернёт?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lohness
 Аватар для lohness
124 / 96 / 4
Регистрация: 24.04.2008
Сообщений: 885
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
 Аватар для lohness
124 / 96 / 4
Регистрация: 24.04.2008
Сообщений: 885
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 минут
теперь все размеры картинок приводятся к оригиналу
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.11.2013, 13:09     стоит связываться или это не задачка для начинающих? #46
Что-то ни в первом посте, ни в седьмом, не вижу никаких "XXL"?
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
26.11.2013, 15:22     стоит связываться или это не задачка для начинающих? #47
lohness, у вас компилятор регулярные выражения поддерживает (<regex>)? Было бы попроще...
lohness
 Аватар для lohness
124 / 96 / 4
Регистрация: 24.04.2008
Сообщений: 885
26.11.2013, 15:33  [ТС]     стоит связываться или это не задачка для начинающих? #48
Цитата Сообщение от alsav22 Посмотреть сообщение
Что-то ни в первом посте, ни в седьмом, не вижу никаких "XXL"?
это расширение задачи

чтобы все размеры картинок понимала

сначала был частный случай для картинок оригинального размера

Добавлено через 4 минуты
Цитата Сообщение от gray_fox Посмотреть сообщение
lohness, у вас компилятор регулярные выражения поддерживает (<regex>)? Было бы попроще...
Я не в курсе - пользуюсь 12 студией

Повторюсь - я практически ноль в программировании.
То что знал практически забылось.
Поэтому и вопросы такие задаю

Но с помощью ответов на этом форуме задача решена (осталось красивости навести и удобства добавить)
0x10
29.11.2013, 07:21
  #49

Не по теме:

Цитата Сообщение от lohness Посмотреть сообщение
Но с помощью ответов на этом форуме задача решена (осталось красивости навести и удобства добавить)
А какая цель была? Решить задачу или выучить язык на примере задачи? Если первое, то в теме уже был однострочник для решения...

lohness
 Аватар для lohness
124 / 96 / 4
Регистрация: 24.04.2008
Сообщений: 885
29.11.2013, 07:31  [ТС]     стоит связываться или это не задачка для начинающих? #50
Цитата Сообщение от 0x10 Посмотреть сообщение

Не по теме:


А какая цель была? Решить задачу или выучить язык на примере задачи? Если первое, то в теме уже был однострочник для решения...

50/50

решить задачу (надоело постоянно делать эти действия вручную)
немного разобраться (понятно что на одном примере понять и выучить язык не выйдет) в программировании
Натальяя
0 / 0 / 0
Регистрация: 28.11.2013
Сообщений: 11
29.11.2013, 08:45     стоит связываться или это не задачка для начинающих? #51
помоги пожалуйста, вообще не понимаю как можно с помощью структуры данных стек написать программу в С++, которая распознает арифметические выражения, то есть выводит правильно ли записано выражение или нет. Например если вводить с клавиатуры вот такое выражение (58as+r/(re-s) то программа должна сказать, что оно не правильное так как там не хватает закрывающей скобки (достаточно сказать, что оно не правильно и указать позицию, где встретилась ошибка). Данные выражения состоят из букв (латиница), цифр [0-9], скобок "(" и ")" и арифметических знаков "+","-" и "/"?????
ninja2
 Аватар для ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
29.11.2013, 10:03     стоит связываться или это не задачка для начинающих? #52
Цитата Сообщение от lohness Посмотреть сообщение
1 каким образом убрать из файла все строки не содержащие jpg

2 каким образом обрезать строчку
rel="nofollow"><IMG width="800" height="534" title="" alt="" src="папка1_files/0_cfbf2_39396e7_orig.jpg"
до названия самого файла

3 как добавить символы в начале (REN) и меняющиеся по порядку символы в конце строки (xx.jpg)
Используй регулярные выражения с ними все это делаеться за 5 минут. Библиотеку <regex> посмотри!!!
lohness
 Аватар для lohness
124 / 96 / 4
Регистрация: 24.04.2008
Сообщений: 885
29.11.2013, 15:44  [ТС]     стоит связываться или это не задачка для начинающих? #53
Цитата Сообщение от newbie666 Посмотреть сообщение
УМОРИЛ МЕНЯ ЭТОТ КОД
...

Этот код прекрасно работает если страница сохранена в кодировке 1251
Если ее сохранить UTF-8, то ничего не выходит

Добавлено через 30 минут
т.е. раньше я сохранял в виндовой кодировке файл и потом с ним работал
Теперь же решил сделать чтобы программа сама его скачала, а она скачивает в UTF
Yandex
Объявления
29.11.2013, 15:44     стоит связываться или это не задачка для начинающих?
Ответ Создать тему
Опции темы

Текущее время: 04:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru