Hỗ Trợ Các vấn đề kỹ thuật + Share mấy thứ đồ chơi (Macro, Form ...) cho aE làm eBook

Thảo luận trong 'Ebook truyện dịch' bắt đầu bởi Decepticon, 13/9/13.

?

[Khảo Sát] aE làm eBook bằng công cụ gì

  1. Word cổ điển !=_=)

    50.7%
  2. Notepad++ kết hợp Word

    33.3%
  3. EmEditor kết hợp Notepad++

    10.7%
  4. Other

    5.3%
  1. Big Bang

    Big Bang Thành viên kích hoạt

    Được thích:
    130
    Về chuyện lấy text tự động ta coi code của trang web thấy thế này:
    - Format chuẩn để post chuyện:

    Tên truyện
    Tên quyển (nếu có)
    Chương 123: aaa bbb ccc
    Dịch giả: xxx
    Biên tập: bbb (nếu có)
    Đả tự: ccc (nếu có)
    Share by xxx (nếu có)

    Nội dung trong SPOILER

    - Thông tin cần lấy là tựa chương và nội dung trong SPOILER (phần tô màu xanh), những thứ khác coi như rác

    - trong code của trang web có rất nhiều link đến member. Ở mỗi chương có 1 link của poster và có thể nhiều link đến những member nhấn nút thank. Đặc điểm của link poster là nó nằm ngay ở trên mỗi chương, có nghĩa là nếu đi ngược từ dưới lên bắt đầu từ tựa chương thì link member đầu tiên là link poster. Link poster thường được format khác link member nhấn thank. Điều này giúp nhận diện chương mới và xử lý lỗi khi chương không được post theo chuẩn (không bỏ vào trong SPOILER hay một chương có nhiều SPOILER như khi convert)

    - SPOILER thường là tag <div> khá đặc trưng, rất dễ nhận ra.
    - Ở ngoài SPOILER xuống dòng dùng tag <p>, trong SPOILER dùng tag <br>
    - Thuận toán lấy text của ta đại loại thế này, ta mô tả sơ qua trường hợp text được post theo chuẩn:
    1. Tìm tựa chương dạng Chương 123: aaa bbb ccc
    2. Dò ngược lại xem link member đầu tiên có phải link poster không. Nếu cần xử lý trường hợp lỗi thì cần bước này, nếu coi như tất cả OK thì có thể bỏ qua. Thật ra xử lý lỗi mới là khó nhất, lấy được text post theo chuẩn chẳng có vấn đề gì.
    3. Chèn 2 chuỗi đánh dấu vào trước và sau tựa chương. Ví dụ chuyển:
    (các HTML open tags dùng để format tựa chương)Chương 123: aaa bbb ccc(các HTML closing tags dùng để format tựa chương)
    thành
    (các HTML open tags dùng để format tựa chương)
    _BEGIN_CHAPTER_TITLE_
    Chương 123: aaa bbb ccc
    _END_CHAPTER_TITLE_
    (các HTML closing tags dùng để format tựa chương)

    4. Tìm <div> đặc trưng cho SPOILER đầu tiên dưới tựa chương và thay nó bằng chuỗi đánh dấu _BEGIN_CHAPTER_CONTENTS_
    5. Tìm </div> đầu tiên bên dưới <div> đặc trưng cho SPOILER và thay nó bằng _END_CHAPTER_CONTENTS_

    Sau khi làm xong các bước đó thì source code của trang web có dạng:

    (text rác)
    _BEGIN_CHAPTER_TITLE_
    Chương 1: aaa bbb ccc
    _END_CHAPTER_TITLE_
    (text rác)
    _BEGIN_CHAPTER_CONTENTS_
    (nội dung chương)
    _END_CHAPTER_CONTENTS_
    (text rác)
    _BEGIN_CHAPTER_TITLE_
    Chương 2: ddd eee fff
    _END_CHAPTER_TITLE_
    (text rác)
    _BEGIN_CHAPTER_CONTENTS_
    (nội dung chương)
    _END_CHAPTER_CONTENTS_

    Khi đó chỉ cần 2 lần Replace All xóa tất cả những gì nằm giữa _END_CHAPTER_TITLE__BEGIN_CHAPTER_CONTENTS_, _END_CHAPTER_CONTENTS__BEGIN_CHAPTER_TITLE_ là xong.

    Khi lấy được nội dung rồi việc xóa các HTML tag khác như <p>, <br>, <font>, <span> ở phần nội dung chương không khó.

    Ghi chú: Nếu định kiểm tra lỗi thì làm bước 2 và thực hiện các bước 3-5 cho từng chương (làm từng bước). Nếu không định kiểm tra lỗi thì bỏ qua bước 2 và dùng 2 lần Replace All để thực hiện các bước 3-4 cho tất cả các chương. Bước 5 vẫn phải dò cho từng chương, đó là tag </div> đầu tiên sau _BEGIN_CHAPTER_CONTENTS_
    @pdota: sau này có thể ta phải tham khảo tool download trang web của lão. :))
     
    Chỉnh sửa cuối: 15/3/14
  2. phdota

    phdota Thành viên kích hoạt

    Được thích:
    0
    Ý tưởng của mình thế này:
    - Mình dò các elements match với cái pattern [Cc]hương|hươn|huwowng|hưng(.*). Sau đó lấy giá trị đầu tiên tìm được, và kiểm tra xem độ dài của nó <= 100 không (có trường hợp chap không có từ chương mà thay bằng từ hồi, và trong content thì có từ chương :D). Nếu ok thì mình get ra. Nhưng cũng bị exception mà chưa biết sửa thế nào. Bình thường ở phần đầu, mỗi 1 dòng sẽ sử dụng 1 căp html tag định dạng riêng, ví dụ <font size="5">Chương 1: abcxyz</font>, nhưng có trường hợp lại dính luôn 2-3 dòng trong 1 cặp như <font size="5">Chương 1: abcxyz<br />Tác giả: xyzabc</font>.
    - Với 4vn và TTV, mình giả thuyết là content chỉ đặt trong spoiler. Nên mở post đầu tiên, nếu không spoiler thì lấy toàn bộ nội dung ==> vẫn còn text rác.
     
  3. vlocyaiba

    vlocyaiba Thành viên kích hoạt

    Được thích:
    31
    ko biết có cách nào dùng "replace all" hoặc macro trong word để xóa những dòng rác trên không?
     
  4. Big Bang

    Big Bang Thành viên kích hoạt

    Được thích:
    130
    .
    Cẩn thận với cái pattern nhé. Phải kèm theo mấy cái html-tag đặc trưng dùng để format nữa. Nhiều poster chèn thêm nhiều câu có từ “Chương”, ví dụ “Tối nay còn chương 16.” Tại sao kiểm tra độ dài chương <= 100 ? Nếu dài hơn 100 thì không phải?

    Mấy cái định dạng <font> dùng để format tựa chương do poster chọn chứ không phải do web server nên nó thay đổi khó đoán. Thường thì có mẫu chung nhưng nếu poster đổi thì vẫn được. Đó là chưa kể họ lúc copy-paste vô tình thay đổi hay làm BBCode bị lỗi. Vì vậy dựa vào đó để xác định tựa chương cũng khá phiêu lưu. Nhiều poster kéo truyện từ nơi khác về không xóa tựa chương ở trong spoiler nên tựa chương bị đúp. Nếu dò pattern gặp tựa chương ở ngoài spoiler thì không có vấn đề gì, nhưng nếu gặp tựa chương “bỏ quên” trong spoiler thì dễ nhầm sang nội dung chương khác.

    Nói chung cần có cách nào đó nhận diện được chính xác tựa chương và nội dung, như vậy mới check & sửa được những lỗi như tựa chương bị đúp, có tựa chương không có nội dung, có nội dung mà không có tựa chương, post không có cả nội dung lẫn tựa (spam, thỉnh thoảng được mod cho phép hay lạm dụng :)) ). Nếu không xử lý được hết thì dễ xảy ra chuyện tựa chương nọ cắm vào nội dung chương kia, mà quan trọng nhất là chương trình không cảnh báo cho người dùng.

    .
    Tool của Dep và của BigBang đều có, tự xem source code nhé.
     
    Chỉnh sửa cuối: 15/3/14
  5. phdota

    phdota Thành viên kích hoạt

    Được thích:
    0
    Bình thường thì khi dùng pattern để search thì có thể tìm ra nhiều match. Nhưng vì số thứ tự và tên chương sẽ được đặt đầu tiên nên mình lấy kết quả thứ nhất.

    Dĩ nhiên là có trường hợp chương không có tựa (do quên, etc), mà trong content thì có từ chương. Thông thường nội dung sẽ được nhét chung vào spoiler nằm trong 1 cặp tag <div></div>. Vì thế cái khi mình get thì nó sẽ lôi tất cả nội dung trong cặp <div> </div> ra --> thông thường là sẽ rất dài và > 120 ký tư.

    Nhưng cũng có ngoại lệ, ví dụ đầu đề là
    Quyển X: Chương Y:
    Chương Z:
    thì cái pattern của mình sẽ lấy dòng đầu, nói chung là chỗ này khá dở. Mình chưa có cách nào xử lý triệt để được :D.
     

Thành viên đang xem bài viết (Users: 0, Guests: 2)