LV2 문서 생성 도구는 RDFLib를 사용합니다. 아마도 거북이를 파싱하는 것 이상의 의미가 있지만 파이썬을위한 가장 널리 사용되는 RDF 인터페이스 일 것입니다. 성능에 문제가 없다면 좋은 선택이지만, 불행히도 은 정말입니다.
실제로 플러그인을 인스턴스화하고 사용해야하는 경우 기존 LV2 구현을 사용하는 것이 좋습니다. 스티브가 말했듯이, Lilv입니다. 정적 기본 위치에 국한되지 않고 LV2_PATH의 모든 위치를 볼 것입니다. Lilv를 호출하기 전에이 환경 변수를 원하는 값으로 설정할 수 있으며이 값은 해당 위치에서만 볼 수 있습니다. 또는 한 번에 단 하나의 번들만을로드하려면 lilv_world_load_bundle() 함수가 필요합니다.
Lilv에 포함 된 SWIG 기반 Python 바인딩이 있지만 실제로는 데이터 처리가 불가능합니다. 그러나 scipy 배열을 사용하여 오디오를 처리 할 수있는 Lilv를 감싸는 프로젝트가 있습니다 (이름에도 불구하고 실제로 Lilv 바인딩이고 이전의 SLV2에 대한 바인딩이 아닙니다)
정적 정보 만 가져와야하는 경우 터틀 파일에서 C 라이브러리를 사용하는 것이 아마도 가치보다 더 많은 문제 일 것입니다. 표준 데이터 파일을 사용하면 큰 장점 중 하나는 기존 도구를 사용하여 쉽게 사용할 수 있다는 것입니다. 플러그인의 포트 수를 얻으려면 패턴과 일치하는 트리플 수를 계산하면됩니다 (플러그인, lv2 : port, *). 여기에 플러그인의 포트의 수를 출력하는 예 파이썬 스크립트를 읽을 수있는 파일 및 명령 줄 인수로 플러그인 URI 주어진입니다 :
#!/usr/bin/env python
import rdflib
import sys
lv2 = rdflib.Namespace('http://lv2plug.in/ns/lv2core#')
path = sys.argv[1]
plugin = rdflib.URIRef(sys.argv[2])
model = rdflib.ConjunctiveGraph()
model.parse(path, format='n3')
num_ports = 0
for i in model.triples(plugin, lv2.port, None]):
num_ports += 1
print('%s has %u ports' % (plugin, num_ports))
게시물을 편집하여 구문 분석 할 데이터 샘플을 추가 할 수 있습니까? 예를 들어를 사용하여 원하는 것을 쉽게 찾을 수 있습니다. 정규 표현식 ('re' 모듈) –
거북이는 RDF 데이터의 구문입니다. [RDFlib] (https://github.com/RDFLib)를 사용해보십시오. –
어쩌면 LILV와 같은 것을 찾아야 할 것입니다 : http://drobilla.net/software/lilv/ 네이티브 파이썬과 함께 가고 싶다면 터틀을 읽을 수있는 도구가 많이 있습니다. 이미 호출 할 수 있다면 LADSPA 기능을 사용하면 거북이를 파싱 한 후 LV2가 훨씬 쉽습니다. –