Async Scopus Client to interact with their HTTP interface. Includes automatic retry and API keys swapping.
import asyncio
from scopus_client import ScopusClient, InvalidStringError
API_KEYS: list[str] = []
async def main():
search_string = 'TITLE-ABS-KEY("machine learning" and "code smell") AND PUBYEAR > 2010 AND PUBYEAR < 2020'
client = ScopusClient(API_KEYS)
entries: list[dict] = []
try:
async for page in client.search(search_string):
entries.extend(page.entries)
except InvalidStringError:
print(f"String `{search_string}` is invalid. It might be too long.")
print(entries)
if __name__ == "__main__":
asyncio.run(main())Create a virtual environment:
python -m venv .venvActivate the virtual environment:
source .venv/bin/activate # if using linuxInstall the project in editable mode:
pip install -e .Install test dependencies:
pip install ".[dev-test]"Run the test command from the provided script:
./scripts/test.shAfter running the tests, a coverage report will be available in htmlcov/index.html. You can run the following command to open the report using google chrome:
google-chrome htmlcov/index.html
