Example #1
0
def sniffer(item_aliases, provider_config=default_settings.PROVIDERS):

    (genre, host) = item_module.decide_genre(item_aliases)

    all_metrics_providers = [provider.provider_name for provider in 
                    ProviderFactory.get_providers(provider_config, "metrics")]

    if (genre == "article") and (host != "arxiv"):
        run = [[("aliases", provider)] for provider in ["mendeley", "crossref", "pubmed", "altmetric_com"]]
        run += [[("biblio", provider) for provider in ["crossref", "pubmed", "mendeley", "webpage"]]]
        run += [[("metrics", provider) for provider in all_metrics_providers]]
    elif (host == "arxiv") or ("doi" in item_aliases):
        run = [[("aliases", provider)] for provider in [host, "altmetric_com"]]
        run += [[("biblio", provider) for provider in [host, "mendeley"]]]
        run += [[("metrics", provider) for provider in all_metrics_providers]]
    else:
        # relevant alias and biblio providers are always the same
        relevant_providers = [host]
        if relevant_providers == ["unknown"]:
            relevant_providers = ["webpage"]
        run = [[("aliases", provider)] for provider in relevant_providers]
        run += [[("biblio", provider) for provider in relevant_providers]]
        run += [[("metrics", provider) for provider in all_metrics_providers]]

    return(run)
Example #2
0
    def sniffer(cls,
                item_aliases,
                aliases_providers_run,
                provider_config=default_settings.PROVIDERS):
        # default to nothing
        aliases_providers = []
        biblio_providers = []
        metrics_providers = []

        all_metrics_providers = [
            provider.provider_name
            for provider in ProviderFactory.get_providers(
                provider_config, "metrics")
        ]
        (genre, host) = item_module.decide_genre(item_aliases)

        has_enough_alias_urls = ("url" in item_aliases)
        if has_enough_alias_urls:
            if ("doi" in item_aliases):
                has_enough_alias_urls = (len([
                    url for url in item_aliases["url"]
                    if url.startswith("http://dx.doi.org")
                ]) > 0)

        if (genre == "article"):
            if not "mendeley" in aliases_providers_run:
                aliases_providers = ["mendeley"]
            elif not "crossref" in aliases_providers_run:
                aliases_providers = [
                    "crossref"
                ]  # do this before pubmed because might tease doi from url
            elif not "pubmed" in aliases_providers_run:
                aliases_providers = ["pubmed"]
            else:
                metrics_providers = all_metrics_providers
                biblio_providers = ["crossref", "pubmed", "webpage"]
        else:
            # relevant alias and biblio providers are always the same
            relevant_providers = [host]
            if relevant_providers == ["unknown"]:
                relevant_providers = ["webpage"]
            # if all the relevant providers have already run, then all the aliases are done
            # or if it already has urls
            if has_enough_alias_urls or (set(relevant_providers)
                                         == set(aliases_providers_run)):
                metrics_providers = all_metrics_providers
                biblio_providers = relevant_providers
            else:
                aliases_providers = relevant_providers

        return ({
            "aliases": aliases_providers,
            "biblio": biblio_providers,
            "metrics": metrics_providers
        })
Example #3
0
    def sniffer(cls, item_aliases, aliases_providers_run, provider_config=default_settings.PROVIDERS):
        # default to nothing
        aliases_providers = []
        biblio_providers = []
        metrics_providers = []

        all_metrics_providers = [provider.provider_name for provider in 
                        ProviderFactory.get_providers(provider_config, "metrics")]
        (genre, host) = item_module.decide_genre(item_aliases)

        has_enough_alias_urls = ("url" in item_aliases)
        if has_enough_alias_urls:
            if ("doi" in item_aliases):
                has_enough_alias_urls = (len([url for url in item_aliases["url"] if url.startswith("http://dx.doi.org")]) > 0)

        if (genre == "article"):
            if not "mendeley" in aliases_providers_run:
                aliases_providers = ["mendeley"]
            elif not "crossref" in aliases_providers_run:
                aliases_providers = ["crossref"]  # do this before pubmed because might tease doi from url
            elif not "pubmed" in aliases_providers_run:
                aliases_providers = ["pubmed"]
            else:
                metrics_providers = all_metrics_providers
                biblio_providers = ["crossref", "pubmed", "webpage"]
        else:
            # relevant alias and biblio providers are always the same
            relevant_providers = [host]
            if relevant_providers == ["unknown"]:
                relevant_providers = ["webpage"]
            # if all the relevant providers have already run, then all the aliases are done
            # or if it already has urls
            if has_enough_alias_urls or (set(relevant_providers) == set(aliases_providers_run)):
                metrics_providers = all_metrics_providers
                biblio_providers = relevant_providers
            else:
                aliases_providers = relevant_providers

        return({
            "aliases":aliases_providers,
            "biblio":biblio_providers,
            "metrics":metrics_providers})
 def test_decide_genre_software(self):
     aliases = {"url":["http://www.github.com/jasonpriem/my-sofware"]}
     (genre, host) = item_module.decide_genre(aliases)
     assert_equals(genre, "software")
 def test_decide_genre_slides(self):
     aliases = {"url":["http://www.slideshare.net/jason/my-slides"]}
     (genre, host) = item_module.decide_genre(aliases)
     assert_equals(genre, "slides")
 def test_decide_genre_article_pmid(self):
     aliases = {"pmid":["12345678"]}
     (genre, host) = item_module.decide_genre(aliases)
     assert_equals(genre, "article")
 def test_decide_genre_article_doi(self):
     aliases = {"doi":["10:123", "10:456"]}
     (genre, host) = item_module.decide_genre(aliases)
     assert_equals(genre, "article")
Example #8
0
 def test_decide_genre_unknown(self):
     aliases = {"unknown_namespace":["myname"]}
     (genre, host) = item_module.decide_genre(aliases)
     assert_equals(genre, "unknown")
 def test_decide_genre_webpage(self):
     aliases = {"url":["http://www.google.com"]}
     (genre, host) = item_module.decide_genre(aliases)
     assert_equals(genre, "webpage")
Example #10
0
 def test_decide_genre_dataset_dryad(self):
     aliases = {"doi":["10.5061/dryad.18"]}
     (genre, host) = item_module.decide_genre(aliases)
     assert_equals(genre, "dataset")
Example #11
0
 def test_decide_genre_software(self):
     aliases = {"url":["http://www.github.com/jasonpriem/my-sofware"]}
     (genre, host) = item_module.decide_genre(aliases)
     assert_equals(genre, "software")
Example #12
0
 def test_decide_genre_slides(self):
     aliases = {"url":["http://www.slideshare.net/jason/my-slides"]}
     (genre, host) = item_module.decide_genre(aliases)
     assert_equals(genre, "slides")
Example #13
0
 def test_decide_genre_article_pmid(self):
     aliases = {"pmid":["12345678"]}
     (genre, host) = item_module.decide_genre(aliases)
     assert_equals(genre, "article")
Example #14
0
 def test_decide_genre_article_doi(self):
     aliases = {"doi":["10:123", "10:456"]}
     (genre, host) = item_module.decide_genre(aliases)
     assert_equals(genre, "article")
 def test_decide_genre_dataset_dryad(self):
     aliases = {"doi":["10.5061/dryad.18"]}
     (genre, host) = item_module.decide_genre(aliases)
     assert_equals(genre, "dataset")
 def test_decide_genre_dataset_figshare(self):
     aliases = {"doi":["10.6084/m9.figshare.92393"]}
     (genre, host) = item_module.decide_genre(aliases)
     assert_equals(genre, "dataset")
Example #17
0
 def test_decide_genre_dataset_figshare(self):
     aliases = {"doi":["10.6084/m9.figshare.92393"]}
     (genre, host) = item_module.decide_genre(aliases)
     assert_equals(genre, "dataset")
 def test_decide_genre_unknown(self):
     aliases = {"unknown_namespace":["myname"]}
     (genre, host) = item_module.decide_genre(aliases)
     assert_equals(genre, "unknown")
Example #19
0
 def test_decide_genre_webpage(self):
     aliases = {"url":["http://www.google.com"]}
     (genre, host) = item_module.decide_genre(aliases)
     assert_equals(genre, "webpage")