Source code for scholarly.data_types

import sys

from enum import Enum
from typing import List, Dict

if sys.version_info >= (3, 8):
    from typing import TypedDict 
else:
    from typing_extensions import TypedDict


[docs]class PublicationSource(str, Enum): ''' Defines the source of the publication. In general, a publication on Google Scholar has two forms: * Appearing as a PUBLICATION SNIPPET and * Appearing as a paper in an AUTHOR PAGE ------------ "PUBLICATION SEARCH SNIPPET". This form captures the publication when it appears as a "snippet" in the context of the resuls of a publication search. For example: Publication search: https://scholar.google.com/scholar?hl=en&q=adaptive+fraud+detection&btnG=&as_sdt=0%2C33 The entries appear under the <div class = "gs_r gs_or gs_scl"> tags Each entry has a data-cid attribute (e.g., data-cid="pthm1bWT96oJ") The same type of results will also appear when someome searches using the "cited by", "related articles", and "all XX versions" links that appear under the publication snippet. "Cited By" link: https://scholar.google.com/scholar?cites=12319477714873931942&as_sdt=5,33&sciodt=0,33&hl=en "Related Articles" link: https://scholar.google.com/scholar?q=related:pthm1bWT96oJ:scholar.google.com/&scioq=adaptive+fraud+detection&hl=en&as_sdt=0,33 "All versions" link: https://scholar.google.com/scholar?cluster=12319477714873931942&hl=en&as_sdt=0,33 The snippet version of these publications contain the information that appears in the results. Often, the snippet version will miss authors, will have an abbreviated name for the venue, and so on. We can fill these snippets by clicking on the "Cite" button" and get back the MLA/APA/Chicago/... citations forms, PLUS links for BibTeX, EndNote, RefMan, and RefWorks. ------------ "AUTHOR PUBLICATION ENTRY" We also have publications that appear in the "author pages" of Google Scholar. These publications are often a set of publications "merged" together. The snippet version of these publications conains the title of the publication, a subset of the authors, the (sometimes truncated) venue, and the year of the publication and the number of papers that cite the publication. The snippet entries appear under the <tr class="gsc_a_tr"> entries in the main page of the author. To fill in the publication, we open the "detailed view" of the paper Detailed view page: https://scholar.google.com/citations?view_op=view_citation&hl=en&citation_for_view=-Km63D4AAAAJ:d1gkVwhDpl0C ''' PUBLICATION_SEARCH_SNIPPET = "PUBLICATION_SEARCH_SNIPPET" AUTHOR_PUBLICATION_ENTRY = "AUTHOR_PUBLICATION_ENTRY"
[docs]class AuthorSource(str, Enum): ''' Defines the source of the HTML that will be parsed. Author page: https://scholar.google.com/citations?hl=en&user=yxUduqMAAAAJ Search authors: https://scholar.google.com/citations?view_op=search_authors&hl=en&mauthors=jordan&btnG= Coauthors: From the list of co-authors from an Author page ''' AUTHOR_PROFILE_PAGE = "AUTHOR_PROFILE_PAGE" SEARCH_AUTHOR_SNIPPETS = "SEARCH_AUTHOR_SNIPPETS" CO_AUTHORS_LIST = "CO_AUTHORS_LIST"
''' Lightweight Data Structure to keep distribution of citations of the years ''' CitesPerYear = Dict[int, int]
[docs]class BibEntry(TypedDict, total=False): """ :class:`BibEntry <BibEntry>` The bibliographic entry for a publication (When source is not specified, the field is present in all sources) :param pub_type: the type of entry for this bib (for example 'article') (source: PUBLICATION_SEARCH_SNIPPET) :param bib_id: bib entry id (source: PUBLICATION_SEARCH_SNIPPET) :param abstract: description of the publication :param title: title of the publication :param author: list of author the author names that contributed to this publication :param pub_year: the year the publication was first published :param venue: the venue of the publication (source: PUBLICATION_SEARCH_SNIPPET) :param journal: Journal Name :param volume: number of years a publication has been circulated :param number: NA number of a publication :param pages: range of pages :param publisher: The publisher's name :param pub_url: url of the website providing the publication """ pub_type: str bib_id: str abstract: str title: str author: str pub_year: str venue: str journal: str volume: str number: str pages: str publisher: str
[docs]class Publication(TypedDict, total=False): """ :class:`Publication <Publication>` object used to represent a publication entry on Google Scholar. (When source is not specified, the field is present in all sources) :param BibEntryCitation: contains additional information about the publication :param gsrank: position of the publication in the query (source: PUBLICATION_SEARCH_SNIPPET) :param author_id: list of the corresponding author ids of the authors that contributed to the Publication (source: PUBLICATION_SEARCH_SNIPPET) :param num_citations: number of citations of this Publication :param cites_id: This corresponds to a "single" publication on Google Scholar. Used in the web search request to return all the papers that cite the publication. If cites_id = 16766804411681372720 then: https://scholar.google.com/scholar?cites=<cites_id>&hl=en If the publication comes from a "merged" list of papers from an authors page, the "citedby_id" will be a comma-separated list of values. It is also used to return the "cluster" of all the different versions of the paper. https://scholar.google.com/scholar?cluster=16766804411681372720&hl=en (source: AUTHOR_PUBLICATION_ENTRY) :param citedby_url: This corresponds to a "single" publication on Google Scholar. Used in the web search request to return all the papers that cite the publication. https://scholar.google.com/scholar?cites=16766804411681372720hl=en If the publication comes from a "merged" list of papers from an authors page, the "citedby_url" will be a comma-separated list of values. It is also used to return the "cluster" of all the different versions of the paper. https://scholar.google.com/scholar?cluster=16766804411681372720&hl=en :param cites_per_year: a dictionay containing the number of citations per year for this Publication (source: AUTHOR_PUBLICATION_ENTRY) :param eprint_url: digital version of the Publication. Usually it is a pdf. :param pub_url: url of the website providing the publication :param author_pub_id: The id of the paper on Google Scholar from an author page. Comes from the parameter "citation_for_view=PA9La6oAAAAJ:YsMSGLbcyi4C". It combines the author id, together with a publication id. It may corresponds to a merging of multiple publications, and therefore may have multiple "citedby_id" values. (source: AUTHOR_PUBLICATION_ENTRY) :param url_related_articles: the url containing link for related articles of a publication (needs fill() for AUTHOR_PUBLICATION_ENTRIES) :param url_add_sclib: (source: PUBLICATION_SEARCH_SNIPPET) :param url_scholarbib: the url containing links for the BibTeX entry, EndNote, RefMan and RefWorks (source: PUBLICATION_SEARCH_SNIPPET) :param filled: whether the publication is fully filled or not :param source: The source of the publication entry :param container_type: Used from the source code to identify if this container object is an Author or a Publication object. """ bib: BibEntry gsrank: int author_id: List[str] num_citations: int cites_id: List[str] citedby_url: str cites_per_year: CitesPerYear author_pub_id: str eprint_url: str pub_url: str url_add_sclib: str url_related_articles: str url_scholarbib: str filled: bool source: PublicationSource container_type: str
[docs]class Author(TypedDict, total=False): """ :class:`Author <Author>` object used to represent an author entry on Google Scholar. (When source is not specified, the field is present in all sources) :param scholar_id: The id of the author on Google Scholar :param name: The name of the author :param affiliation: The affiliation of the author :param email_domain: The email domain of the author (source: SEARCH_AUTHOR_SNIPPETS, AUTHOR_PROFILE_PAGE) :param url_picture: The URL for the picture of the author :param citedby: The number of citations to all publications. (source: SEARCH_AUTHOR_SNIPPETS) :param filled: The list of sections filled out of the total set of sections that can be filled :param interests: Fields of interest of this Author (sources: SEARCH_AUTHOR_SNIPPETS, AUTHOR_PROFILE_PAGE) :param citedby5y: The number of new citations in the last 5 years to all publications. (source: SEARCH_AUTHOR_SNIPPETS) :param hindex: The h-index is the largest number h such that h publications have at least h citations. (source: SEARCH_AUTHOR_SNIPPETS) :param hindex5y: The largest number h such that h publications have at least h new citations in the last 5 years. (source: SEARCH_AUTHOR_SNIPPETS) :param i10index: This is the number of publications with at least 10 citations. (source: SEARCH_AUTHOR_SNIPPETS) :param i10index5y: The number of publications that have received at least 10 new citations in the last 5 years. (source: SEARCH_AUTHOR_SNIPPETS) :param cites_per_year: Breakdown of the number of citations to all publications over the years (source: SEARCH_AUTHOR_SNIPPETS) :param publications: A list of publications objects. (source: SEARCH_AUTHOR_SNIPPETS) :param coauthors: A list of coauthors (list of Author objects) (source: SEARCH_AUTHOR_SNIPPETS) :param container_type: Used from the source code to identify if this container object is an Author or a Publication object. :param source: The place where the author information are derived """ scholar_id: str name: str affiliation: str email_domain: str url_picture: str citedby: int filled: List[str] interests: List[str] citedby5y: int hindex: int hindex5y: int i10index: int i10index5y: int cites_per_year: CitesPerYear publications: List[Publication] coauthors: List # List of authors. No self dict functionality available container_type: str source: AuthorSource