Modul Node untuk mengimpor data dari dokumen kertas dropbox dan mengubahnya menjadi struktur data json.
create app
dari konsol pengembangDropbox API
Full Dropbox
News Mixer
document id
kertas dropboxmisal jika url kertas dropbox anda kira-kira seperti itu
https://paper.dropbox.com/doc/Main-Title-vJdrjMJAHdgfHz0rl83Z
Kemudian elemen string terakhir setelah -
terakhir, dibaca dari kiri ke kanan, adalah id dokumen Anda.
Dalam contoh fiktif ini adalah: vJdrjMJAHdgfHz0rl83Z
.
DROPBOX_ACCESS_TOKEN
ke .env
Proyek ini menggunakan dotenv untuk menangani kredensial dan variabel lingkungan.
Di root folder repo buat file .env
, ini dikecualikan dari repo github oleh .gitignore
untuk menghindari kebocoran kredensial.
Berikut ini contoh format file .env
, dengan beberapa kredensial fiktif
# Dropbox credentials
DROPBOX_ACCESS_TOKEN=vJdrjMJAHdgfHz0rl83ZvJdrjMJAHdgfHz0rl83Z
DROPBOX_DOC_ID=vJdrjMJAHdgfHz0rl83Z
mengkloning repo ini
git clone [email protected]:bbc/dropbox-paper-to-json.git
cd ke dalam folder
cd dropbox-paper-to-json
npm install
npm start
Ini akan menyimpan file data.json
di root proyek.
instalasi npm
npm install dropbox-paper-to-json@git+ssh://[email protected]/bbc/dropbox-paper-to-json.git#master -save
Tambahkan ke basis kode Anda
//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 ) ) ;
} ) ;
Ikhtisar tingkat tinggi arsitektur sistem
Modul ini menggunakan modul simpul dpb-download-md
untuk mendapatkan kertas dropbox sebagai penurunan harga dengan id kertas dropbox dan token akses.
Karena SDK resmi tampaknya tidak memiliki cara mudah untuk mendapatkan konten dokumen kertas dropbox.
Submodul md-to-json/linear.js
mengambil konten file penurunan harga sebagai string dan mengubahnya menjadi array objek, yang mewakili elemen penurunan harga.
ini adalah struktur data datar, tanpa sarang, oleh karena itu kadang-kadang disebut linier.
[
{
"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 "
},
...
]
Untuk beberapa kasus penggunaan, mungkin akan lebih baik jika menyatukan semua elemen di antara tag h1 ke tag h1 berikutnya sebagai saudara/anak/elemen dari tag tersebut.
Misal tag h1 bisa berisi h2, tag p, link dll.
Demikian pula tag h2 dapat berisi semua elemen lain hingga tag h2 atau h1 berikutnya.
CATATAN Jenis kertas dropbox dari penurunan harga hanya mewakili tag H1
dan H2
dengan tepat, oleh karena itu mengapa kami menghentikan penyarangan hanya pada dua tingkat untuk kasus penggunaan ini. Tapi itu bisa disarangkan lebih jauh jika ada kasus penggunaannya.
Ini dilakukan di 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 "
}
]
},
...
}
Untuk contoh lengkap lihat md-to-json/examples/example_output.json
.
Bagaimana menjalankan lingkungan pengembangan
Konvensi gaya pengkodean bersifat opsional, misalnya linter mana yang akan digunakan
Linting, kait pra-dorong github - opsional
.eslintrc.json
Cara menjalankan build
TIDAK ?
Cara melakukan tes
Cakupan pengujian minimal menggunakan jest
untuk pengujian, untuk menjalankan pengujian:
npm test
Cara menerapkan kode/aplikasi ke pengujian/pementasan/produksi
NA, ini adalah modul simpul.
Sayangnya, kertas Dropbox memiliki kelemahan tersendiri dalam penurunan harga. Beberapa perbedaan yang paling relevan dan menonjol adalah:
heading 1
pertama, keduanya ditandai dengan h1
/ #
.Heading 3
ditampilkan dalam huruf tebal **
bukan h3
/ ###
. lihat md-to-json/examples/test.md
sebagai contoh file penurunan harga rasa dropbox.
H3
, karena penurunan harga kertas dropbox menyatakannya sebagai huruf tebal **
h3
hingga h6
karena tidak dihasilkan oleh penurunan harga kertas dropbox. Mengurai tag rasa github penurunan harga untuk gambar misalnya ![alt text](link url)
. Ini muncul di barisnya sendiri.
Mengurai tag rasa github penurunan harga untuk tautan misalnya [text](link url)
ini biasanya muncul sebagai bagian dari paragraf, tetapi juga dapat muncul di barisnya sendiri, atau sebagai bagian dari judul, dll.