Deadly dimple unofficial dcinside api


License
MIT
Install
pip install dc-api==0.8.0

Documentation

dcinside-python3-api

Deadly simple non official async dcinside api for python3

# ν”„λ‘œκ·Έλž˜λ° 가러리 κΈ€ λ¬΄ν•œ 크둀링
import asyncio
import dc_api

async def run():
  async with dc_api.API() as api:
    async for index in api.board(board_id="programming"):
        print(index.title)            # => 땔감 λ²—μ–΄λ‚˜λŠ”λ²•.tip
        doc = await index.document()
        print(doc.contents)           # => μžλ°”λ₯Ό ν•œλ‹€
        for img in doc.images:
          img.download('./img')       # => ./img.gif
        async for comm in index.comments():
            print(com.contents)       # => γ…‡γ…‡(1.224) μ§€λž„ γ„΄

asyncio.run(run())
import asyncio
import dc_api

async def run():
  api = dc_api.API()

  # λŒ“κΈ€ μž‘μ„±
  await api.write_comment(board_id="programming", doc_id=149123, name="γ…‡γ…‡", password="1234", contents="γ…‡γ…ˆ")

  # κΈ€ μž‘μ„±
  doc_id = await api.write_document(board_id="programming", title="java vs python", contents="λ‹₯치고 μžλ°”", name="γ…‡γ…‡", password="1234")

  # κΈ€ μ‚­μ œ
  await api.remove_document(board_id="programming", doc_id=doc_id, password="1234")

  # λ§ˆμ΄λ„ˆκ°€ κΈ€ μž‘μ„±
  doc_id = await api.write_document(board_id="aoegame", title="java vs python", contents="λ‹₯치고 μžλ°”", name="γ…‡γ…‡", password="1234", is_minor=True)

  await api.close()

asyncio.run(run())

Dependency

python(>3.6) aiohttp, lxml

Features

  • Board crawling
  • Fetch document body
  • Fetch comments
  • Fetch document images
  • Write/Modify/Delete document
  • Write comment
  • Delete comment
  • Login/Logout
  • Upvote/Downvote

Usage

Place dc_api.py in your working directory

or install via pip

pip3 install --user dc_api
import dc_api

api = dc_api.API()

async for index in api.board(board_id="programming", num=-1, start_page=1, document_id_upper_limit=None, document_id_lower_limit=None):
    index.id         # => 835027
    index.board_id   # => programming
    index.title      # => "땔감 λ²—μ–΄λ‚˜λŠ”λ²•.tip"
    index.author     # => "γ…‡γ…‡(10.20)"
    index.time       # => datetime("2020-01-01 01:41:00.000000")
    index.comment_count # => 3
    index.voteup_count  # => 0
    index.view_count    # => 14

    doc = await index.document()
    doc.id         # => 835027
    doc.board_id   # => "programming"
    doc.title      # => "땔감 λ²—μ–΄λ‚˜λŠ”λ²•.tip"
    doc.author     # => "γ…‡γ…‡(10.20)"
    doc.author_id  # => None (고닉일 경우 고닉 아이디 λ°˜ν™˜)
    doc.time       # => datetime("2020-01-01 01:41:00.000000")
    doc.comment_count   # => 3
    doc.voteup_count    # => 0
    doc.logined_voteup_count  # => 0
    doc.votedown_count  # => 0
    doc.view_count # => 14.id
    doc.contents   # => "μžλ°”λ₯Ό ν•œλ‹€"
    doc.html       # => "<p> μžλ°”λ₯Ό ν•œλ‹€ </p>" 

    for image in doc.images:
        image.src         # => "https://..."
        image.document_id # => 835027
        image.board_id    # => "programming"
        await image.load()# => raw image binary
        await image.download(path) # => download image to local path(automatically add ext)

    async for com in index.comments():
        com.id            # => 123123
        com.is_reply      # => False
        com.time          # => "1:55"
        com.author        # => "γ…‡γ…‡(192.23)"
        com.author_id     # => None (고닉일 경우 아이디 λ°˜ν™˜)
        com.contents      # => "κ°œμ†” γ„΄γ„΄"
        com.dccon         # => None (λ””μ‹œμ½˜μΌκ²½μš° λ””μ‹œμ½˜ μ£Όμ†Œ λ°˜ν™˜)
        com.voice         # => None (λ³΄μ΄μŠ€λ¦¬ν”ŒμΌκ²½μš° λ³΄μ΄μŠ€λ¦¬ν”Œ μ£Όμ†Œ λ°˜ν™˜)

        
doc = await api.document(board_id="programming", document_id=835027)

async for comm in api.comments(board_id="programming", document_id=835027):
    comm


doc_id = await api.write_document(board_id="programming",
                               name="μ μ§„μ μžμ‚΄", password="1234", 
                               title="제λͺ©", contents="λ‚΄μš©", is_minor=False)
doc_id = await api.modify_document(board_id="programming", document_id=document_id, 
                          name="μ–„νŒŒκ³ ", pw="1234", 
                          title="μˆ˜μ •λœ 제λͺ©", contents="μˆ˜μ •λœ λ‚΄μš©", is_minor=False)
com_id = await api.write_comment(board_id="programming", document_id=doc_id, 
                           name="μ μ§„μ μžμ‚΄", password="1234", contents="섀리")
await api.remove_document(board_id="programming", document_id=document_id, password="1234")