본문 바로가기
Python

[파이썬] 공공 데이터 포털 API 한국저작권위원회 공유 만료 저작물 서비스 조회 사용방법

by 퍼포먼스마케팅코더 2022. 8. 13.
반응형

이전에 한국 저작권위원회에서 저작권이 등록되어 있는 것에 대해서 알아봤었잖아요. 저작물이 만료가 된 것이 있는 건 자료를 찾아볼 수 있는 그것도 공공 데이터 포털 api를 통해서 확인할 수 있습니다. 오늘은 그것에 대해서 알아볼 거예요. 

[파이썬] 공공 데이터 포털 API 한국저작권위원회 공유 만료 저작물 서비스 조회 사용방법

 

공공 데이터 포털 API 한국저작권위원회 공유 만료 저작물 서비스 조회 API 키 발급

그래서 파이썬 코딩으로 해서 저작물이 만료가 된 그런 이미지 텍스트 혹은 멀티미디어 그런 자료가 있는지를 확인할 수 있는 정보를 api로 python 코딩을 통해서 확인을 하실 수 있습니다. 이것도 마찬가지로 이 밑에 api 키를 발급을 해야 됩니다. 작물 저작권이 만료가 된 그런 이미지 텍스트의 저작물이 뭔지 그걸 확인할 수 있는 이 api 키를 발급할 수 있는 곳이라고 생각을 하면 될 것 같고요.

https://www.data.go.kr/tcs/dss/selectApiDataDetailView.do?publicDataPk=15000497 

 

한국저작권위원회_공유(만료)저작물 서비스

향후 발생가능한 저작권 분쟁을 예방하기 위해 약 160,000건의 저작권정보를 활용하여 만료된 이미지, 멀티미디어, 텍스트 저작물에 대한 정보 제공 및 만료된 이미지, 멀티미디어, 텍스트 저작물

www.data.go.kr

 

 

파이썬 공공 데이터 포털 API 한국저작권위원회 공유 만료 저작물 서비스 조회 사용방법 

밑에 본격적으로 나오는 부분들이 있긴 한데 내용들이 많이 있습니다. 코딩에 대해서 설명을 드리자면 사이트에 들어가 보시면 아시겠지만 예를 들자면 저작물이 이미지가 될 수도 있고 멀티미디어가 있을 수 있고 텍스트에 관련된 저작물이 있을 수 있습니다. 이러한 정보를 조회할 수 있는 데이터가 약 16만 건이라고 해요. 그러한 저작물에 대한 목록 하고 상세 정보를 조회를 할 수 있다고 합니다.

 

근데 내용물 자체가 안 좋은 점이 저작물 같은 경우에는 링크가 있는데 그거를 직접 사이트 안에 들어가서 다운을 받아야 됩니다. 파일 위치에 대한 url이 있는데 링크를 따라서 가시면 다운로드가 안 되어 있더라고요 그게 오류 문구가 나옵니다 해서 직접 사이트 안에 들어가셔서 다운을 받으셔야 될 것 같고요. 이 외적으로는 내용이 자세히 되어 있습니다. 해서 단순하게 여러분들 api 키를 발급받으셨잖아요. 그것만 넣으시면 됩니다. 해서 어떠한 부분을 넣어야 되는지는 제가 이 아래에 코딩으로 다 설명을 해놨기 때문에 그것만 참고를 해두시면 될 것 같아요. 출력 값이 어떤 것들이 나와야 되는지 칼럼에 따른 정보 내용도 밑에다가 다 기록을 해놨으니까요. 그것만 참고만 해두시면 될 것 같습니다. 그렇게 큰 차이는 없어요. 유용하게 쓰실 수 있으면 좋겠습니다.

from urllib.request import urlopen
from urllib.parse import urlencode, unquote, quote_plus
import urllib
import requests
import json
import pandas as pd
from datetime import datetime,timedelta
import warnings
import xmltodict # 결과가 xml 형식으로 반환된다. 이것을 dict 로 바꿔주는 라이브러리다


#이미지 만료저작물목록 조회


serviceKey = '' #api 키 발급

writingName = '산수인물' #저작물명
#authorNameKor = ''  #저작자명_한글
#authorNameEng =''    #저작자명_영문
#authorNameChn = ''   #저작자명_한문

url = 'http://openapi.copyright.or.kr/openapi/service/rest/ShrWrtgService/getImgExpWrtgList?serviceKey={}&writingName={}'.format(serviceKey, writingName)

response = requests.get(url, verify=False)
#HTTPSConnectionPool(host='www.work.go.kr', port=443): Max retries exceeded with url 
# 오류 발견시 requests.get(url, verify=False) 로 넣어주면됨. 

dict_data = xmltodict.parse(response.text) #xml을 json로 변환
json_data = json.dumps(dict_data, ensure_ascii=False)  #한글이 깨지면 ensure_ascii 코드를 False로 하면됨.
r_data = json.loads(json_data)  #json 변환


#Shape of passed values is (2, 4), indices imply (1, 4)
#data = pd.DataFrame(r_data['response']['body']['items']['item'])  이걸로 넣어주면 됨.

#If using all scalar values, you must pass an index 에러 문구가 뜰 경우, index=[0]
#data = pd.DataFrame(r_data['response']['body']['items']['item'], index=[0]) 이렇게 바꿔주면됨.


try :
    data = pd.DataFrame(r_data['response']['body']['items']['item'])
except :
    data = pd.DataFrame(r_data['response']['body']['items']['item'], index=[0])  #데이터프레임으로 보자 

data

#출력값

#authorNameChn    저작자명_한문
#authorNameKor    저작자명_한글
#fileNameG        파일명
#icnNo            ICN Number
#limgpath         이미지 링크 url
#simgpath         썸네일 링크 url
#writingName      저작물명
#writingSeq       저작물번호

 

from urllib.request import urlopen
from urllib.parse import urlencode, unquote, quote_plus
import urllib
import requests
import json
import pandas as pd
from datetime import datetime,timedelta
import warnings
import xmltodict # 결과가 xml 형식으로 반환된다. 이것을 dict 로 바꿔주는 라이브러리다


#이미지 만료저작물상세 조회

serviceKey = '' #api 키 발급
writingSeq = '1155'

url = 'http://openapi.copyright.or.kr/openapi/service/rest/ShrWrtgService/getImgExpWrtgDetail?serviceKey={}&writingSeq={}'.format(serviceKey, writingSeq)

response = requests.get(url, verify=False)
#HTTPSConnectionPool(host='www.work.go.kr', port=443): Max retries exceeded with url 
# 오류 발견시 requests.get(url, verify=False) 로 넣어주면됨. 

dict_data = xmltodict.parse(response.text) #xml을 json로 변환
json_data = json.dumps(dict_data, ensure_ascii=False)  #한글이 깨지면 ensure_ascii 코드를 False로 하면됨.
r_data = json.loads(json_data)  #json 변환


#Shape of passed values is (2, 4), indices imply (1, 4)
#data = pd.DataFrame(r_data['response']['body']['items']['item'])  이걸로 넣어주면 됨.

#If using all scalar values, you must pass an index 에러 문구가 뜰 경우, index=[0]
#data = pd.DataFrame(r_data['response']['body']['items']['item'], index=[0]) 이렇게 바꿔주면됨.


try :
    data = pd.DataFrame(r_data['response']['body']['item'])
except :
    data = pd.DataFrame(r_data['response']['body']['item'], index=[0])  #데이터프레임으로 보자 

data

#출력값

#authorNameChn      저작자명_한문
#authorNameKor      저작자명_한글
#fileNameG          파일명
#fileTypeG          등록된 파일의 타입
#icnNo              ICN Number
#limgpath           이미지 링크 url
#officialCountry    저작물 공표 국가
#provideGovName     원문제공기관
#simgpath           썸네일 링크 url
#writingName        저작물명
#writingSeq         저작물번호
from urllib.request import urlopen
from urllib.parse import urlencode, unquote, quote_plus
import urllib
import requests
import json
import pandas as pd
from datetime import datetime,timedelta
import warnings
import xmltodict # 결과가 xml 형식으로 반환된다. 이것을 dict 로 바꿔주는 라이브러리다


#멀티미디어 만료저작물목록 조회

serviceKey = '' #api 키 발급

#stdt='2013'

#icnNo = 'ICN-F200-2210' #ICN Number
#writingName = '홍길동' #저작물명
#authorNameKor = '홍난파' #저작자명_한글
#authorNameEng = '' #저작자명_영문
#authorNameChn = '' #저작자명_한문

url = 'http://openapi.copyright.or.kr/openapi/service/rest/ShrWrtgService/getMtmdExpWrtgList?serviceKey={}&stdt={}'.format(serviceKey,stdt)

response = requests.get(url, verify=False)
#HTTPSConnectionPool(host='www.work.go.kr', port=443): Max retries exceeded with url 
# 오류 발견시 requests.get(url, verify=False) 로 넣어주면됨. 

dict_data = xmltodict.parse(response.text) #xml을 json로 변환
json_data = json.dumps(dict_data, ensure_ascii=False)  #한글이 깨지면 ensure_ascii 코드를 False로 하면됨.
r_data = json.loads(json_data)  #json 변환

r_data
#Shape of passed values is (2, 4), indices imply (1, 4)
#data = pd.DataFrame(r_data['response']['body']['items']['item'])  이걸로 넣어주면 됨.

#If using all scalar values, you must pass an index 에러 문구가 뜰 경우, index=[0]
#data = pd.DataFrame(r_data['response']['body']['items']['item'], index=[0]) 이렇게 바꿔주면됨.



#try :
#    data = pd.DataFrame(r_data['response']['body']['item'])
#except :    
#    data = pd.DataFrame(r_data['response']['body']['item'], index=[0])  #데이터프레임으로 보자 

# default 'except:' must be last
from urllib.request import urlopen
from urllib.parse import urlencode, unquote, quote_plus
import urllib
import requests
import json
import pandas as pd
from datetime import datetime,timedelta
import warnings
import xmltodict # 결과가 xml 형식으로 반환된다. 이것을 dict 로 바꿔주는 라이브러리다

#텍스트 만료 저작물 목록 조회

serviceKey = '' #api 키 발급

#stdt='2012'

#icnNo = 'ICN-F200-2210' #ICN Number
#writingName = '산수인물' #저작물명
authorNameKor = '강경애'  #저작자명_한글
#authorNameEng =''    #저작자명_영문
#authorNameChn = ''   #저작자명_한문

url ='http://openapi.copyright.or.kr/openapi/service/rest/ShrWrtgService/getTxtExpWrtgList?serviceKey={}&authorNameKor={}'.format(serviceKey, authorNameKor)

response = requests.get(url, verify=False)
#HTTPSConnectionPool(host='www.work.go.kr', port=443): Max retries exceeded with url 
# 오류 발견시 requests.get(url, verify=False) 로 넣어주면됨. 

dict_data = xmltodict.parse(response.text) #xml을 json로 변환
json_data = json.dumps(dict_data, ensure_ascii=False)  #한글이 깨지면 ensure_ascii 코드를 False로 하면됨.
r_data = json.loads(json_data)  #json 변환

try :
    data = pd.DataFrame(r_data['response']['body']['items']['item'])
except :
    data = pd.DataFrame(r_data['response']['body']['items']['item'], index=[0])  #데이터프레임으로 보자 

data
from urllib.request import urlopen
from urllib.parse import urlencode, unquote, quote_plus
import urllib
import requests
import json
import pandas as pd
from datetime import datetime,timedelta
import warnings
import xmltodict # 결과가 xml 형식으로 반환된다. 이것을 dict 로 바꿔주는 라이브러리다

#텍스트 만료 저작물 상세 조회

serviceKey = '' #api 키 발급

writingSeq = '9000001' #저작물번호

url ='http://openapi.copyright.or.kr/openapi/service/rest/ShrWrtgService/getTxtExpWrtgDetail?serviceKey={}&writingSeq={}'.format(serviceKey, writingSeq)

response = requests.get(url, verify=False)
#HTTPSConnectionPool(host='www.work.go.kr', port=443): Max retries exceeded with url 
# 오류 발견시 requests.get(url, verify=False) 로 넣어주면됨. 

dict_data = xmltodict.parse(response.text) #xml을 json로 변환
json_data = json.dumps(dict_data, ensure_ascii=False)  #한글이 깨지면 ensure_ascii 코드를 False로 하면됨.
r_data = json.loads(json_data)  #json 변환

try :
    data = pd.DataFrame(r_data['response']['body']['item'])
except :
    data = pd.DataFrame(r_data['response']['body']['item'], index=[0])  #데이터프레임으로 보자 

data

# 간혹 밑의 에러가 뜨는 경우가 있음. 
#'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><response><header><resultCode>99</resultCode><resultMsg>SERVICE KEY IS NOT REGISTERED ERROR.</resultMsg></header></response>'
# 그럴 경우, https://www.data.go.kr/iim/api/selectAPIAcountView.do 에 들어가서
# 미리보기로 테스트 진행 이후 해당 service key를 넣어주면은 정상 작동됨.(utf -8 인코딩 문제인듯)
반응형

댓글