goodthings4me.tistory.com
유튜브 영상 주소(URL), 쿠팡 파트너스 등 제휴 마케팅 사이트의 긴 주소(URL)를 네이버 블로그, SNS, 이메일, 문자메시지 등에 삽입할 수 있도록 파이썬 pyshorteners 라이브러리 활용하여 단축 URL을 만드는 방법을 설명하려고 한다.
파이썬 라이브러리로 단축 URL 만들어보기
네이버 블로그, SNS 등에 쿠팡 파트너스 등의 제휴 마케팅 사이트 주소(광고 배너 링크나 키워드 링크 URL 등)를 넣으면 검색에서 불이익을 받는 경우가 있다고 하여 긴 URL을 짧게 만드는 단축 URL을 많이 사용한다.
그런데, 단축 URL을 사용할 때 주의해야 할 점이 있다.
한 번 사용하고 버릴 단축 URL이라면 상관없지만, 중요한 사이트이거나 계속해서 사용할 경우에는 이름이 있거나 오랜 기간 서비스를 하고 있는 단축 URL 사이트를 사용해야 한다.
파이썬에서는 단축 URL 서비스를 하는 여러 사이트에 대해 라이브러리(패키지) 형태로 제공하고 있는데, 이를 사용하면 해당 사이트에 접속하지 않고도 쉽게 단축 URL을 생성하여 사용할 수 있다.
다만, 제공하는 사이트가 한국이 아니라는 점과 API_KEY를 받고 이를 이용해야만 서비스를 이용할 수 있는 사이트가 있다는 단점은 있다. 그러나 나름 인지도가 있는 사이트이고, 단발성 또는 단기간의 사용을 위해서는 괜찮은 것 같다.
파이썬 pyshorteners 라이브러리 관련 웹 사이트(https://pyshorteners.readthedocs.io/en/latest/)를 방문해보면, 이용할 수 있는 단축 URL 사이트로 Adf.ly, Bit.ly, Chilp.it, Clck.ru, Cutt.ly, Da.gd, Git.io, Is.gd, Os.db, Ow.ly, Po.st, Qps.ru, Short.cm, Tiny.cc, TinyURL.com, Git.io, Tiny.cc 등을 제공하고 있다.
이 중에서 매개변수로 API_KEY를 받는 것은 임의 사용이 안되기 때문에 제외하고, 임의 사용이 가능한 것만 사용하여 코드를 짜보았다.
파이썬 pyshorteners 라이브러리를 활용한 단축 URL 소스 코드
import pyshorteners
import os
import openpyxl
import datetime
def save_urls(title, short_url, link_url):
# 엑셀 파일 열고 단축 URL 내역 저장하기
wb = openpyxl.load_workbook('shorten_log.xlsx')
ws = wb['Sheet']
maxRow = ws.max_row # 최대 row
print(f'maxRow: {maxRow}')
today = datetime.datetime.today()
print(today.strftime('%Y-%m-%d'))
ws.cell(maxRow + 1, 1).value = maxRow
ws.cell(maxRow + 1, 2).value = today.strftime('%Y-%m-%d')
ws.cell(maxRow + 1, 3).value = title
ws.cell(maxRow + 1, 4).value = '=HYPERLINK("{}", "{}")'.format(short_url, short_url)
ws.cell(maxRow + 1, 5).value = link_url
ws.cell(maxRow + 1, 6).value = ''
wb.save('shorten_log.xlsx')
print(f'"{title}" - 저장완료!')
wb.close()
def shorten_url(link_url, title):
# 단축 URL 관리할 엑셀 파일 생성
if not os.path.exists('shorten_log.xlsx'):
wb = openpyxl.Workbook()
ws = wb['Sheet']
ws.cell(1, 1).value = 'No'
ws.cell(1, 2).value = '생성 일자'
ws.cell(1, 3).value = '관리 명칭'
ws.cell(1, 4).value = '단축 URL'
ws.cell(1, 5).value = 'Long URL(단축 대상 URL)'
ws.cell(1, 6).value = '비고'
wb.save('shorten_log.xlsx')
wb.close()
shortener = pyshorteners.Shortener()
try:
short_url = shortener.tinyurl.short(link_url) # https://tinyurl.com
if short_url:
print(short_url)
save_urls(title, short_url, link_url)
return
except Exception as e:
print(f'Error: {e}')
pass
try:
short_url = shortener.clckru.short(link_url) # https://clck.ru
if short_url:
print(short_url)
save_urls(title, short_url, link_url)
return
except Exception as e:
print(f'Error: {e}')
pass
try:
short_url = shortener.dagd.short(link_url) # https://da.gd
if short_url:
print(short_url)
save_urls(title, short_url, link_url)
return
except Exception as e:
print(f'Error: {e}')
pass
try:
short_url = shortener.isgd.short(link_url) # https://is.gd
if short_url:
print(short_url)
save_urls(title, short_url, link_url)
return
except Exception as e:
print(f'Error: {e}')
pass
try:
short_url = shortener.osdb.short(link_url) # http://osdb.link
if short_url:
print(short_url)
save_urls(title, short_url, link_url)
return
except Exception as e:
print(f'Error: {e}')
pass
try:
short_url = shortener.chilpit.short(link_url) # http://chilp.it
if short_url:
print(short_url)
save_urls(title, short_url, link_url)
return
except Exception as e:
print(f'Error: {e}')
pass
if __name__ == '__main__':
link_url = 'https://www.youtube.com/shorts/VFixJ1ldAcg'
management_title = '케스코 모먼트 동영상'
shorten_url(link_url, management_title)
사용 방식은 아주 간단하다.
pyshorteners 설치(pip install pyshorteners) 후 import 하고,
Shortener() 클래스를 사용하여 해당 단축 URL 사이트의 short() 메서드의 매개변수에 URL을 넘겨주기만 하면 된다.
이때, 임의 사용이 가능한 사이트가 API_KEY를 받도록 기능이 변경되면 에러가 발생하여 이용할 수 없기 때문에 이를 회피하도록 예외 처리 조건을 주어 에러가 나지 않도록 하였다.
save_urls() 함수는 생성된 엑셀 파일에 단축 URL 관련 내용을 저장한다.
수 개가 아닌, 수 십 수 백 개가 넘는 단축url을 생성할 때 단축 URL이 어떤 URL인지 관리하기 위해 엑셀 파일을 생성하고 내용을 저장하게 된다.
또한, 단축URL을 엑셀 파일에 저장할 때 파일 내에서 클릭으로 사이트에 접속할 수 있도록 하이퍼링크도 지정되게 했다.
shorten_url() 함수에서는,
맨 위 if 문은 shorten_log.xlsx 파일이 없을 경우, 파일을 만들고 시트(Sheet)에 No, 생성 일자, 관리 명칭, 단축 URL, 단축 대상 URL 등의 컬럼 제목을 붙이게 하고,
임의 사용이 가능한 6개의 사이트(tinyurl.com, clck.ru, da.gd, is.gd, osdb.link, chilp.it)를 이용하여 단축 URL를 생성하도록 하되, 첫 번째 사이트가 에러가 나면 두 번째, 두 번째가 에러 나면 세 번째,... 식으로 단축 URL이 출력되도록 했다.
(첫 번째 사이트에서 에러가 없으면 첫 번째 사이트만 계속 나옴)
[결과 - VS Code 터미널]
https://tinyurl.com/ydg7m7f6
maxRow: 1
2022-02-16
"서울지역 아파트명, 관리사무소 연락처" - 저장완료!
https://tinyurl.com/yagfergk
maxRow: 2
2022-02-16
"케스코 베란다 하이샤시 설치" - 저장완료!
https://tinyurl.com/ybt56u4y
maxRow: 3
2022-02-16
"케스코 모먼트 동영상" - 저장완료!
[결과 - 'shorten_log.xlsx' 엑셀 파일 생성]

[결과 - 저장된 엑셀 파일 내용]

블로그 인기글
유튜브 영상 등의 URL 주소를 QR코드로 만들기
네이버 QR코드, makeQR, MUST QRcode, 무료 온라인 QRCode 생성기 등의 웹사이트에서 유튜브 영상 등의 URL을 입력하여 QR코드를 만들 수 있다. QR코드를 생성할 수 있는 사이트와 프로그램 URL 주소를 붙여넣기 한 후 "QR 코드 생성" 버튼을 클릭하면 큐알코드가 이미지로 생성되고, 다운로드도 할 수 있는 사이트 https://truedoum.com/useful/qrcode/ # 유튜브에서 동영상 URL을 복사하는 방법 유튜브에서 QR코드를 만들 동영상을 검색한다. 해당 동영상을 클릭한다. 동영상 위에서 마우스 우클릭 후 나오는 팝업창에서 “동영상 URL 복사”를 클릭하거나 영상 하단의 “공유”를 클릭하여 나온 창에서 URL를 복사한다. 아래의 웹사이트 중 하나를 선택한 후 복사..
goodthings4me.tistory.com
[엑셀] 근무연수 및 근무 개월수 계산하는 함수
직장을 다니다 보면 몇 년 몇 개월 또는 전체 며칠을 다니고 있는지 궁금할 때가 있다. 아니면, 총무나 인사 일을 할 때 직원들의 근속연수 또는 근속개월수 등을 계산하고 싶을 때도 있다. 이런 경우 엑셀 함수를 활용하면 어떨까!! 근무연수 및 근무 개월수 계산 함수 알아보기 엑셀에서 근무연수 또는 근무 개월수 계산하는 것은 datedif() 함수를 사용하면 간단하게 해결할 수 있다. 아래 이미지를 보면서 설명하면, 셀 E1에 기준일자를 입력하고, 근무연수를 구할 때는 =datedif(B3,$E$1,"Y")&"년" 을 입력한다. 근무개월수는 =datedif(B3,$E$1,"M")&"개월" 처럼 입력한다. 일수까지 파악할 때문 별로 없지만, 심심풀이로 구해보고 싶을 때 =datedif(B3,$E$1,"D")..
goodthings4me.tistory.com
엑셀 시트 분리 저장 - 엑셀 파일의 시트를 분리하여 저장하기
엑셀을 사용하다 보면 엑셀 시트를 분리해서 저장해야 할 때가 있다. 최근에도 이런 경우가 발생하여 구글링 후 엑셀 시트 분리 업무를 수행하고 내친김에 다른 사람들도 사용할 수 있도록 파이썬 tkinter로 프로그램으로 만들어 보았다. Excel Sheets 분리 저장하는 프로그램(with 파이썬 Tkinter) ※ 프로그램 다운로드(네이버 MYBOX에서 공유) : ExcelSeparateSheets.zip ▶ 프래그램을 실행하면 다음과 같이 초기 화면이 보인다. 찾아보기 : 엑셀 파일이 있는 폴더를 선택한다. (프로그램이 있는 최상위 디렉터리가 열린다) 실행하기 : 프로그램 실행 버튼 상태 변경 순서 : 실행전 → 실행 중 → Sheet "OOO" 분리 저장 중 → 실행 완료 실행 결과 확인 : 엑셀 파..
goodthings4me.tistory.com
'코딩 연습 > 코딩배우기' 카테고리의 다른 글
폴더 파일리스트 추출하여 엑셀에 저장하고, 파일명 바꾸기(파일이름 일괄변경 포함) (0) | 2022.03.15 |
---|---|
국민 내일배움카드 'K-디지털 기초역량훈련' 내용과 파이썬으로 과정명 크롤링하기 (0) | 2022.03.11 |
juso.go.kr 도로명 주소, 엑셀로 분리하는 방법을 파이썬으로 해보기 (0) | 2022.02.09 |
juso.go.kr에서 파이썬으로 도로명주소 등 추출 (0) | 2022.02.02 |
파이썬으로 아파트 관련 기본 정보 추출해보기(공공데이터포털 API 사용법) (0) | 2022.01.24 |
댓글