Python/2.7 for fun. 24

selenium cron to text

cron포맷을 영어 텍스트로 변환해야 할 일이 생겼다. 그러니까 예로 * * * * * 같은 경우 every minute 같은거로. 구글링을 하니 아예 파이썬 전용 pip라이브러리가 있다. 한 3개정도 찾았는데 ex) https://pypi.org/project/cron-descriptor/ 크론 구문이 복잡해지면 얘가 잘 파싱하지를 못한다.(얘말고도 다른것들도 한가지씩 문제가 있었다.) 문제되는 케이스 예시.(에러 발생) # -*- coding: utf-8 -*- from cron_descriptor import get_description, ExpressionDescriptor print(get_description("3 0-3,7-23/3 * * *")) 실제로 크론탭 작업시에는 https://cr..

Python/2.7 for fun. 2019.12.05

파이썬 숫자를 3자리씩 끊어서 출력하기.

1000같은 숫자를 1,000처럼 출력해야 하는데 뭔가 format이 있을것같았다. 그래서 간단하게 구글링을 해봤는데... 단순히 format으로 출력하는거 말고 별 이상한 방법들이 다 있었다. 답변들이 흥미로워서 링크를 공유해 봄... https://stackoverflow.com/questions/1823058/how-to-print-number-with-commas-as-thousands-separators 재밌는 답변 두개만 가져와봄.. 가장 복잡하며 가독성 제로의 답변. >>> import itertools >>> s = '-1234567' >>> ','.join(["%s%s%s" % (x[0], x[1] or '', x[2] or '') for x in itertools.izip_longest..

Python/2.7 for fun. 2018.08.13

크롤링시 데이터 찾는 방법 노하우.

어떤 사이트에서 크롤링을 할 경우에 다음과 같은 단계를 거친다.1. 해당 페이지를 구성하는 데이터들을 어디서 받을수 있는지 찾는다.2. 해당 페이지에 요청을 보내는 코드를 짠다.3. 페이지 정보 등을 가져온 후 (파이썬의 경우) beautifulsoup나 정규식을 이용하여 필요한 부분을 크롤링하여 자동화한다. 일정 횟수 이상 크롤링을 해본 사람들이 보기에 가장 어려운 부분은 1번 파트이다.(처음 시작하는 사람은 구현부인 2,3번이 가장 어렵다)2번이야 항상 똑같으니 됐고, 3번이야 프로그래밍 지식이나 센스만 있으면 간단하다. 하지만 1번은 우리가 데이터를 찾아야 하기에 힘들다. 그리고 api처럼 공식문서도 당연히 없다. 아래에 다양한 사례와 1번의 데이터를 조금 더 쉽게 찾을 수 있는, 또는 크롤링하는 ..

Python/2.7 for fun. 2017.08.30

점심추천 slackbot 만들기.

https://www.fullstackpython.com/blog/build-first-slack-bot-python.html 에 전반적인 설명이 아주 잘 나와 있다. (위에 사이트 보고 한거 그대로 정리함.) 첫번째로 슬랙에 가입을 하고 로그인을 한 후 https://api.slack.com/bot-users 페이지에서 Creating a new bot user 을 눌러 새 봇을 만든다. 이름을 아무거나 입력하고 add bot integration을 누르면 사진처럼 토큰이 주어진다. 그리고 봇이 가지길 원하는 이름을 입력하고 사진 등을 업로드해서 본인의 봇을 세팅한다. 다 세팅했으면 save integration을 눌러서 저장하자. 그리고 환경변수로 봇의 api키값을 등록해놓는다.export SLACK..

Python/2.7 for fun. 2017.03.20

티스토리 서비스 종료 대비용 사진 가져오기.

티스토리 서비스가 종료한다는 소문이 돌고 있다. 기사를 찾아보니 다음측에서는 서비스를 계속한다고 밝힌것 같은데 백업 기능도 종료되고, 혹시 모르니까 미리미리 서비스 종료한다는 말이 나왔을때 다른 블로그로 이동할수 있게끔 대비해놓자. 글같은경우 복붙으로 쉽게 살릴수 있지만 사진같은 경우는 복붙으로 붙여놓으면 다른 블로그에서 인식을 못한다. 다시 업로드해야되는데... 업로드를 위해서는 원본 사진이 필요하다. 대부분의 사람들이 원본 사진은 따로 저장을 안해두기에, 사진을 다시 썼던 글에서 하나하나 다운받아야 한다. 나처럼 글을 많이 쓰고 사진을 많이 넣은 사람들을 위해 모든 글의 사진을 다운받는 스크립트를 하나 만들었다. 1. 티스토리 글 읽기 구조를 주소/숫자 처럼 바꾼다. 나같은경우 첫글은 http://q..

Python/2.7 for fun. 2016.12.26

가계부 프로그램 만들기. 1차완성.

일단 기본적인 기능은 하게 완성시켰다. 처음에 만들땐 가게부? 엄청 쉬울거같은데 심심풀이로 만들어볼까? 했던 생각이... 변했다. 상당히 복잡하다. 어렵지는 않은데 복잡하다. 필요한건 그냥 gui에서 입력값을 가져와서 폴더에 보기좋게 정리하는거밖에 없다. 근데 폴더 구조를 생각하고 그러니 진짜 복잡해진다. 폴더 구조. 1. 파이썬 소스파일과 같은 폴더 안에 '가계부' 라는 이름의 폴더가 생김.2. '가계부' 폴더 안에 이번달 날짜 폴더가 생김. 오늘은 16년 12월 25일이니까 2016-12라는 폴더를 만듬. 동일한 위치에 affordable_money.txt가 있는데 이 안에는 한달동안 자유롭게 쓸수 있는 돈이 숫자로 들어가있다.3. 2016-12와 같은 폴더 안에는 3종류의 txt파일이 있다. 1) ..

Python/2.7 for fun. 2016.12.25

가계부 프로그램 만들기. (디자인만.)

개요.이제 곧 사회생활을 하는 만큼 돈 관리를 해야 한다. 캐나다에서 나름 돈 관리를 잘했었는데, 이번에도 그런 방식으로 돈을 모아보려고 한다. 근데 그때는 손으로 계산... 했었고 이제 만들면 오래쓸거 같기도 하고 재미도 있어보여서 제대로 프로그램을 만들어보기로 했다. 방법론.1. gui를 내가 원하는대로 만든다.2. 돈 관리 알고리즘을 추가한다.돈 관리 알고리즘.매달 내가 쓸수 있는 돈이 있고, 매달 쓸수 있는 돈을 4로 나눠서 1주일에 얼마 쓸수 있는지 알려준다. 돈을 썼으면 이번주에서 쓸수 있는 돈의 액수에서 차감되고, -도 될수 있다.(더 생각해봐야될듯) 만약 이번주에 쓰고 남은 돈이 있으면 데이터가 이월되듯이 다음 주의 사용가능한 액수가 그만큼 더 올라간다. 더 자세한건 만들면서 생각 예정. ..

Python/2.7 for fun. 2016.12.18

시력 테스트 자동화 스크립트 2.

시력 테스트 자동화 스크립트 1 : http://qkqhxla1.tistory.com/359 이번엔 좀 다른거다. 생코에서 어떤분이 색약 관련해서 누가 더 색깔을 잘 구별하는지에 관한 게임을 만드셨다.링크 : http://noda.me/game/eagleye들어가면 게임이 있고 밝은 순서대로 누르면 된다. 근데 당연히 컴공학도로서 그냥 게임만 하면 재미없으니까 자동화시키는 코드를 만들어봤다. 영상. (무한으로 갈것같아 중간에서 중단시켰다.) 코드 # -*- encoding: cp949 -*- import pyscreenshot as ImageGrab import Image import win32api, win32con import time import math while True: time.sleep(2..

Python/2.7 for fun. 2016.05.07

벤쿠버 유학생을 위한 craigslist에서 다운타운 방찾기 2

http://qkqhxla1.tistory.com/499 에서 만들었었는데 보면 볼수록 잡스러운 gui배치때문에 마음이 불안해서 다른일에 집중을 못하겠어서 개선을 해버렸다. 개선점.1. gui 재배치 수정2. 필요없는 코드 삭제, 알고리즘 일부 개선, 에러처리(인터넷 연결 안됬을 시 에러 처리 등.)3. 사소한것 처리(왼쪽위의 아이콘, 배경이 딱딱해보여서 백그라운드 추가, 블로그 주소 첨부) 허접해보였던 이전과 달리(내코드지만 내가봐도 허접해보였다.) 깔끔하고 예뻐졌다.수정해야 될거 같은점.(2016-01-27 추가) 1. 종종 start버튼누르면 널 참조 오류같은(?) 느낌이 나면서 프로그램이 그냥 죽는다. 왜 그런지 발견.2. 필터 추가.(female이 들어가있으면 안보겠다. 이런느낌)3. 가능하면 ..

Python/2.7 for fun. 2015.12.30

벤쿠버 유학생을 위한 craigslist에서 다운타운 방찾기.

개선 : http://qkqhxla1.tistory.com/501 개요.캐나다 벤쿠버에 도착한지 좀 되서, '다운타운'으로 이사가고자 하는 사람들이 많은데, craigslist사이트에서 찾는게 처음인 만큼 뭘 어떻게 찾아야 할지, 필터는 어떻게 걸어야 좋은지, 어떻게 해야 효율적으로 다운타운에 있는 방만 찾을지 모르는 사람들을 위한 프로그램을 만들었다. 요점 : craigslist에서 다운타운에 위치한 방만 찾아서 갖고오기. 계획.1. craigslist에서 downtown으로 검색했을때의 결과 링크 전부 파싱. 2. 링크중에서 되도록 다운타운에 위치할 가능성이 높은 링크만 가져옴. (원래 계획은 머신러닝까지 이용해서 downtown이란 글자가 어디에 얼마나 들어가있냐 그런 정보로 판별하려고 했지만 힘들..

Python/2.7 for fun. 2015.12.27

아이들용 덧셈색칠퍼즐 만들기.

페이스북을 눈팅하다 어떤 프로그래머분의 글을 보게되었다. 어린 아들이 있는데 덧셈을 해서 색칠하는 퍼즐을 너무 좋아해서 사달라고 했다는것이었다. 퍼즐은 아래와 같다. 프로그래머인 그분은 프로그래밍의 열정이 살아나서(!) 본인이 만들어주겠다고 했고, 막상 해보려니 일반 이미지를 아래와 같은 격자 모양의 이미지로 만드는것부터가 고역이었다... 라고 글을 쓰셨었다. http://myzone.coloringsquared.netdna-cdn.com/wp-content/uploads/2013/10/Free-Addition-Worksheet-Activities-AE4-Cute-Lion-Color-math-for-kids.pdf 요러한 이미지인데 간단한 덧셈을 해서 그 결과에 맞게 색칠하면 그림이 나오는 문제이다. 이..

Python/2.7 for fun. 2015.08.14

시력 테스트 자동화 스크립트 1.

시력 테스트 자동화 스크립트 2 : http://qkqhxla1.tistory.com/556 심심해서 재미로 만들어봤다. http://wvw.igame.com/eye-test/?fbs=665%7C%7CKO 이 사이트를 들어가보면 색깔 구별 테스트가 나온다. 저기에 써있는데도 다른 색깔을 고르면 된다. 가면 갈수록 난이도가 높아지고, 사람의 경우에는 눈이 좋으면 35정도까지는 간다. 이걸 자동화해보기로 했다. 처음에는 크롬 콘솔에서 자바스크립트로 입력을 처리할까.. 생각하다가 쉽고 일반적인 방법이라는 생각이 들었다. 그래서 일부러 더 어렵게 해보려고 직접 저 부분을 캡쳐해서, 각각의 도형들로 나눈 후, RGB값을 조사해서 나머지와 다른 부분의 위치를 계산해서 그 부분을 직접 클릭하는 스크립트를 만들었다. ..

Python/2.7 for fun. 2015.06.26

pyqt를 이용한 나만의 웹툰 뷰어 만들기3 (개선,기능추가)

이전글 : http://qkqhxla1.tistory.com/347 개선점. 1. 웹툰이 길 경우 한번에 내려가는 스크롤바가 너무 적어서 손 아픈 문제 개선. ->실행시 마우스 휠 스크롤 사이즈를 10으로 늘리고, 웹툰뷰어를 종료하면 스크롤 사이즈가 원래 설정대로 돌아감. 2. 네이버의 이번달 신작 웹툰 랜덤하게 3개, 다음의 오늘차 새로운 웹툰목록 추가. 스크롤 사이즈 변경 방법론. 위의 개선점 1번에서 적어놨듯이 웹툰이 길 경우 한번에 내려가는 스크롤바가 너무 적어서 손이 아팠다. 이걸 개선하기 위한 방법론이다. 웹툰 뷰어를 시작할때 원래의 스크롤 사이즈를 저장해놓고, 10으로 변경. 웹툰 뷰어를 종료하면 스크롤 사이즈를 원래의 저장해놨던 값으로 재설정.처음에 스크롤 사이즈 변경하는건 앞에서 프록시 ..

Python/2.7 for fun. 2015.06.25

pyqt를 이용한 나만의 웹툰 뷰어 만들기2 (개선)

추가 개선 : http://qkqhxla1.tistory.com/358 1차 제작 : http://qkqhxla1.tistory.com/333 지난번의 단점.1. 레진코믹스 웹툰 파싱하는데 시간이 너무 오래 걸림.2. 레진코믹스 같은 경우 로그인해서 만화를 볼 수 있는데 난 구현을 그냥 페이지 요청으로 구현해서 로그인 구현이 안 됬음. 로그인상태 유지하는걸 구현하거나 쉽게 로그인하도록 구현3. 마우스 스크롤로 페이지를 내릴때 내려가는 양이 적어서 손이 아픔. 스크롤 양 조절.4. py2exe로 exe로 만들었는데 그림을 엑박으로 받아옴 (왜이런지는 모르겠네요 망...) 이것부터 빨리 고쳐야될듯 개선완료개선된것들은 다 취소선처리 쓰면서 찾은 문제점.1. 레진코믹스 웹툰 최신 무료회차 가져오는 파싱 문제. ..

Python/2.7 for fun. 2015.05.21

나만의 편한 프록시 실행파일 만들기 2.

http://qkqhxla1.tistory.com/337 글에서 만들려다가 삽질만 하고 실패했었는데, 우연히 adm1nkyj님의 블로그를 돌아다니다가 해법을 찾았다. 이런 엄청난 우연이...... 참조.http://blog.naver.com/adm1nkyj/120212579819http://yszhou.blogspot.kr/2011/04/toggle-proxy-settings-in-windows.html 코드를 짜기전에 실제로 불편함을 해소하기 위한 프로그램이었으므로 어떻게하면 최소한의 동작만을 할까 고민했다. 처음에는 gui버튼을 만들어서 프록시 옆에 붙이기로 했다.(on/off버튼.) 그런데 생각해보니 gui버튼이 프록시 옆에 붙어있으려면 exe가 계속 실행되어야 하고, 리소스를 많이 잡아먹을거라 생..

Python/2.7 for fun. 2015.05.14

나만의 편한 프록시 실행파일 만들기 1. (방법론)

웹해킹시 프록시를 종종 사용하는데 불편해서 만들려고 했었다. burp-suite를 사용하는데, 이걸 사용하려면 cmd를 켜서, java -jar bur~을 쳐서 프록시를 키고, 크롬의 속성창에서 인터넷 속성을 들어가서 프록시 사용을 체크하고확인누르고 나와서 사용, 사용안할려면 다시 들어가서 체크를 해제하고 확인누르고.. 이게 은근히 짜증났다. 그래서. exe를 실행만 하면 프록시가 켜지면서 동시에 알아서 프록시 사용 모드로 바뀜-> 버튼이 하나 나타나는데, 버튼 클릭 여부에 따라서 프록시 사용 모드가 on/off로 바뀜. 이렇게 편안한 프록시용 exe를 만들어보려고 했는데 실패했다. 아래는 프록시가 바뀌었는지 레지스트리를 확인하고 체크하는 코드이다. # -*- encoding: cp949 -*- from..

Python/2.7 for fun. 2015.04.27

pyqt를 이용한 나만의 웹툰 뷰어 만들기 1.

이 프로그램에서 더 개선됨 : http://qkqhxla1.tistory.com/347 웹툰을 좋아하는 나는 매번 네이버, 다음, 레진코믹스 각각 따로 들어가서내가 좋아하는 웹툰을 골라서 보는 과정이 조금은 귀찮았다. (매번 클릭하고 찾는 그런 일련의 과정들이.) 그래서 나만의 웹툰 뷰어를 만들어보기로 했다. 실행시키는 즉시 오늘 요일의 모든 웹툰들 중에서, 내가 좋아하는 웹툰들 목록을 파싱해와서 그것들만 따로 뷰어로 보여주는것이다. 매 요일의 웹툰중에서 내가 가장 좋아하는 웹툰은 txt에 적어놓고, 이것만 참조해서 뷰어에 나온다. (원래는 소스코드안에 하드코딩했지만 자주 변경이 일어날것 같아서 txt파일로 변경) 나는 탭을 옮겨다니면서 웹툰을 감상하기만 하면 된다. 실행시키는 즉시 이렇게 뜬다. (참고..

Python/2.7 for fun. 2015.04.13

네이버 블로그에서 최근에 올라온 음악들 다운받기 2 코딩, xml다루기

이전글. http://qkqhxla1.tistory.com/311 코딩한 결과. 나중에도 필요할 거 같으므로 주석은 최대한 자세히 써놓았다. xml파싱하는 라이브러리는 lxml을 썼다. 다운로드는 콘솔에서 wget으로 처리했다. 공식 홈페이지 : http://lxml.de/ 다운로드 : https://pypi.python.org/pypi/lxml/ 튜토리얼 : http://lxml.de/tutorial.html 아래쪽에 개선한 코딩이 있습니다 이건 그냥 뼈대 # -*- encoding: cp949 -*- import urllib2,re,os import codecs import subprocess from lxml import etree outer = urllib2.urlopen(urllib2.Reque..

Python/2.7 for fun. 2015.03.15

네이버 블로그에서 최근에 올라온 음악들 다운받기 1 블로그 구조 분석

동기.종종 네이버 블로그에서 코딩하면서 들을 음악을 다운받는다. 개인적으로 리듬게임의 음악이 신나서 시간가는줄 모르고 잘 듣고 집중도 잘되는것같다. http://blog.naver.com/diamonds8/220296189977 이 분의 블로그의 카테고리에 리듬게임음악 등을정리해서 자주 포스팅이 되는데, 매번 들어가서 받을게 있는지 확인하고 만약 내가 안 받은 음악이면 하나하나 다운받기 귀찮아서..(특히 일본어로 된 음악은 있는지 찾기도 힘들다.) 가져오는 스크립트를 하나 짰다. 그런데 다운받기 전에 네이버 블로그의 구조분석을 약간 해야됬다. 계획.1. 해당 음악 카테고리의 최근 글들의 음악 목록을 분석한다.2. 음악 목록중 내가 이미 가지고 있는 음악이면 무시하고, 새 음악이면 다시 다운 받는다.3. ..

Python/2.7 for fun. 2015.03.15

(편의) pyqt를 이용한 gui 만화책 정리 스크립트.

pyqt는 처음 사용한다. 앞에서 gui 멀티쓰레드 채팅 서버를 만들었을때는 tkinter로 만들었었는데... tkinter는 모든걸 코드로 조절해야 하기 때문에 gui요소들을 원하는 위치로 배치하기가 어렵다. 반면에 pyqt는 c#에서 gui를 프로그래밍 하는 것처럼 마우스로 원하는 위치에 배열할수 있어서 편하다.다만 pyqt는 디자인해서 만들어진 .ui파일을 다시 .py로 변환해야 된다는게 좀 짜증나긴 한다.이러한 불편함이 있지만 그래도 마우스로 원하는 위치에 gui요소들을 배치할수 있다는 장점이 더 커서,gui사용시 pyqt를 사용하기로 했다.(사실 별로 하지도 않을 것 같지만..) 다운로드 : http://www.riverbankcomputing.com/software/pyqt/download참고..

Python/2.7 for fun. 2015.03.01

(편의) 만화책 정리 스크립트.

가끔 인터넷같은데서 만화를 다운받아서 볼 때가 있는데.... 예를 들어 최신에도 계속 나오는 만화같은경우 127화. 128화 이렇게 화마다 폴더가 있다. 그리고 해당 폴더안에는 달랑 사진이 20장 이내로 들어있어서.... 알집으로 보다가 20장이 꽉차면 알집을 다시 끄고 뒤로 한번 온 뒤에 다음 화의 폴더를 누른후 알집이 켜지길 기다려야 한다. 이게 엄청나게 불편하다. 매번 짜증났는데 오늘 할것도없어서 정리해주는 스크립트를 만들어보기로 함. exe를 실행한 후 해당 만화 폴더를 끌어오면 알아서 내부의 .jpg .png의 확장자가 있는 사진파일을들 한 폴더에 다 정리해준다. 나 혼자만 사용하려고 만든거기 때문에 버그가 많을 수 있음.15/03/01 예외처리 추가. 위의 캡쳐 내용과 일부 실행 결과가 다를 ..

Python/2.7 for fun. 2015.02.27

py2exe, (편의) 티스토리에 맞는 파이썬 소스코드 변환기

파이썬 파일을 실행파일(.exe)로 만들어줌. 다운로드 : http://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/ 튜토리얼 : http://www.py2exe.org/index.cgi/Tutorial 옵션 : http://www.py2exe.org/index.cgi/ListOfOptions 방법.1. setup.py를 만든다. #setup.py from distutils.core import setup import py2exe setup(console=['hello.py']) #hello.py는 우리가 exe로 변환시킬 .py파일. #hello.py는 지금 만든 setup.py와 같은 콘솔상에 있어야 하는것 같다. 2. exe로 변환시킬 hello.py를..

Python/2.7 for fun. 2015.02.23

gui 멀티쓰레드 채팅 서버, 클라이언트

방학때 몇일 날잡아서 멀티쓰레드 채팅 서버를 만들어보려고 했는데 의외로 여태까지 한 수련이 헛되진 않았는지 하루동안 열심히 투자하니까 틀은 완성됬다. 이번 코딩을 하면서 오히려 서버 클라이언트 사이의 작동보다는 유니코드 인코딩 관련 조사를 가장 많이 한것 같다. 근데 소스코드를 다시 살펴보면 정말 초심자가 짠 어색하고 더러운 코드다.... 방법이 있긴 한거같은데 몰라서 야매로,더럽게 구현한것도 많다. 실행결과. 첫 실행 결과. 왼쪽 서버, 오른쪽 클라이언트이다. 서버는 gui화 안했고 클라이언트만 gui. 접속하면 접속한 유저의 아이피주소와 내가 유저몇인지 뜸.. 왼쪽이 서버이고 클라이언트를 하나 더 실행시켰을때 화면. 원래 있던 유저 1에도 유저 2가 접속했다고 뜨는것을 확인할수 있다. 메시지를 쓰고 ..

Python/2.7 for fun. 2014.12.22

사칙연산 계산 서버, 클라이언트

이전에 소켓 공부하면서 소켓 프로그래밍에 익숙해지기 위해 짜봤던 계산 서버입니다. 코드는 제일 아래에.. 서버를 먼저 실행시키고 클라이언트를 실행시켰을시 첫 화면. 오른쪽이 서버, 왼쪽이 클라이언트. 클라이언트에 계산 식을 입력하면 서버에 자동으로 식과 답이 나타납니다. 클라이언트에서 q를 눌러 종료하면 클라이언트는 종료되고, 서버는 총 5대의 클라이언트를 기다릴수 있으니 다른 클라이언트 4대를 기다립니다. 새로 연결된 모습. 새로 연결되고 위와 같습니다. 지금 보니까 서버 부분에서 클라이언트 소켓 받아들이는 부분을 쓰레드로 처리 안해서 한번에 한 클라이언트만 처리 가능하겠네요... 처음에 c언어로 계산 서버, 클라이언트 짜보려고 했는데 c언어로 짜기에는 너무 어렵네요. 코드 라인수도 파이썬의 두배 이상..

Python/2.7 for fun. 2014.10.03