Archive for 2월 2014

[슬픈이야기] 국내 싸이월드가 문 닫는줄 알고 이 새벽에 …

저 에게는 특별한 싸이월드 입니다.

많은 분들과 소통을 시작한 사이트 이며,

저를 품절남으로 만들어준 사이트 이기도 합니다.

그런 싸이 월드가 문을 닫는다니요.. ㅠㅠ 말도안되 하면서

자세히 검색 안해보고

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
public class BangMyungCyMain {

public BangMyungCyMain() {

}

public static void main(String[] args) throws Exception{
String tid = “여러분의 pid”; // 여기를 본인의 tid로 고치셔야 합니다.
//저장할 경로 – 미리 만든다. 없으면 자동생성한다.
String pathFolder = “c:\\cyBang\\”;

boolean success = (new File(pathFolder)).mkdirs();
if (!success) {

}

//싸이 주소 형식 2005년 이전
/*
http://minihp.cyworld.com/pims/visitbook/card_visitbook_list.asp?tid=25542235&search_type=0&search_keyword=

http://minihp.cyworld.com/pims/visitbook/secret_visitbook_list.asp?tid=25542235&search_type=0&search_keyword=

http://minihp.cyworld.com/pims/visitbook/2005_visitbook_list.asp?tid=25542235&search_type=0&search_keyword=

http://minihp.cyworld.com/pims/visitbook/2005_visitbook_list.asp?tid=25542235&ccpage=2&search_keyword=&search_type=0 // 2페이지 이후
*/

int tryTime2 = 3;
int page2 = 1;

int maxPageCount2 = 1000; // 일단 알아서 조정 되게 해야 겠죠.. ㅜㅜ
int trytry2 = 0;
System.out.println(“2005년 이전 시작”);
for ( page2 = 1;page2<=1000;page2++){
if (page2%100 == 0){
System.out.println(page2);
}

String urlString2 = “http://minihp.cyworld.com/pims/visitbook/2005_visitbook_list.asp?tid=”+tid+”&ccpage=”+page2+”&search_keyword=&search_type=0″;

URL cyBang = new URL(urlString2);
URLConnection cb2 = cyBang.openConnection();
BufferedReader in2 = new BufferedReader(new InputStreamReader(cb2.getInputStream()));
String inputLine2;

// 화면을 불러온다. html
String htmlString2 = null;
while ((inputLine2 = in2.readLine()) != null){
// System.out.println(inputLine);
// System.out.println(year + ” … “);
htmlString2 +=inputLine2;
}
in2.close();

//여기서 파일로 떨군다. html => 형식 cy+”-“+year+”-“+pageNo.html ex>cy-2013-1.html

BufferedWriter writer = null;
//create a temporary file
// String timeLog = new SimpleDateFormat(“yyyyMMdd_HHmmss”).format(Calendar.getInstance().getTime());
String fileNameString = “cy-“+2005+”-Friendly-“+page2+”.html”;
File cybangObjfile = new File(pathFolder + fileNameString);

// This will output the full path where the file will be written to…
// System.out.println(cybangObjfile.length());

 

if ( htmlString2.length() > 17000 ) {
writer = new BufferedWriter(new FileWriter(cybangObjfile));
writer.write(htmlString2);
writer.close();
}else{
trytry2 ++;
if ( trytry2 > 3 ){
break;
}
}
}// page for close

System.out.println(“2005년 이전 다정하게 끝”);
// 2006년 이후
//http://minihp.cyworld.com/pims/visitbook/visitbook_list.asp?tid=25542235&urlstr=bang&list_type=1&view_type=1&search_year=2013
//http://minihp.cyworld.com/pims/visitbook/visitbook_list.asp?tid=25542235&intpage=38&list_type=1&search_year=2006&search_type=0&search_keyword=
//http://minihp.cyworld.com/pims/visitbook/visitbook_list.asp?intpage=1&tid=25542235&list_type=1&search_year=2006&search_type=0&search_keyword=
int tryTime = 3;
int page = 1;
int year = 2014;
int maxPageCount = 500; // 일단 알아서 조정 되게 해야 겠죠.. ㅜㅜ
for (year = 2013;year>=2006;year–){
int trytry = 0;
System.out.println(year+” 년 시작 !! “);
for ( page = 1;page<=maxPageCount;page++){

String urlString = “http://minihp.cyworld.com/pims/visitbook/visitbook_list.asp?tid=”+tid+”&intpage=”+page+”&urlstr=bang&list_type=1&view_type=1&search_year=”+year;
URL cyBang = new URL(urlString);
URLConnection cb = cyBang.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(cb.getInputStream()));
String inputLine;

// 화면을 불러온다. html
String htmlString = null;
while ((inputLine = in.readLine()) != null){
// System.out.println(inputLine);
// System.out.println(year + ” … “);
htmlString +=inputLine;
}
in.close();

//여기서 파일로 떨군다. html => 형식 cy+”-“+year+”-“+pageNo.html ex>cy-2013-1.html

BufferedWriter writer = null;
//create a temporary file
// String timeLog = new SimpleDateFormat(“yyyyMMdd_HHmmss”).format(Calendar.getInstance().getTime());
String fileNameString = “cy-“+year+”-“+page+”.html”;
File cybangObjfile = new File(pathFolder + fileNameString);

// This will output the full path where the file will be written to…
// System.out.println(cybangObjfile.length());

 

if ( htmlString.length() > 19000 ) {
writer = new BufferedWriter(new FileWriter(cybangObjfile));
writer.write(htmlString);
writer.close();
}else{
trytry ++;
if ( trytry > 3 ){
break;
}
}
}// page for close
}// year for close

//폴더내에 부적절한 파일 걸러내는 로직

File folder = new File(pathFolder);
File[] listOfFiles = folder.listFiles();

for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) {
// System.out.println(“File ” + listOfFiles[i].getName());

File cybangObjfile = new File(pathFolder + listOfFiles[i]);
if ( cybangObjfile.length() <= 21000.0){
// System.out.println(“Delete empty File.”);
if ( cybangObjfile.delete() ){
System.out.println(“Delete empty File.”);
}
}

} else if (listOfFiles[i].isDirectory()) {
System.out.println(“Directory ” + listOfFiles[i].getName());
}
}

 

// if(cybangObjfile.exists()){

// double bytes = cybangObjfile.length();
// double kilobytes = (bytes / 1024);
// double megabytes = (kilobytes / 1024);
// double gigabytes = (megabytes / 1024);
// double terabytes = (gigabytes / 1024);
// double petabytes = (terabytes / 1024);
// double exabytes = (petabytes / 1024);
// double zettabytes = (exabytes / 1024);
// double yottabytes = (zettabytes / 1024);

// System.out.println(“bytes : ” + bytes);
// System.out.println(“kilobytes : ” + kilobytes);
// System.out.println(“megabytes : ” + megabytes);
// System.out.println(“gigabytes : ” + gigabytes);
// System.out.println(“terabytes : ” + terabytes);
// System.out.println(“petabytes : ” + petabytes);
// System.out.println(“exabytes : ” + exabytes);
// System.out.println(“zettabytes : ” + zettabytes);
// System.out.println(“yottabytes : ” + yottabytes);

// if ( kilobytes <=17.0 ){
// File file = new File(pathFolder + fileNameString);
//
// if(file.delete()){
// System.out.println(file.getName() + ” is deleted! 16KB is nothing…”);
// }else{
// System.out.println(“Delete operation is failed.”);
// }
// }
// }else{
// System.out.println(“File does not exists!”);
// }

System.out.println(” 2006년 이후 끝!!!”);
}
}

우선 이 뻘짓부터 해 놓고 보니.. 해외의 글로벌 싸이월드 문닫는 소리였네요… 아오..

뭐 암튼 지저분 하지만 2시간 동안 how to 어쩌구를 남발하여 자바로 뚝딱 거려 만들어 보았습니다.

방명록 떨궈주기 입니다.

뭐 일단 익스플로러에 싸이월드 로긴해 두시고 돌려 주시면 됩니다.

아 이런…. 비밀 방명록은 왜 안될까요? 타입을 바꿔 줘야 하나?

사진 백업은…. 음….

goodbyecy 였나요? 음.. 이거 만든분과는 전혀 관련 없지만… 이거 좋은 듯 합니다. 혹시나 백업 계획 있으신 분들은

http://goodbyecy.appspot.com/

요거 받으시면 됩니다. 그리고 방명록은 제가 만든 html 로 떨궈주기를 뭐 꼭 이용안하셔도 됩니다만… ㅎㅎ 뭐 제가 자바로 만들었으니.. 멋지신 실력자분께서 Visual studio  에서도 만들어 주시길 부탁 드립니다. 뭐 아니면… 시중에 이미 나와있는(?) 프로그램 있으시면 그거 쓰셔도 됩니다.

하하하ㅠㅠ 괜한 걱정으로 뚝딱하고 방명록 빽업기가 생겼네요. ㅎㅎ (아직은 공개 방명록만. ㅜ)

장난 삼아 좀더 발전 시켜 봐야 겠습니다. ㅋㅋ

글 도 긁어 와야 하는데…. ㅎㅎ

[앱소개] 러시아어 앱을 오늘 올렸습니다.

https://play.google.com/store/apps/details?id=com.tegine.russian

20140202_221843

 

러시아어 알파벳과 단어, 간단한 속담을 배울수 있게 정리해 보았습니다.

아가이름 이후에 뭘 만들어 볼까 하다가 Feel이 꽂혀 가지고 ㅎㅎ 걍 끄적여 본 앱 입니다.

아직 부족한게 많지만 군더더기들 다 빼버리고 내용에 촛점을 맞추었습니다.

ㅎㅎ