BatchMarc memproses file marc di mana saja + js

Semua berang-berang!
Hari ini adalah hari Jumat, dan itu berarti saatnya mengambil stok!

Melanjutkan tema klub perpustakaan kami, aku cepat-cepat membuat semua orang terlibat sedikit bahagia: Aku berhasil!

Setelah lautan sel-sel saraf yang dihabiskan, setelah banyak dokumentasi tentang format marc, dan sekelompok kruk, saya masih mengumpulkan konverter yang relatif waras (tetapi masih dengan kode yang mengerikan :)) (+ handler + semua yang cukup untuk fantasi) untuk format marc.

https://github.com/HerzenLibRu/BatchMarc (handler, aturan ditulis dalam js)

https://github.com/t0pep0/marc21 (perpustakaan on Go untuk bekerja dengan format marc)



Anda dapat menjalankannya seperti ini:
jalankan main.go inputFile.ldb outputFile.ldb rules.js

Aturan diterapkan untuk setiap entri marc dalam file.
Dokumentasi belum ditulis, tetapi apakah segalanya ada di depan kita? =)

Beberapa nuansa perpustakaan (dan, karenanya, dari konverter):
  • subbidang disimpan dalam daftar tertaut dengan pengurutan saat ditambahkan (permintaan spesifik dari kolega tidak mengizinkan penggunaan hashmap)
  • Memberi Nama Bendera Pemimpin yang Tidak Mungkin Anda Sukai


Fitur aturan penulisan:
Ketika aturan Anda mulai berjalan, sudah ada dua objek: orig dan res - orig - catatan asli, res - apa yang akhirnya akan ditulis ke file output, dan ketika aturan Anda mulai, res adalah objek kosong, hanya diinisialisasi, di sedangkan orig diisi dengan data

  function VariableSubField(name, data){
      this.Name = name;
      this.Data = data;
    }

    function VariableField(tag, indicatorOne, indicatorTwo) {
      this.Tag = tag;
      this.IndicatorOne = indicatorOne;
      this.IndicatorTwo = indicatorTwo;
      this.RawData = [];
      this.SubField = [];
    }

    function Leader() {
        this.Status = "";
        this.Type = "";
        this.BibLevel = "";
        this.ControlType = "";
        this.CharacterEncoding = "";
        this.IndicatorCount = "";
        this.SubfieldCodeCount = "";
        this.EncodingLevel = "";
        this.CatalogingForm = "";
        this.MultipartLevel = "";
        this.LengthOFFieldPort = "";
        this.StartCharPos = "";
        this.LengthImplemenDefine = "";
        this.Undefine = "";
    }

    function MarcRecord(){
      this.Leader = new Leader()
      this.VariableField = []
    };

    orig = new MarcRecord();
    res = new MarcRecord();


Ketika aturan Anda berhasil, Go akan mengambil data dari res, dan menulisnya ke file.

Perhatian! Kode tidak dioptimalkan, menganggapnya sebagai produk terkecil yang layak.

Contoh aturan dapat ditemukan di repositori BatchMarc.

PullRequest, IssueRequest - diterima oleh

UPD: js untuk aturan penulisan dipilih sebagai bahasa yang paling banyak didistribusikan (di lingkungan perpustakaan, termasuk)

Source: https://habr.com/ru/post/id395377/


All Articles