pydracor is a Python package which provides access to the DraCor API. It is based on pydracor-base which was automatically generated using OpenAPITools.
The development of this package was supported by Computational Literary Studies Infrastructure (CLS INFRA). CLS INFRA has received funding from the European Union’s Horizon 2020 research and innovation programme under grant agreement No 101004984.
pip install pydracor- DraCorAPI
Base class used to represent the Drama Corpus entity with which Corpus and Play are created.
- Corpus
A class with which the
corpora/{corpusname}endpoints can be requested - Play
A class with which the
corpora/{corpusname}/plays/{playname}endpoint can be requested - DTS
A class with which the
dtsendpoints can be requested - Wikidata
A class with which the
wikidataendpoints can be requested
from pydracor import DraCorAPI, Corpus, Play, Wikidata, DTS-
Initialize a DraCor instance
dracor = DraCorAPI()
-
Initialize a local DraCor instance by setting the host
dracor = DraCor(host="http://localhost:8088/api/v1")
-
Get summary as an Info object (
/info)dracor.get_info()
-
Get the list of available corpora in DraCor (
/info/copora) and get namescorpora = dracor.get_corpora() corpora_metrics = dracor.get_corpora(include='metrics') corpora_names = [corpus.name for corpus in corpora]
-
Get the resolved id for a play (
/id/{id})dracor.get_resolve_play_id("als000001")
-
Get the plays with characters by wikidata id
dracor.get_plays_with_character_by_id("Q131412")
-
Initialize a Corpus instance with the DraCor class (
/corpora/{corpusname})corpus = dracor.get_corpus('rus')
-
Corpus info as dictionary
corpus.to_dict()
-
Access corpus attributes, plays as a list of PlayInCorpus objects
corpus.name corpus.plays
-
Extract all play ids from the corpus
play_ids = [play.id for play in corpus.plays]
-
Filter plays: normalized year after 1800
plays_after_1800 = [play for play in corpus.plays if play.year_normalized > 1800]
-
Get list of metadata for all plays in a corpus (
/corpora/{corpusname}/metadata)metadata = corpus.metadata()
-
Filter plays: Number of Acts more than five
plays_more_than_five_acts = [play for play in metadata if play.num_of_acts > 5]
-
Convert metadata to DataFrame
import pandas as pd play_metadata_df = pd.DataFrame([play_metadata.to_dict() for play_metadata in metadata])
-
Get metadata as csv (
/corpora/{corpus}/metadata/csv)metadata_csv = corpus.get_metadata_csv()
-
Create Play in corpus (
corpora/{corpusname}/plays/{playname})play = corpus.get_play("gogol-revizor")
-
Initialize a Play instance by corpus name and play name (
corpora/{corpusname}/plays/{playname})play = dracor.get_play("ger","gengenbach-der-nollhart")
-
Extract summary in a dictionary
play.to_dict()
-
Access Play attributes
play.normalized_genre play.characters
-
Get and access network metrics for a single play (
corpora/{corpusname}/plays/{playname}/metrics)metrics = play.get_metrics() metrics.average_degree
-
Get a list of characters of a play (
corpora/{corpusname}/plays/{playname}/characters)characters = play.get_characters()
-
Convert character list to DataFrame
import pandas as pd df = pd.DataFrame([character.to_dict() for character in characters])
-
Get a list of characters of a play as csv (
corpora/{corpusname}/plays/{playname}/characters/csv)play.get_characters_csv()
-
Get networkdata of a play in different formats (
corpora/{corpusname}/plays/{playname}/networkdata/{graphml, gexf, csv})play.get_networkdata("graphml") play.get_networkdata("gexf") play.get_networkdata("csv")
-
Get relations of a play in different formats (
corpora/{corpusname}/plays/{playname}/relations/{graphml, gexf, csv})play.get_relations("graphml") play.get_relations("gexf") play.get_relations("csv")
-
Get spoken text of a play (excluding stage directions) (
corpora/{corpusname}/plays/{playname}/spoken-text)play.get_spoken_text() play.get_spoken_text(sex='MALE') play.get_spoken_text(relation='siblings')
-
Get spoken text for each character of a play (
corpora/{corpusname}/plays/{playname}/spoken-text-by-character)play.get_spoken_text_by_character()
-
Get stage directions of a play (
corpora/{corpusname}/plays/{playname}/stage-directions)play.get_stage_directions()
-
Get stage directions and speaker text of a play (
corpora/{corpusname}/plays/{playname}/stage-directions-with-speakers)play.get_stage_directions_with_speakers()
-
Initialize a DTS instance
dts = DTS()
-
Get Entrypoint of the DraCor DTS implementation (
/dts)dts.get_dts()
-
Get the list of the available collections of a corpus (
/dts/collection)dts.get_collection("rus")
-
Use navigation endpoint of DTS (
/dts/navigation)dts.get_navigation("rus000160", "body/div[1]") dts.get_navigation("rus000160", start="body/div[2]/div[1]", end="body/div[2]/div[2]")
-
Use document endpoint of DTS (
/dts/document)dts.get_document("rus000160", "body/div[1]") dts.get_document("rus000160", start="body/div[2]/div[1]", end="body/div[2]/div[2]")
-
Initialize a Wikidata instance
wikidata = Wikidata()
-
Get author information by WikidataID
author_info = wikidata.get_author_info("Q34628")
-
Get Wikidata Mix'n'match information as CSV
wikidata_mixnmatch = wikidata.get_mixnmatch()
MIT