Представляю вашему вниманию программу для сортировки аккаунтов имеющих формат: e-mail;pass Описание: Программа берет файл с акками и начинает в нем проверять имейлы на правильность, а именно проверяется: - наличие символа "@". - наличие символа точки после символа "@" - наличие русских символов в адресе Программа создает файлы: bad.txt - здесь все попавшие под фильтр акки rus.txt - для тех кто хочет почитать какой он хороший))) здесь акки с русскими буквами))) даже можно сказать бывают целые предложения))) good.txt - все акки не попавшие под отсеивание, они то нам и нужны для дальнейшей работы))) stat.txt - статистика по количеству исходных, хороших, плохих и акков с русскими символами! Ссылка:xtezy_4eker_1.0 PS: Отзывы по программке сюда!!! от плюсов не откажусь!!!
вот примеры акков из файла: bad.txt meil: kristinaprudnikva@rambler/ri pass: кристя meil: luvr95@mailru pass: 2578242 meil: murik-19892mail.ru pass: 10101989 rus.txt meil: убейс@обстену.ru pass: 123456789 meil: [email protected]пиончик pass: meil: иди_на_***@mail.ru pass: отсоси stat.txt Аккаунтов в исходном файле : "all.txt" : 37400 аккаунты с истинными адресами : 36124 , с ложными 1276 из ложных: 1)адрес в неверном формате : 1172 2)адрес содержит русские буквы но имеет верный формат : 104
Если кому понравится прога могу сделать чтоб акки в формате: e-mail(двоеточие)pass : можно было сортировать!!! тут просто как кому удобнее! если нужен код, то могу выложить!(код на си++)!
буду очень признателен... а может ли твоя прога если акки в кучу свалены, выдрать и распределить по строчкам?
в кучу свалены, типа на одной строке по несколько акков?? между ними хотя бы пробелы есть??? пример покажи!!!
Можно сделать парсер с логов? в логах акки имеют такой вид Code: UID:DE81DFA1BCBFAD96 Сайт: http://vkontakte.ru/ [email protected] pass=1351991 UID:172F05027D750671 Wand формы Сайт: http://vkontakte.ru/ [email protected] pass=1234567sss Сайт: http://vkontakte.ru/login.php [email protected] pass=130891ааа UID:8FB1E47E02706C0B Name: http://vkontakte.ru/login.php Values: [email protected] 13elgee Сайт: http://vkontakte.ru/reg0 first_name=Наська last_name=**** [email protected] pass=789456 reg_code=7pdsg country=2 uni_city=4 other_city_name=Название города school1=366 school1_type=0 s_class1=3 s_start1=9 s_finish1=3 s_grad1=3 university=0 other_university_name=Название города other_faculty_name=Название факультета other_chair_name=Название кафедры
Вот собственно код программы: Code: #include <iostream> #include <fstream> #include <stdlib.h> using namespace std; //без собаки в bad.txt //с собакой и английским + русским текстом в rus.txt //с собакой и только с английским в good.txt int max_lenght; int counts_input , counts_good , counts_bad , counts_rus ; int read_counts(char *f_name) { int n=0; char temp[10000], simb; ffopen: ifstream in_file; in_file.open(f_name); if (!in_file){ cout<<"File is not found"<<endl; cout<<"Input correct name the input text file : "; cin>>f_name; goto ffopen; } while(in_file.get(simb)) { in_file.getline(temp,10000); if (strlen(temp) > max_lenght) max_lenght = strlen(temp); n++; } return n; } int main() { int i , j ; int good = 0 , bad = 0 , bad1 = 0 , bad2 = 0 ; int position_separator , position_dog , position_point, lenght_meil ; char *pointer_separator, *pointer_dog , *pointer_point ; char f_input_name[100] , **input_pass , **input_meil ; char temp[10000]; max_lenght=0; FILE *finput , *fgood , *fbad , *frus , *fstat ; cout<<"Input name the input text file : "; cin>>f_input_name; counts_input = read_counts(f_input_name); input_pass = new char *[counts_input]; input_meil = new char *[counts_input]; for ( i = 0 ; i < counts_input ; i++ ){ input_pass[i]= new char [max_lenght+1]; input_meil[i]= new char [max_lenght+1]; } ifstream in_file; in_file.open(f_input_name); for ( i = 0 ; i < counts_input ; i++ ){ in_file.getline(temp,10000); while(!(strchr(temp, ';')))in_file.getline(temp,10000); pointer_separator = strchr(temp, ';'); position_separator = pointer_separator - temp; strncpy(input_meil[i] , temp , position_separator); strcpy(input_meil[i]+ position_separator, ""); strcpy(input_pass[i] , temp + position_separator+1); } fstat = fopen ( "stat.txt", "w"); fgood = fopen ( "good.txt", "w"); fbad = fopen ( "bad.txt", "w"); frus = fopen ( "rus.txt", "w"); for( i =0 ; i < counts_input ; i++ ){ lenght_meil = strlen(input_meil[i]); //------------------------bad.txt if(!strrchr(input_meil[i] , '@')){ fprintf (fbad , "meil: %s\npass: %s\n\n" , input_meil[i] , input_pass[i]); bad++; bad1++; continue; } pointer_dog = strrchr(input_meil[i], '@'); position_dog = pointer_dog - input_meil[i]; pointer_point = strrchr(input_meil[i], '.'); position_point = pointer_point - input_meil[i]; if ( pointer_dog > pointer_point ){ fprintf (fbad , "meil: %s\npass: %s\n\n" , input_meil[i] , input_pass[i]); bad++; bad1++; continue; } //--------------------end bad.txt //------------------------rus.txt for( j = 0 ; j < lenght_meil ; j++ ){ // ascii = (-64 - -1)||(-88)||(-72) if (((input_meil[i][j] > -65)&&(input_meil[i][j] < 0))||(input_meil[i][j] == -88)||(input_meil[i][j] == -72)){ fprintf (frus , "meil: %s\npass: %s\n\n",input_meil[i],input_pass[i]); bad++; bad2++; break; } } //--------------------end rus.txt //-----------------------good.txt if ( j == lenght_meil ){ fprintf (fgood , "%s;%s\n",input_meil[i],input_pass[i]); good++; } //-------------------end good.txt } //-----------------------stat.txt fprintf (fstat , "Аккаунтов в исходном файле : \"%s\" : %d\n\n" , f_input_name , counts_input); fprintf (fstat , "аккаунты с истинными адресами : %d , с ложными %d \n", good , bad); fprintf (fstat , "из ложных:\n 1)адрес в неверном формате : %d \n 2)адрес содержит русские буквы но имеет верный формат : %d \n", bad1 , bad2); //-------------------end stat.txt fclose(frus); fclose(fbad); fclose(fgood); return 0; } Если кому будет интересно, от плюсов не откажусь!
потом позже когда уже написал, пожалел что не сделал. киллер дублером пользуюсь, но он сволочь медленный нафик... может в будущем доделаю!!!
Вот сделал чтоб прога работала с двоеточием в качесте разделителя, вместо точки с запятой! скачиваем здесь
Залил, здесь оба варианта: точка с запятой двоеточие А по поводу удаления повторов, используйте вот эту прогу, очень хорошая и простая: KeyWordKeeper Мануальчик по программе. Запускаем сначала KeyWordKeeper: 1) Нажимаем элементарная чистка. добавляем файл, нажимаем удалить. очищенный файл помещается в указанную вами папку 2)теперь нажимаем удалить повторы. и добавляем уже очищенный файл. Все. теперь прогу можно закрывать. Дальше работа с моей софтиной))) PS: от плюсов не откажусь
Че не пашет? хотя бы проблему описал. название файла на латинице должно быть. примеры из твоего файла кинь.