You are viewing a single comment's thread from:

RE: (종료) 안피곤 천하제일 코딩 대회를 개최합니다.

in #kr6 years ago

URL: http://blacknred.pythonanywhere.com
개발자 여부: 네( C, C++ 만 할 줄 알아서 웹, 자바 등은 잘 모릅니다... )
설명 : post 썸네일 부분에 사진인 경우에는 사진이 나오지 않고 링크 텍스트가 나오는데 이를 어떻게 수정해야 할까여 ㅜ

Sort:  

참여감사합니다.
그리고 이미지를 URL만 사용한 경우는 HTML로 자동변환 되지 않아서
정규식을 사용해서 img 태그를 입혀줘야할 것 같습니다.
그래서 혹시 오픈 소스가 없는지 찾아보고 있었어요.ㅋㅋ

이거 사진 부분은 저도 같은 문제가 발생하더라구요. 스팀잇에 그냥 올린 것은 사진이 뜨는데 외부 사이트(imgur) 에서 링크만 가져오면 링크만 덜렁 그대로 뜨는...

이미지 처리하는 방법은 찾게되면 정리해서 공유할께요. 이 문제는 저도 고민 중인 부분입니다.

Posted using Partiko Android

views.py 에서 post[ 'body' ] string을 're' 패키지를 통해 http:// 로 시작하면서 jpg, png 로 끝나는 서브 스트링 부분을 (html comment removed: <img src= > ) 이런식으로 replace 하는 방법을 생각해봤지만,... 아직 구현은 못했어요. ㅎㅎ

저도 정규식으로 해볼려는데 쉽지 않네요.ㅠ

Posted using Partiko Android

해결 했습니다.

views.py 에서 아래와 같이 삽입하면 됩니다.


replaced = re.sub( r'https?://([a-zA-Z0-9][a-zA-Z0-9_-]+([.][a-zA-Z0-9][a-zA-Z0-9_-]+){1,2}(/[a-zA-Z0-9][a-zA-Z0-9_-]*)+)[.]( p ng|PNG|jpg|JPG|jpeg|JPEG|bmp|BMP|gif|GIF)', r'< img src="http://\1.\4">', post['body'] )


post[ 'body' ] = replaced

감사합니다. 잘작동합니다. 그리고 @apmmh님 제가 살짝 수정했어요~

replaced = re.sub(r'(^https?://([a-zA-Z0-9][a-zA-Z0-9_-]+([.][a-zA-Z0-9][a-zA-Z0-9_-]+){1,2}(/[a-zA-Z0-9][a-zA-Z0-9_-]*)+)[.](png|PNG|jpg|JPG|jpeg|JPEG|bmp|BMP|gif|GIF))', r'<img src="\1">', post['body'])

일부 사진 파일의 경우 % 나 . 이 파일명에 들어가는 경우가 있더군요...
replaced = re.sub( r'https?://([a-zA-Z0-9][a-zA-Z0-9_-]+([.][a-zA-Z0-9][a-zA-Z0-9_-]+){1,2}(/[a-zA-Z0-9][^\s]*)+)[.](p ng|PNG|jpg|JPG|jpeg|JPEG|bmp|BMP|gif|GIF)', r'

< img src="http://\1.\4">
', post['body'] )

위와 같이 수정해봤습니다.

테스트할 페이지는 /@appics/appics-update-or-sneak-peek-into-the-appics-app-become-a-tester-now/

입니다.

음... 이미지 확장자 때문에 comment 태그를 달아도 스트링으로 안나오는군요...

sub 메소드의 두번째 인자로

'r< img src = "http://\1.\4">'


이렇게 하는게 핵심입니다. \1 \2는 re 모듈에서 정규식표현을 찾은 후에 grouping 과정을 거치는데 \1 요게 내가 찾은 패턴의 첫번째 정규표현 부분을 나타냅니다. \4는 여기서 이미지 확장자를 의미하구요.

조금 더 욕심 내면 실제 steemit 처럼 중첩 댓글 출력과 post_list 출력 시 이미지나 링크 태그가 나오는 부분에서 row 범위를 벗어나게 출력되는 문제가 있는데.. 이것도 해결하면 더 예쁜 블로그가 될거 같아요!