Imports System Imports System.Net Imports System.IO Imports email = Microsoft.Office.Interop.Outlook Module Variables Public University As String End Module Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim request As WebRequest Dim response As HttpWebResponse Dim dataStream As Stream Dim oOMail As email.MailItem Dim oOApp As email.Application Dim i, numArticles As Integer Dim sURL, responseFromServer, Article, Inst(500), NumPages, EmailsOut, numDays As String Dim Title, ISBN, Abstract, Keywords, Year, EmailAddress(500), Emailed As String Dim UserID(500), Volume, Issue, Pages, DOI, PubType, Uri, DiVAID, JournalISSN, signature As String Dim SeriesNum(5), SeriesISSN(5), Series(5), PersonTitle(500), PersonRole(500), PersonAffiliation(500, 50) As String Dim Journal, LastName(500), FirstName(500), TitleWordsDiVA(500), EmailName, EmailBody, OutPut As String Dim ChkChr(30), RepChr(30), Defence, DefDate, NatSubCat, External(500), publisher, CR, Mailto As String Dim Fulltext, responseFromServer2, beg, ending, ParallelPub, Conditions, Restriction As String Dim j, numAuthors, numSeries, numAffiliations(500), numChkChr, mailSent As Integer oOApp = CreateObject("Outlook.Application") University = TextBox1.Text numDays = TextBox2.Text TextBox3.Text = "Working..." TextBox3.Update() sURL = "http://" & University & ".diva-portal.org/dice/mods?query=+publicationTypeCode:(article%20OR%20review)%20+datePublished:[NOW-" & numDays.Trim(" ") & "DAY%20TO%20NOW]&start=0&rows=50000&sort=datePublished%20desc" request = WebRequest.Create(sURL) response = CType(request.GetResponse(), HttpWebResponse) dataStream = response.GetResponseStream() Dim reader As New StreamReader(dataStream) responseFromServer = reader.ReadToEnd() responseFromServer = responseFromServer.Replace(" -1 Article = responseFromServer.Substring(0, responseFromServer.IndexOf("")) responseFromServer = responseFromServer.Remove(0, responseFromServer.IndexOf("") + 7) numArticles = numArticles + 1 DiVARead(Article, numAuthors, LastName, FirstName, Journal, Volume, Issue, Pages, Year, DOI, Title, PubType, UserID, Uri, ISBN, Abstract, DiVAID, JournalISSN, numSeries, SeriesNum, SeriesISSN, Series, PersonTitle, PersonRole, DefDate, Defence, PersonAffiliation, Keywords, numAffiliations, NatSubCat, External, publisher, Fulltext, NumPages) If Fulltext = "" Then sURL = "http://www.sherpa.ac.uk/romeo/api24.php?issn=" & JournalISSN request = WebRequest.Create(sURL) response = CType(request.GetResponse(), HttpWebResponse) dataStream = response.GetResponseStream() ' Open the stream using a StreamReader for easy access. Dim reader3 As New StreamReader(dataStream) ' Read the content. responseFromServer2 = reader3.ReadToEnd() If responseFromServer2.IndexOf("") > -1 Then beg = responseFromServer2.IndexOf("") + 10 ending = responseFromServer2.IndexOf("") publisher = responseFromServer2.Substring(beg, ending - beg) End If For j = 1 To numChkChr publisher = publisher.Replace(ChkChr(j), RepChr(j)) Next j For j = 1 To numChkChr Journal = Journal.Replace(ChkChr(j), RepChr(j)) Next j If responseFromServer2.IndexOf("") > -1 Then beg = responseFromServer2.IndexOf("") ending = responseFromServer2.IndexOf("") + 16 ParallelPub = responseFromServer2.Substring(beg, ending - beg) If ((ParallelPub.IndexOf("can") > -1 Or ParallelPub.IndexOf("restricted") > -1) And DOI.IndexOf("DOI missing") = -1) Then beg = responseFromServer2.IndexOf("") + 12 Conditions = "" If beg > 11 Then ending = responseFromServer2.IndexOf("") Conditions = responseFromServer2.Substring(beg, ending - beg) End If Restriction = "" If responseFromServer2.IndexOf("") > -1 Then beg = responseFromServer2.IndexOf("") + 17 ending = responseFromServer2.IndexOf("") Restriction = responseFromServer2.Substring(beg, ending - beg) End If CR = Chr(13) & Chr(10) EmailName = "" For j = 1 To numAuthors If External(j) = "n" Then 'Mailto = Mailto & EmailAddress(j) & "; " EmailName = EmailName & FirstName(j) & ", " End If Next j Mailto = "davla@ep.liu.se; " If Restriction.IndexOf("embargo") > -1 Then EmailBody = "Gratulerar till din senaste publikation i " & Journal & ": " & Title & CR & CR & "Denna tidskrift tillåter parallellpublicering (dvs. göra fulltexten av artikeln fritt tillgänglig via en webbsida som t.ex. LiU E-Press). Flera studier de senaste åren har visat att parallellpublicering leder till ökad citering av artiklarna (för mer information om parallellpublicering se http://www.ep.liu.se/nl/2007/Parallel_publish_with_LiU_E-Press_sv.pdf) som i ljuset av dagens ranknings- och utvärderingsteknik är av stor betydelse." & CR & CR & "Denna tidskrift kräver en embargoperiod innan parallellpublicering är tillåten men E-Press tar hand om denna automatiskt. En av många services vi erbjuder på LiU E-Press är parallellpublicering av artiklar. Om du är intresserad behöver du endast:" & CR & CR & "(1) Via e-post skicka mig den version av artikeln som du skickade till förlaget. Ofta är det ett MS Word-dokument (om figurer och tabeller finns som separata filer, e-posta filerna till mig så lägger jag in dem i artikeln) men LaTeX går också bra (beträffande LaTeX är jag tacksam om ni konverterar filen till pdf, men det är inte absolut nödvändigt)." & CR & CR & "Vi tar hand om resten vad gäller parallellpubliceringen." & CR & CR & "Om du har några frågor eller är osäker på fördelarna med parallellpublicering, tveka inte att kontakta mig." & CR & CR & "Vänliga hälsningar" & CR & CR & "David" OutPut = OutPut & CR & Journal & " requires an embargo (" & publisher & ")" ElseIf Conditions.IndexOf("Publishers version/PDF may be used") > -1 Or Conditions.IndexOf("Publishers PDF may be used") > -1 Or Conditions.IndexOf("Publishers version/PDF may be used on authors personal or institutional website") > -1 Or Conditions.IndexOf("Publisher PDF may be used") > -1 Or Conditions.IndexOf("Publisher's version/PDF may be used") > -1 Or Conditions.IndexOf("Publisher's version/PDF can be used on author's or employers web site") > -1 Then EmailBody = "Gratulerar till din senaste publikation i " & Journal & ": " & Title & CR & CR & "Denna tidskrift tillåter parallellpublicering (dvs. göra fulltexten av artikeln fritt tillgänglig via en webbsida som t.ex. LiU E-Press). Flera studier de senaste åren har visat att parallellpublicering leder till ökad citering av artiklarna (för mer information om parallellpublicering se http://www.ep.liu.se/nl/2007/Parallel_publish_with_LiU_E-Press_sv.pdf) som i ljuset av dagens ranknings- och utvärderingsteknik är av stor betydelse." & CR & CR & "En av många services vi erbjuder på LiU E-Press är parallellpublicering av artiklar. Vi tar hand om resten vad gäller parallellpubliceringen." & CR & CR & "Om du har några frågor eller är osäker på fördelarna med parallellpublicering, tveka inte att kontakta mig." & CR & CR & "Vänliga hälsningar" & CR & CR & "David" OutPut = OutPut & CR & Journal & " requires nothing (" & publisher & ")" Mailto = "davla@ep.liu.se; " Else EmailBody = "Gratulerar till din senaste publikation i " & Journal & ": " & Title & CR & CR & "Denna tidskrift tillåter parallellpublicering (dvs. göra fulltexten av artikeln fritt tillgänglig via en webbsida som t.ex. LiU E-Press). Flera studier de senaste åren har visat att parallellpublicering leder till ökad citering av artiklarna (för mer information om parallellpublicering se http://www.ep.liu.se/nl/2007/Parallel_publish_with_LiU_E-Press_sv.pdf) som i ljuset av dagens ranknings- och utvärderingsteknik är av stor betydelse." & CR & CR & "En av många services vi erbjuder på LiU E-Press är parallellpublicering av artiklar. Om du är intresserad behöver du endast:" & CR & CR & "(1) Via e-post skicka mig den version av artikeln som du skickade till förlaget. Ofta är det ett MS Word-dokument (om figurer och tabeller finns som separata filer, e-posta filerna till mig så lägger jag in dem i artikeln) men LaTeX går också bra (beträffande LaTeX är jag tacksam om ni konverterar filen till pdf, men det är inte absolut nödvändigt)." & CR & CR & "Vi tar hand om resten vad gäller parallellpubliceringen." & CR & CR & "Om du har några frågor eller är osäker på fördelarna med parallellpublicering, tveka inte att kontakta mig." & CR & CR & "Vänliga hälsningar" & CR & CR & "David" OutPut = OutPut & CR & Journal & " requires authors file (" & publisher & ")" End If i = i If Mailto <> "" And Mailto <> " " And PubType.ToLower.IndexOf("art") > -1 And publisher.IndexOf("American Chemical Society") = -1 Then mailSent = mailSent + 1 If mailSent < 11000000 Then Mailto = Mailto.Remove(Mailto.LastIndexOf(";"), 1) If EmailName.IndexOf(",") > -1 Then EmailName = EmailName.Remove(EmailName.LastIndexOf(","), 1) End If EmailBody = "Hej " & EmailName & "!" & CR & CR & EmailBody & CR & CR & signature oOMail = oOApp.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem) With oOMail .To = Mailto .Subject = "Din senaste publikation" .Body = EmailBody '.Attachments.Add("c:\Davids-Documents\ParallelContracts\contract" & filnm) .Send() End With Emailed = "Yes" End If i = i End If Else OutPut = OutPut & CR & "Parallel publishing is not allowed for " & Journal & " (" & publisher & ")" End If Else OutPut = OutPut & CR & "For " & Journal & " Parallel publishing is unknown (" & publisher & ")" End If End If End While TextBox3.Text = "Done" TextBox3.Update() i = i End Sub Sub DiVARead(ByRef Article As String, ByRef numAuthors As Integer, ByRef Lastname() As String, ByRef Firstname() As String, ByRef Journal As String, ByRef Volume As String, ByRef Issue As String, ByRef Pages As String, ByRef Year As String, ByRef DOI As String, ByRef Title As String, ByRef PubType As String, ByRef UserID() As String, ByRef URI As String, ByRef ISBN As String, ByRef Abstract As String, ByRef DiVAID As String, ByRef JournalISSN As String, ByRef numSeries As Integer, ByRef SeriesNum() As String, ByRef SeriesISSN() As String, ByRef Series() As String, ByRef PersonTitle() As String, ByRef PersonRole() As String, ByRef DefDate As String, ByRef Defence As String, ByRef PersonAffiliation(,) As String, ByRef Keywords As String, ByRef numAffiliations() As Integer, ByRef NatSubCat As String, ByRef External() As String, ByRef Publisher As String, ByRef FullText As String, ByRef NumPages As String) Dim NameDetails, SeriesDetails, CR, CorporateParts(100, 10), PersonAffiliationTmp(500, 50) As String Dim numCorpParts(100), numCorp, i, j, k, l, numAffiliationsTmp(500), fflag As Integer CR = Chr(13) & Chr(10) If Article.IndexOf("") > -1 Then Article = Article.Remove(0, Article.IndexOf("") + 47) PubType = Article.Substring(0, Article.IndexOf("")) Article = Article.Remove(0, Article.IndexOf("") + 8) End If numAuthors = 0 While Article.IndexOf(" -1 numAuthors = numAuthors + 1 If numAuthors > 500 Then numAuthors = 500 End If Article = Article.Remove(0, Article.IndexOf("") - Article.IndexOf("") + 7) UserID(numAuthors) = "" If NameDetails.IndexOf(" -1 Then NameDetails = NameDetails.Remove(0, NameDetails.IndexOf("") + 24) Lastname(numAuthors) = NameDetails.Substring(0, NameDetails.IndexOf("")) If numAuthors = 500 Then Lastname(numAuthors) = "Warning likely more than 500 authors" End If Firstname(numAuthors) = "" If NameDetails.IndexOf("") > -1 Then NameDetails = NameDetails.Remove(0, NameDetails.IndexOf("") + 23) Firstname(numAuthors) = NameDetails.Substring(0, NameDetails.IndexOf("")) End If PersonTitle(numAuthors) = "" If NameDetails.IndexOf("") > -1 Then NameDetails = NameDetails.Remove(0, NameDetails.IndexOf("") + 32) PersonTitle(numAuthors) = NameDetails.Substring(0, NameDetails.IndexOf("")) End If PersonRole(numAuthors) = "" If NameDetails.IndexOf("") > -1 Then NameDetails = NameDetails.Remove(0, NameDetails.IndexOf("") + 46) PersonRole(numAuthors) = NameDetails.Substring(0, NameDetails.IndexOf("")) End If numAffiliationsTmp(numAuthors) = 0 PersonAffiliationTmp(numAuthors, 1) = "" While NameDetails.IndexOf("") > -1 NameDetails = NameDetails.Remove(0, NameDetails.IndexOf("") + 13) numAffiliationsTmp(numAuthors) = numAffiliationsTmp(numAuthors) + 1 PersonAffiliationTmp(numAuthors, numAffiliationsTmp(numAuthors)) = NameDetails.Substring(0, NameDetails.IndexOf("")) NameDetails = NameDetails.Remove(0, NameDetails.IndexOf("") + 14) End While End While numCorp = 0 While Article.IndexOf(" -1 numCorp = numCorp + 1 NameDetails = Article.Substring(Article.IndexOf("") - Article.IndexOf("") + 7) numCorpParts(numCorp) = 0 While NameDetails.IndexOf("") > -1 numCorpParts(numCorp) = numCorpParts(numCorp) + 1 NameDetails = NameDetails.Remove(0, NameDetails.IndexOf("") + 10) CorporateParts(numCorp, numCorpParts(numCorp)) = NameDetails.Substring(0, NameDetails.IndexOf("")) NameDetails = NameDetails.Remove(0, NameDetails.IndexOf("") + 11) End While End While For i = 1 To numAuthors If External(i) = "n" Or External(i) = "y" Then numAffiliations(i) = 0 PersonAffiliation(i, 1) = "" For j = 1 To numAffiliationsTmp(i) fflag = 0 For k = 1 To numCorp If PersonAffiliationTmp(i, j).IndexOf(",") > -1 Then If PersonAffiliationTmp(i, j).IndexOf(CorporateParts(k, 1)) > -1 And PersonAffiliationTmp(i, j).Substring(PersonAffiliationTmp(i, j).IndexOf(",") + 1, PersonAffiliationTmp(i, j).Length - PersonAffiliationTmp(i, j).IndexOf(",") - 1).Trim(" ") = CorporateParts(k, numCorpParts(k)) Then For l = 1 To numCorpParts(k) numAffiliations(i) = numAffiliations(i) + 1 PersonAffiliation(i, numAffiliations(i)) = CorporateParts(k, l) Next l fflag = 1 External(i) = "n" Exit For End If End If Next k If fflag = 0 Then numAffiliations(i) = numAffiliations(i) + 1 PersonAffiliation(i, numAffiliations(i)) = PersonAffiliationTmp(i, j) End If i = i Next j 'Else 'numAffiliations(i) = numAffiliationsTmp(i) 'For j = 1 To numAffiliationsTmp(i) 'PersonAffiliation(i, j) = PersonAffiliationTmp(i, j) 'Next j End If Next i Title = "" If Article.IndexOf("") > -1 Then Title = Article.Substring(Article.IndexOf("<title>") + 7, Article.IndexOf("") - Article.IndexOf("") - 7) Article = Article.Remove(0, Article.IndexOf("") + 8) If Article.IndexOf("") > -1 And Article.IndexOf("") < 5 Then Title = Title & ": " & Article.Substring(Article.IndexOf("") + 10, Article.IndexOf("") - Article.IndexOf("") - 10) Article = Article.Remove(0, Article.IndexOf("") + 11) End If End If Publisher = "" If Article.IndexOf("") > -1 Then Publisher = Article.Substring(Article.IndexOf("") + 11, Article.IndexOf("") - Article.IndexOf("") - 11) Article = Article.Remove(0, Article.IndexOf("") + 12) End If Year = "" If Article.IndexOf("") > -1 Then Year = Article.Substring(Article.IndexOf("") + 12, Article.IndexOf("") - Article.IndexOf("") - 12) Article = Article.Remove(0, Article.IndexOf("") + 13) End If DefDate = "" If Article.IndexOf("") > -1 Then Article = Article.Remove(0, Article.IndexOf("") + 26) DefDate = Article.Substring(0, Article.IndexOf("")) Article = Article.Remove(0, Article.IndexOf("") + 12) End If NumPages = "" If Article.IndexOf("") > -1 Then Article = Article.Remove(0, Article.IndexOf("") + 21) SeriesDetails = Article.Substring(0, Article.IndexOf("")) Article = Article.Remove(0, Article.IndexOf("") + 22) If SeriesDetails.IndexOf("") > -1 Then SeriesDetails = SeriesDetails.Remove(0, SeriesDetails.IndexOf("") + 8) NumPages = SeriesDetails.Substring(0, SeriesDetails.IndexOf("")) End If End If ISBN = "" If Article.IndexOf("") > -1 Then Article = Article.Remove(0, Article.IndexOf("") + 24) ISBN = Article.Substring(0, Article.IndexOf("")) Article = Article.Remove(0, Article.IndexOf("") + 13) End If URI = "" If Article.IndexOf("") > -1 Then Article = Article.Remove(0, Article.IndexOf("") + 23) URI = Article.Substring(0, Article.IndexOf("")) Article = Article.Remove(0, Article.IndexOf("") + 13) End If DOI = "" If Article.IndexOf("") > -1 Then Article = Article.Remove(0, Article.IndexOf("") + 23) DOI = Article.Substring(0, Article.IndexOf("")) Article = Article.Remove(0, Article.IndexOf("") + 13) End If numSeries = 0 If Article.IndexOf("") > -1 Then Article = Article.Remove(0, Article.IndexOf("") + 27) SeriesDetails = Article.Substring(0, Article.IndexOf("")) Article = Article.Remove(0, Article.IndexOf("") + 14) While SeriesDetails.IndexOf("") > -1 SeriesDetails = SeriesDetails.Remove(0, SeriesDetails.IndexOf("<title>") + 7) numSeries = numSeries + 1 Series(numSeries) = SeriesDetails.Substring(0, SeriesDetails.IndexOf("")) SeriesDetails = SeriesDetails.Remove(0, SeriesDetails.IndexOf("") + 8) If SeriesDetails.IndexOf("") > -1 Then SeriesDetails = SeriesDetails.Remove(0, SeriesDetails.IndexOf("") + 24) SeriesISSN(numSeries) = SeriesDetails.Substring(0, SeriesDetails.IndexOf("")) SeriesDetails = SeriesDetails.Remove(0, SeriesDetails.IndexOf("") + 13) End If If SeriesDetails.IndexOf("") > -1 Then SeriesDetails = SeriesDetails.Remove(0, SeriesDetails.IndexOf("") + 32) SeriesNum(numSeries) = SeriesDetails.Substring(0, SeriesDetails.IndexOf("")) SeriesDetails = SeriesDetails.Remove(0, SeriesDetails.IndexOf("") + 13) End If End While End If Keywords = "" While Article.IndexOf("") > -1 And Article.IndexOf("authority=""svep""") > Article.IndexOf("") Article = Article.Remove(0, Article.IndexOf("") + 7) Keywords = Keywords & Article.Substring(0, Article.IndexOf("")) & "; " Article = Article.Remove(0, Article.IndexOf("") + 8) End While If Keywords.IndexOf(";") > -1 Then Keywords = Keywords.Substring(0, Keywords.LastIndexOf(";")) End If NatSubCat = "" If Article.IndexOf("") + 7) NatSubCat = Article.Substring(0, Article.IndexOf("")) Article = Article.Remove(0, Article.IndexOf("") + 8) End If Abstract = "" If Article.IndexOf(" -1 Then Article = Article.Remove(0, Article.IndexOf("")) Article = Article.Remove(0, Article.IndexOf("") + 11) End If 'conferencename = "" 'If Article.IndexOf("") > -1 Then 'Article = Article.Remove(0, Article.IndexOf("") + 25) 'Article = Article.Remove(0, Article.IndexOf("") + 7) 'conferencename = Article.Substring(0, Article.IndexOf("")) 'Article = Article.Remove(0, Article.IndexOf("") + 14) 'End If Journal = "" If Article.IndexOf("") > -1 Then Journal = Article.Substring(Article.IndexOf("<title>") + 7, Article.IndexOf("") - Article.IndexOf("") - 7) Article = Article.Remove(0, Article.IndexOf("") + 8) End If JournalISSN = "" If Article.IndexOf("") > -1 Then Article = Article.Remove(0, Article.IndexOf("") + 24) JournalISSN = Article.Substring(0, Article.IndexOf("")) Article = Article.Remove(0, Article.IndexOf("") + 13) End If Volume = "" If Article.IndexOf("") > -1 Then Article = Article.Remove(0, Article.IndexOf("") + 22) Volume = Article.Substring(Article.IndexOf("") + 8, Article.IndexOf("") - Article.IndexOf("") - 8) Article = Article.Remove(0, Article.IndexOf("") + 9) End If Issue = "" If Article.IndexOf("") > -1 Then Article = Article.Remove(0, Article.IndexOf("") + 21) Issue = Article.Substring(Article.IndexOf("") + 8, Article.IndexOf("") - Article.IndexOf("") - 8) Article = Article.Remove(0, Article.IndexOf("") + 9) End If Pages = "" If Article.IndexOf("") > -1 Then Article = Article.Remove(0, Article.IndexOf("") + 8) If Article.IndexOf("") > -1 Then Pages = Article.Substring(Article.IndexOf("") + 7, Article.IndexOf("") - Article.IndexOf("") - 7) End If If Article.IndexOf("") > -1 Then Pages = Pages & "-" & Article.Substring(Article.IndexOf("") + 5, Article.IndexOf("") - Article.IndexOf("") - 5) Article = Article.Remove(0, Article.IndexOf("") + 6) End If End If Defence = "" If Article.IndexOf("") > -1 Then Article = Article.Remove(0, Article.IndexOf("") + 19) Defence = Article.Substring(0, Article.IndexOf("")) Article = Article.Remove(0, Article.IndexOf("") + 7) End If FullText = "" If Article.IndexOf("") > -1 Then Article = Article.Remove(0, Article.IndexOf("") + 61) FullText = Article.Substring(0, Article.IndexOf("")) Article = Article.Remove(0, Article.IndexOf("") + 6) End If DiVAID = "" If Article.IndexOf("") > -1 Then Article = Article.Remove(0, Article.IndexOf("") + 18) DiVAID = Article.Substring(0, Article.IndexOf("")) Article = Article.Remove(0, Article.IndexOf("") + 19) End If End Sub End Class