Dropbox 종이 문서에서 데이터를 가져와서 json 데이터 구조로 변환하는 노드 모듈입니다.
create app
Dropbox API
선택했습니다Full Dropbox
선택했습니다.News Mixer
document id
받기예를 들어 보관용 문서의 URL이 다음과 같은 경우
https://paper.dropbox.com/doc/Main-Title-vJdrjMJAHdgfHz0rl83Z
그런 다음 마지막 -
뒤의 마지막 문자열 요소(왼쪽에서 오른쪽으로 읽음)가 문서 ID입니다.
이 가상의 예에서는 vJdrjMJAHdgfHz0rl83Z
입니다.
.env
에 DROPBOX_ACCESS_TOKEN
추가합니다.이 프로젝트는 dotenv를 사용하여 자격 증명 및 환경 변수를 처리합니다.
폴더 repo의 루트에서 .env
파일을 생성합니다. 이 파일은 자격 증명 유출을 방지하기 위해 .gitignore
에 의해 github repo에서 제외됩니다.
다음은 가상의 자격 증명이 포함된 .env
파일 형식의 예입니다.
# Dropbox credentials
DROPBOX_ACCESS_TOKEN=vJdrjMJAHdgfHz0rl83ZvJdrjMJAHdgfHz0rl83Z
DROPBOX_DOC_ID=vJdrjMJAHdgfHz0rl83Z
이 저장소를 복제하세요
git clone [email protected]:bbc/dropbox-paper-to-json.git
CD를 폴더로
cd dropbox-paper-to-json
npm install
npm start
그러면 프로젝트 루트에 data.json
파일이 저장됩니다.
npm 설치
npm install dropbox-paper-to-json@git+ssh://[email protected]/bbc/dropbox-paper-to-json.git#master -save
코드 베이스에 추가
//if using dotenv for environment variable credentials for dropbox paper
require ( 'dotenv' ) . config ( ) ;
// optional if you want to write the resulting json
const fs = require ( 'fs' ) ;
// require module
const dbpMdToJson = require ( 'dropbox-paper-to-json' ) ;
dbpMdToJson ( {
accessToken : process . env . DROPBOX_ACCESS_TOKEN ,
dbp_doc_id : process . env . DROPBOX_DOC_ID ,
// default for nested === true
nested : true
} ) . then ( ( data ) => {
console . log ( `done Dropbox Paper to JSON conversion` ) ;
// optional: now do something with the data
fs . writeFileSync ( './data.json' , JSON . stringify ( data , null , 2 ) ) ;
} ) ;
시스템 아키텍처에 대한 높은 수준의 개요
모듈은 dpb-download-md
노드 모듈을 사용하여 드롭박스 문서 ID와 액세스 토큰이 지정된 드롭박스 문서를 마크다운으로 가져옵니다.
공식 SDK에는 Dropbox 종이 문서 콘텐츠에 접근하는 간단한 방법이 없는 것 같았습니다.
하위 모듈 md-to-json/linear.js
마크다운 파일의 내용을 문자열로 가져와 이를 마크다운 요소를 나타내는 객체 배열로 변환합니다.
중첩이 없는 평면 데이터 구조이므로 선형이라고도 하는 이유가 무엇입니까?
[
{
"text" : " Chapter 1 " ,
"type" : " h1 "
},
{
"text" : " Text " ,
"type" : " h2 "
},
{
"text" : " vitae elementum velit urna id mi. Sed sodales arcu mi, eu condimentum tellus ornare non. Aliquam non mauris purus. Cras a dignissim tellus. Cras pharetra, felis et convallis tristique, sapien augue interdum ipsum, aliquet rhoncus enim diam vitae eros. Cras ullamcorper, lectus id commodo volutpat, odio urna venenatis tellus, vitae vehicula sapien velit eu purus. Pellentesque a feugiat ex. Proin volutpat congue libero vitae malesuada. " ,
"type" : " p "
},
{
"text" : " Video " ,
"type" : " h2 "
},
...
]
일부 사용 사례에서는 h1 태그와 다음 h1 태그 사이의 모든 요소를 해당 태그의 형제/자식/요소로 중첩하는 것이 도움이 될 수 있습니다.
예를 들어 h1 태그에는 h2, p 태그, 링크 등이 포함될 수 있습니다.
마찬가지로 h2 태그에는 다음 h2 또는 h1 태그까지의 다른 모든 요소가 포함될 수 있습니다.
참고 마크다운의 Dropbox Paper 버전은 H1
및 H2
태그만 올바르게 표시하므로 이 사용 사례에서는 두 수준에서만 중첩을 중단했습니다. 그러나 사용 사례가 있는 경우 추가로 중첩될 수 있습니다.
이는 md-to-json/index.js
에서 수행됩니다.
{
"title" : " TEST CMS " ,
"elements" : [
{
"text" : " Chapter 1 " ,
"type" : " h1 " ,
"elements" : [
{
"text" : " some text element between h1 and h2 tags " ,
"type" : " p "
},
{
"text" : " text " ,
"type" : " h2 " ,
"elements" : [
{
"text" : " vitae elementum velit urna id mi. Sed sodales arcu mi, eu condimentum tell. " ,
"type" : " p "
}
]
},
...
}
전체 예제는 md-to-json/examples/example_output.json
참조하세요.
개발 환경을 실행하는 방법
코딩 스타일 규칙 참조 선택 사항(예: 어떤 린터를 사용할지)
Linting, github pre-push 후크 - 선택 사항
.eslintrc.json
참조하세요. 빌드 실행 방법
나 ?
테스트 수행 방법
테스트를 실행하기 위해 테스트용 jest
사용하는 최소 테스트 적용 범위:
npm test
코드/앱을 테스트/스테이징/프로덕션에 배포하는 방법
NA, 노드 모듈입니다.
안타깝게도 Dropbox 문서에는 마크다운이라는 자체적인 결함이 있습니다. 가장 관련성이 높고 주목할만한 차이점은 다음과 같습니다.
heading 1
요소는 모두 h1
/ #
으로 표시되어 있습니다.Heading 3
h3
/ ###
대신 굵은 **
으로 표시됩니다. dropbox 플레이버 마크다운 파일의 예는 md-to-json/examples/test.md
참조하세요.
H3
태그(dropbox paper markdown은 굵은 글씨로 표시됨 **
h3
~ h6
을 분석하면 dropbox paper markdown에서 생성되지 않은 것으로 간주됩니다. 이미지에 대한 마크다운 github 플레이버 태그를 구문 분석합니다(예: ![alt text](link url)
. 이는 자체 행에 표시됩니다.
링크에 대한 마크다운 github 플레이버 태그 구문 분석(예: [text](link url)
이는 일반적으로 단락의 일부로 표시되지만 자체 줄이나 제목 등의 일부로 표시될 수도 있습니다.