From 987e9831f98d0efdc4070a4f5947c6ff1837f820 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Herv=C3=A9=20=20MENAGER?= <herve.menager@pasteur.fr>
Date: Wed, 13 Jun 2018 14:42:14 +0200
Subject: [PATCH] download patent info from Google instead of EPO

EPO REST API v3.1 is deprecated (see http://www.epo.org/service-support/updates/2018/20180104.html)
This fixes #72


Former-commit-id: 574d12295d9bb6b82c9741d9094963f8a51151f9
---
 ippisite/ippidb/models.py |  4 ++--
 ippisite/ippidb/ws.py     | 18 ++++++++++++++++++
 2 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/ippisite/ippidb/models.py b/ippisite/ippidb/models.py
index 66299eea..ca8c46d5 100644
--- a/ippisite/ippidb/models.py
+++ b/ippisite/ippidb/models.py
@@ -3,7 +3,7 @@ from __future__ import unicode_literals
 from django.db import models
 from django.db.models import Max
 
-from .ws import get_pubmed_info, get_epo_info, get_uniprot_info, get_taxonomy_info, get_go_info, get_pfam_info
+from .ws import get_pubmed_info, get_google_patent_info, get_uniprot_info, get_taxonomy_info, get_go_info, get_pfam_info
 
 
 class AutoFillableModel(models.Model):
@@ -56,7 +56,7 @@ class Bibliography(AutoFillableModel):
         if self.source == 'PM':
             info = get_pubmed_info(self.id_source)
         else:
-            info = get_epo_info(self.id_source)
+            info = get_google_patent_info(self.id_source)
         self.title = info['title']
         self.journal_name = info['journal_name']
         self.authors_list = info['authors_list']
diff --git a/ippisite/ippidb/ws.py b/ippisite/ippidb/ws.py
index 7f699d49..03fc0ff1 100644
--- a/ippisite/ippidb/ws.py
+++ b/ippisite/ippidb/ws.py
@@ -44,6 +44,24 @@ def get_epo_info(patent_number):
             'biblio_year': biblio_year,
             'authors_list': authors}
 
+def get_google_patent_info(patent_number):
+    url = 'https://encrypted.google.com/patents/{}.ris'.format(patent_number)
+    resp = requests.get(url)
+    title = None
+    authors = []
+    biblio_year = None
+    for line_str in resp.text.split("\n"):
+        line = line_str.strip().split("  - ")
+        if line[0] == "A1":
+            authors.append(line[1])
+        elif line[0] == "T1":
+            title = line[1]
+        elif line[0] == "Y1":
+            biblio_year = line[1].split("/")[0]
+    return {'title': title,
+            'journal_name': None,
+            'biblio_year': biblio_year,
+            'authors_list': authors}
 
 def get_uniprot_info(uniprot_id):
     uniprot_client = UniProt()
-- 
GitLab