亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? npg.pm

?? 一個論文管理系統
?? PM
字號:
# $Id: NPG.pm,v 1.11 2006/01/10 22:48:43 martin Exp $## Copyright 2005 Nature Publishing Group# This program is free software; you can redistribute it and/or# modify it under the terms of the GNU General Public License# as published by the Free Software Foundation; either version 2# of the License, or (at your option) any later version.## The Bibliotech::CitationSource::NPG class retrieves citation data for articles# on Nature.com.use strict;use Bibliotech::CitationSource;package Bibliotech::CitationSource::NPG;use base 'Bibliotech::CitationSource';use URI;use URI::QueryParam;sub api_version {  1;}sub name {  'Nature Publishing Group';}sub cfgname {  'NPG';}sub version {  '$Revision: 1.11 $';}sub understands {  my ($self, $uri) = @_;  return 0 unless $uri->scheme eq 'http';  #check the host  return 0 unless ($uri->host =~ /^(www\.)?nature.com$/);  #old-style links  return 1 if ($uri->path eq '/cgi-taf/DynaPage.taf' && $uri->query_param('file'));  #new-style links  return 1 if ($uri->path =~ m!^/[a-z]+?/journal/v(?:\d+|aop)/n(?:\d+|current)/(?:full|abs)/.+\.html!i);  return 0;}sub filter {  my ($self, $uri) = @_;  $uri->query_param_delete('_UserReference');  # always drop  $uri->query_param_delete('filetype') unless $uri->query_param('filetype');  # drop if empty  return $uri;}sub citations {  my ($self, $article_uri) = @_;  my $ris;  eval {    die "do not understand URI\n" unless $self->understands($article_uri);    my $file;    #old-style link    if(my $temp = $article_uri->query_param('file')) {      $file = $temp;    }    #new-style link    else {	$file = $article_uri->path;        #strip fragments or queries        $file =~ s/\.html(?:#|\?).*/.html/;    }    die "no file name seen in URI\n" unless $file;    my ($abr, $vol, $iss, $uid) = ($file =~ m!^/([a-z]+)/journal/v(\d+|(?:aop))/n(\d+|(?:current))/.+?/(.+?)(?:_[a-z]+)?\.html!i);    die "no abbreviated journal name\n" unless $abr;    die "no volume\n" unless $vol;    die "no issue\n" unless $iss;    die "no UID\n" unless $uid;    my $query_uri = new URI ("http://www.nature.com/$abr/journal/v$vol/n$iss/ris/$uid.ris");    my $ris_raw = $self->get($query_uri);    $ris = new Bibliotech::CitationSource::NPG::RIS ($ris_raw);    if (!$ris->has_data) {      # give it one more try because nature.com is flakey      # the NPG servers occasionally report 404 or 501 for no reason      # additionally I think they sometimes return no data with a 200      sleep 2;      $ris_raw = $self->get($query_uri);      $ris = new Bibliotech::CitationSource::NPG::RIS ($ris_raw);    }    die "RIS obj false\n" unless $ris;    die "RIS file contained no data\n" unless $ris->has_data;  };      die $@ if $@ =~ /at .* line \d+/;  $self->errstr($@), return undef if $@;  return bless [bless $ris, 'Bibliotech::CitationSource::NPG::Result'], 'Bibliotech::CitationSource::ResultList';}package Bibliotech::CitationSource::NPG::RIS;use base 'Class::Accessor::Fast';# used for spec: http://www.refman.com/support/risformat_intro.asp# read a RIS file and provide back an object that is a hashref of the tags,# using arrayrefs for tags with multiple valuesour %TYPES = (ABST  => 'Abstract',	      ADVS  => 'Audiovisual material',	      ART   => 'Art Work',	      BILL  => 'Bill/Resolution',	      BOOK  => 'Book, Whole',	      CASE  => 'Case',	      CHAP  => 'Book chapter',	      COMP  => 'Computer program',	      CONF  => 'Conference proceeding',	      CTLG  => 'Catalog',	      DATA  => 'Data file',	      ELEC  => 'Electronic Citation',	      GEN   => 'Generic',	      HEAR  => 'Hearing',	      ICOMM => 'Internet Communication',	      INPR  => 'In Press',	      JFULL => 'Journal (full)',	      JOUR  => 'Journal',	      MAP   => 'Map',	      MGZN  => 'Magazine article',	      MPCT  => 'Motion picture',	      MUSIC => 'Music score',	      NEWS  => 'Newspaper',	      PAMP  => 'Pamphlet',	      PAT   => 'Patent',	      PCOMM => 'Personal communication',	      RPRT  => 'Report',	      SER   => 'Serial (Book, Monograph)',	      SLIDE => 'Slide',	      SOUND => 'Sound recording',	      STAT  => 'Statute',	      THES  => 'Thesis/Dissertation',	      UNBIL => 'Unenacted bill/resolution',	      UNPB  => 'Unpublished work',	      VIDEO => 'Video recording'	      );__PACKAGE__->mk_accessors(qw/TY ID T1 TI CT BT T2 BT T3 A1 AU A2 ED A3 Y1 PY Y2 N1 AB N2 KW RP JF JO JA J1 J2			  VL IS SP EP CP CY PB SN AD AV M1 M2 M3 U1 U2 U3 U4 U5 UR L1 L2 L3 L4 ER			  has_data inceq/);sub new {  my ($class, $data) = @_;  my $self = {};  bless $self, ref $class || $class;  $self->has_data(0);  $self->inceq(0);  # "include equivalents" - when calling title() do we return just T1 or all of T1, TI, CT, BT  $self->parse($data) if $data;  return $self;}sub parse {  my ($self, $data) = @_;  my %values;  {    my @lines;    {      my @data = ref $data ? map { s/\r?\n$//; $_; } @{$data} : split(/\r?\n/, $data);      my $in_data = 0;      my $double_newlines = 0;      foreach (@data) {	if ($double_newlines == 1) {	  $double_newlines = 2;	}	elsif ($double_newlines == 2) {	  if (/^$/) {	    $double_newlines = 1;	    next;	  }	  else {	    $double_newlines = 0;	  }	}	if ($in_data) {	  if (/^ER  - ?/) {	    $in_data = 0;	  }	  else {	    if (/^\w\w  - ?/) {	      push @lines, $_;	    }	    else {	      if (@lines) {		if ($lines[-1] =~ /^TY  - ?/) {		  $double_newlines = 1;		}		else {		  $lines[-1] .= "\n$_";		}	      }	    }	  }	}	elsif (/^TY  - ?/) {	  $in_data = 1;	  $self->has_data(1);	  push @lines, $_;	}      }    }    foreach (@lines) {      my ($key, $value) = /^(\w\w)  - (.*)$/s;      next unless defined $key && $self->can($key);      my $stored = $values{$key};      if (defined $stored) {	if (ref $stored) {	  push @{$stored}, $value;	}	else {	  $values{$key} = [$stored, $value];	}      }      else {	$values{$key} = $value;      }    }  }  foreach my $key (keys %values) {    $self->$key($values{$key});  }  return $self;}sub collect {  my ($self, @fields) = @_;  my $include = $self->inceq;  my $soft = 0;  if ($fields[0] eq 'soft') {    shift @fields;    $soft = 1;  }  if (($soft and $include >= 2) or (!$soft and $include >= 1)) {    my @results;    foreach my $field (@fields) {      my $stored = $self->$field;      next unless defined $stored;      push @results, ref $stored ? @{$stored} : $stored;    }    return wantarray ? () : undef unless @results;    return wantarray ? @results : \@results;  }  else {    foreach my $field (@fields) {      my $stored = $self->$field;      return $stored if defined $stored;    }    return wantarray ? () : undef;  }}sub ris_type         { shift->collect(qw/TY/); }sub identification   { shift->collect(qw/ID/); }sub title_primary    { shift->collect(qw/T1 TI CT BT/); }sub title_secondary  { shift->collect(qw/T2 BT/); }sub title_series     { shift->collect(qw/T3/); }sub title      	     { shift->collect(soft => qw/title_primary title_secondary title_series/); }sub author_primary   { shift->collect(qw/A1 AU/); }sub author_secondary { shift->collect(qw/A2 ED/); }sub author_series    { shift->collect(qw/A3/); }sub author           { shift->collect(soft => qw/author_primary author_secondary author_series/); }sub authors          { shift->collect(qw/author/); }sub date_primary     { shift->collect(qw/Y1 PY/); }sub date_secondary   { shift->collect(qw/Y2/); }sub date             { shift->collect(soft => qw/date_primary date_secondary/); }sub notes            { shift->collect(qw/N1 AB/); }sub abstract         { shift->collect(qw/N2/); }sub keywords         { shift->collect(qw/KW/); }sub reprint          { shift->collect(qw/RP/); }sub periodical_name  { shift->collect(qw/JF JO/); }sub periodical_abbr  { shift->collect(qw/JA J1 J2/); }sub journal          { shift->collect(soft => qw/periodical_name periodical_abbr/); }sub journal_abbr     { shift->collect(qw/periodical_abbr/); }sub volume           { shift->collect(qw/VL/); }sub issue            { shift->collect(qw/IS/); }sub starting_page    { shift->collect(qw/SP/); }sub ending_page      { shift->collect(qw/EP/); }sub page             { shift->collect(qw/starting_page/); }sub publication_city { shift->collect(qw/CP CY/); }sub publisher        { shift->collect(qw/PB/); }sub issn_or_isbn     { shift->collect(qw/SN/); }sub issn             { shift->collect(qw/issn_or_isbn/); }sub isbn             { shift->collect(qw/issn_or_isbn/); }sub address          { shift->collect(qw/AD/); }sub availablity      { shift->collect(qw/AV/); }sub misc1            { shift->collect(qw/M1/); }sub misc2            { shift->collect(qw/M2/); }sub misc3            { shift->collect(qw/M3/); }sub misc             { shift->collect(qw/misc1 misc2 misc3/); }sub user1            { shift->collect(qw/U1/); }sub user2            { shift->collect(qw/U2/); }sub user3            { shift->collect(qw/U3/); }sub user4            { shift->collect(qw/U4/); }sub user5            { shift->collect(qw/U5/); }sub user             { shift->collect(qw/user1 user2 user3 user4 user5/); }sub url              { shift->collect(qw/UR/); }sub uri              { shift->collect(qw/url/); }sub web              { shift->collect(qw/url/); }sub pdf              { shift->collect(qw/L1/); }sub full_text        { shift->collect(qw/L2/); }sub related          { shift->collect(qw/L3/); }sub image            { shift->collect(qw/L4/); }sub links            { shift->collect(qw/web pdf full_text related image/); }sub page_range {  my $self = shift;   my $starting_page = $self->collect(qw/starting_page/) or return undef;  my $ending_page   = $self->collect(qw/ending_page/)   or return $starting_page;  return $starting_page.' - '.$ending_page if $starting_page != $ending_page;  return $starting_page;}sub ris_type_description {  return $TYPES{shift->ris_type};}sub is_valid_ris_type {  return exists $TYPES{shift->ris_type};}package Bibliotech::CitationSource::NPG::RIS::Result;use base ('Bibliotech::CitationSource::NPG::RIS', 'Bibliotech::CitationSource::Result', 'Class::Accessor::Fast');use List::Util qw/first/;use List::MoreUtils qw/none/;__PACKAGE__->mk_accessors(qw/type source/);sub identifiers {  {doi => shift->doi};}sub justone {  my ($self, $field, %options) = @_;  my $super = 'SUPER::'.$field;  my $stored = $self->$super or return undef;  return undef unless defined $stored;  return $stored unless ref $stored eq 'ARRAY';  my @stored = @{$stored};  my $join = $options{join};  return join($join, @stored) if defined $join;  my @not = @{$options{not}||[]};  my $first = first { my $value = $_; none { $value eq $_ } @not } @stored;  return $first;}sub authors {  my ($self) = @_;  my $authors = $self->SUPER::authors;  my @authors = map(Bibliotech::CitationSource::NPG::Result::Author->new($_), ref $authors ? @{$authors} : $authors);  bless \@authors, 'Bibliotech::CitationSource::Result::AuthorList';}# override - from Nature the abbreviated name arrives in JOsub periodical_name  { shift->collect(qw/JF/); }sub periodical_abbr  { shift->collect(qw/JO JA J1 J2/); }sub journal {  my ($self) = @_;  return Bibliotech::CitationSource::NPG::Result::Journal->new($self->justone('journal'),							       $self->justone('journal_abbr'),							       $self->justone('issn'));}sub ris_type 	{ shift->justone('ris_type'); }sub pubmed   	{ undef; }sub doi      	{ shift->justone('misc3'); }sub asin        { undef; }sub title    	{ shift->justone('title'); }sub description { shift->justone('notes'); }sub volume   	{ shift->justone('volume'); }sub issue    	{ shift->justone('issue'); }sub page     	{ shift->page_range; }sub url {  my @url = map { split(/[ \n]+/) } shift->collect(qw/UR L3/);  return unless @url;  return $url[0] if @url == 1;  return wantarray ? @url : \@url;}sub date {  my $date = shift->justone('date');  $date =~ s|^(\d+/\d*/\d*)/.*$|$1|;  return $date;}sub last_modified_date {  shift->date(@_);}package Bibliotech::CitationSource::NPG::Result;use base 'Bibliotech::CitationSource::NPG::RIS::Result';sub type {  'NPG';}sub source {  'NPG RIS file from www.nature.com';}package Bibliotech::CitationSource::NPG::Result::Author;use base 'Class::Accessor::Fast';__PACKAGE__->mk_accessors(qw/firstname initials lastname/);sub new {  my ($class, $author) = @_;  my ($lastname, $firstname);  if ($author =~ /^(.+?),\s*(.*)$/) {    ($lastname, $firstname) = ($1, $2);  }  elsif ($author =~ /^(.*)\s+(.+)$/) {    ($firstname, $lastname) = ($1, $2);  }  else {    $lastname = $author;  }  my $initials = join(' ', map { s/^(.).*$/$1/; $_; } split(/\s+/, $firstname)) || undef;  $firstname =~ s/(\s\w\.?)+$//;  return $class->SUPER::new({firstname => $firstname, lastname => $lastname, initials => $initials});}package Bibliotech::CitationSource::NPG::Result::Journal;use base 'Class::Accessor::Fast';__PACKAGE__->mk_accessors(qw/name medline_ta issn/);sub new {  my ($class, $name, $medline_ta, $issn) = @_;  return $class->SUPER::new({name => $name, medline_ta => $medline_ta, issn => $issn});}1;__END__

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一区二区三区免费看| 亚洲一区二区三区四区五区黄| 亚洲人xxxx| 国产一区在线观看视频| 欧美三级在线看| 国产精品久久久久永久免费观看 | 久久精品亚洲精品国产欧美kt∨ | 欧美日韩在线综合| 国产精品久久久久久一区二区三区| 午夜国产精品一区| av一二三不卡影片| 久久久久久97三级| 激情av综合网| 精品成人佐山爱一区二区| 亚洲高清中文字幕| 色94色欧美sute亚洲线路一ni | 日韩免费视频线观看| 亚洲综合丝袜美腿| 色综合久久中文综合久久牛| 中文字幕精品一区二区三区精品| 蜜桃精品在线观看| 日韩视频一区二区在线观看| 午夜精品爽啪视频| 日本高清不卡一区| 亚洲国产精品一区二区www在线| 91久久精品国产91性色tv| 国产精品久久久久影院色老大| 国产精品69毛片高清亚洲| 久久久精品日韩欧美| 国产在线播放一区| 国产日韩欧美精品综合| 国产在线不卡一区| 国产精品入口麻豆原神| 成人精品亚洲人成在线| 中文字幕亚洲在| 色婷婷av一区二区三区软件| 一区二区三区不卡在线观看 | 国产成人av一区二区三区在线| 欧美videossexotv100| 精品影院一区二区久久久| 日韩精品一区二区三区视频| 狠狠色狠狠色综合| 国产精品三级视频| 欧美在线不卡视频| 热久久国产精品| 国产亚洲成年网址在线观看| 成人国产精品免费观看视频| 亚洲精品日韩一| 91精品国产乱码| 极品尤物av久久免费看| 国产精品女主播在线观看| 一本一本大道香蕉久在线精品| 亚洲国产wwwccc36天堂| 精品国产1区2区3区| 99久久99久久久精品齐齐| 亚洲一区二区三区在线| 亚洲精品一区二区精华| 99视频一区二区| 奇米在线7777在线精品| 欧美激情综合网| 欧美日韩视频在线观看一区二区三区| 青青草国产精品亚洲专区无| 国产午夜精品福利| 精品视频一区二区三区免费| 国产伦理精品不卡| 亚洲一二三四在线观看| 久久亚区不卡日本| 欧美网站一区二区| 成人网页在线观看| 日本不卡在线视频| 综合电影一区二区三区| 欧美精品一区二区三区一线天视频| 不卡的av中国片| 蜜桃av噜噜一区| 亚洲影院久久精品| 国产精品色眯眯| 亚洲精品一区二区三区福利| 欧美视频一区二区在线观看| 成人动漫av在线| 久久99精品久久久久久国产越南| 依依成人精品视频| 欧美激情一区不卡| 欧美精品一区二区三区蜜桃视频| 欧美视频精品在线| 91麻豆精品在线观看| 国产aⅴ综合色| 美女诱惑一区二区| 调教+趴+乳夹+国产+精品| 国产精品久久久一本精品| ww亚洲ww在线观看国产| 欧美高清精品3d| 欧美性生活影院| 91亚洲精品一区二区乱码| 国产精选一区二区三区| 蜜臀av性久久久久av蜜臀妖精| 亚洲福利一区二区| 亚洲制服丝袜一区| 亚洲主播在线观看| 一区二区三区日韩欧美精品| 亚洲欧美日韩久久| 国产精品久久久久aaaa| 日本一区二区三级电影在线观看 | 亚洲综合图片区| 亚洲人妖av一区二区| 国产精品视频看| 欧美激情艳妇裸体舞| 国产日韩亚洲欧美综合| 久久先锋影音av| 久久青草欧美一区二区三区| 精品福利一区二区三区免费视频| 日韩欧美综合一区| 欧美成人一区二区三区| 欧美精品一区二区三区很污很色的| 日韩精品专区在线影院观看| 日韩一级免费观看| 欧美不卡在线视频| 久久精品人人爽人人爽| 国产欧美一区二区精品婷婷 | 粉嫩欧美一区二区三区高清影视| 国产一区二区三区日韩| 高清国产午夜精品久久久久久| 成人午夜私人影院| 日本精品一级二级| 欧美日韩视频一区二区| 欧美一区二区视频在线观看2022| 91麻豆精品国产91久久久资源速度 | 在线成人免费观看| 欧美精品久久一区二区三区| 欧美一区二区三区视频在线观看| 精品国产精品网麻豆系列 | 日韩高清国产一区在线| 免费成人在线视频观看| 极品尤物av久久免费看| caoporen国产精品视频| 欧美日韩国产另类不卡| 精品国产百合女同互慰| 欧美激情在线一区二区| 亚洲一区二区三区中文字幕在线 | 精品国产乱码久久久久久浪潮| 久久综合狠狠综合| 亚洲精品写真福利| 久久精品99国产国产精| 91网站视频在线观看| 欧美高清视频www夜色资源网| 久久精品亚洲精品国产欧美| 亚洲精品成人a在线观看| 激情成人综合网| 欧美无人高清视频在线观看| 久久久噜噜噜久久中文字幕色伊伊| 中文字幕一区视频| 精品一区二区在线观看| 色哟哟一区二区三区| 久久久五月婷婷| 亚洲国产sm捆绑调教视频| 国产精品一区二区不卡| 欧美妇女性影城| 亚洲日本免费电影| 国产精品原创巨作av| 欧美日韩黄视频| 国产精品国产三级国产有无不卡| 日本不卡一区二区三区高清视频| www.99精品| 久久亚洲综合色一区二区三区| 亚洲一区二区三区美女| 成人午夜精品在线| 久久久欧美精品sm网站| 日韩在线卡一卡二| 色综合激情久久| 国产女人18毛片水真多成人如厕 | 色94色欧美sute亚洲线路二| 久久婷婷国产综合精品青草| 亚洲国产视频在线| 91麻豆自制传媒国产之光| 日本一区二区三级电影在线观看 | 国产亚洲欧美激情| 麻豆一区二区三| 欧美猛男超大videosgay| 亚洲欧美日韩一区| heyzo一本久久综合| 国产色产综合色产在线视频| 精品一区二区三区免费视频| 欧美一级在线免费| 日韩国产成人精品| 欧美一区三区四区| 美国av一区二区| 日韩精品一区二区三区三区免费| 丝袜亚洲精品中文字幕一区| 91久久一区二区| 亚洲国产另类av| 这里只有精品电影| 欧美96一区二区免费视频| 91精品国产91久久综合桃花| 视频一区在线播放| 日韩一区二区在线播放| 久国产精品韩国三级视频| 精品日韩一区二区三区 | 欧美国产日韩a欧美在线观看 | 免费精品视频在线| 欧美v亚洲v综合ⅴ国产v| 国产尤物一区二区|