Аутентификация Yahoo - PullRequest
       21

Аутентификация Yahoo

0 голосов
/ 13 апреля 2010

Я играю с новым API Yahoo. Я хотел бы удалить некоторые фиктивные данные, используя следующий адрес

http://query.yahooapis.com/v1/public/yql?q=desc%20social.updates.search&format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=cbfunc

Когда я запускаю это, я получаю ошибку аутентификации (необходимо войти в Yahoo). Это хорошо, очевидно, для меня возиться в Интернете Однако я хотел бы назвать это из сценария ruby. Есть идеи, как мне пройти аутентификацию? Я могу только найти какую-то веб-версию.

Ответы [ 4 ]

0 голосов
/ 16 октября 2016

Открытая функция ScanColumns (SheetName As String, thisMany как Double, ShowWhat As String)

e = 0

For a = 1 To thisMany
    aa = Application.WorksheetFunction.CountA(Sheets(SheetName).Cells(1, a).EntireColumn)
    If aa > 0 Then
        r = a
        If e = 0 Then
            e = a
        End If
    End If
    Next a

    If ShowWhat = "MIN" Then
        ScanColumns = e
    End If
    If ShowWhat = "MAX" Then
        ScanColumns = r
    End If

End Function

Public Function ScanRows(SheetName As String, thisMany As Double, ShowWhat As String)

    e = 0

    For a = 1 To thisMany
        aa = Application.WorksheetFunction.CountA(Sheets(SheetName).Cells(a, 1).EntireRow)
        If aa > 0 Then
            r = a
            If e = 0 Then
                e = a
            End If
        End If
        Next a

        If ShowWhat = "MIN" Then
            ScanRows = e
        End If
        If ShowWhat = "MAX" Then
            ScanRows = r
        End If

    End Function

    Public Function FindInArea(SheetName As String, startRow As String, endRow As String, startCol As String, endCol As String, FindThis As String, ShowWhat As String)

        CalendarMonthFormat1 = "Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec,"
        CalendarMonthFormat2 = "January, Feburary,March,April,May,June,July,August,September,October,November,December,"

        earliestDate = 999999999
        latestDate = 0


        If Left(FindThis, 7) = "[LENGTH" Then
            LengthLook = Replace(FindThis, "[LENGTH", "")
            LengthLook = Replace(LengthLook, "]", "")
        End If


        For a = startRow To endRow
            For b = startCol To endCol
                ThisCell = Sheets(SheetName).Cells(a, b)
                thisCellAddr = Sheets(SheetName).Cells(a, b).Address
                If ThisCell = FindThis Then
                    addrList = addrList & "[" & thisCellAddr & "]"
                    rc_list = rc_list & "[" & a & "," & b & "]"
                    c = c + 1
                End If
                If FindThis = "[MONTHS1]" Then
                    If ThisCell <> "" And InStr(LCase(CalendarMonthFormat1), LCase((ThisCell) & ",")) > 0 And Len(ThisCell) = 3 Then
                        addrList = addrList & "[" & thisCellAddr & "]"
                        rc_list = rc_list & "[" & a & "," & b & "]"
                        c = c + 1
                    End If
                End If
                If FindThis = "[MONTHS2]" Then
                    If ThisCell <> "" And InStr(LCase(CalendarMonthFormat2), LCase((ThisCell) & ",")) > 0 Then
                        addrList = addrList & "[" & thisCellAddr & "]"
                        rc_list = rc_list & "[" & a & "," & b & "]"
                        c = c + 1
                    End If
                End If
                If FindThis = "[DATEFORMAT]" Then
                    If InStr(ThisCell, "/") > 0 Then
                        slash_count = 0
                        For sc = 1 To Len(ThisCell)
                            If Mid(ThisCell, sc, 1) = "/" Then
                                slash_count = slash_count + 1
                            End If
                            Next sc
                            If slash_count = 2 Then
                                On Error Resume Next
                                D = Day(ThisCell)
                                M = Month(ThisCell)
                                Y = Year(ThisCell)
                                If D > 0 And M > 0 And Y > 0 Then
                                    addrList = addrList & "[" & thisCellAddr & "]"
                                    rc_list = rc_list & "[" & a & "," & b & "]"
                                    c = c + 1
                                    If earliestDate > DateValue(ThisCell) Then
                                        earliestDate = DateValue(ThisCell)
                                        If Len(D) = 1 Then
                                            D = "0" & D
                                        End If
                                        If Len(M) = 1 Then
                                            M = "0" & M
                                        End If
                                        eDateLocation = thisCellAddr
                                        eDate_Format = D & "-" & M & "-" & Y
                                    End If

                                    If latestDate < DateValue(ThisCell) Then
                                        latestDate = DateValue(ThisCell)
                                        If Len(D) = 1 Then
                                            D = "0" & D
                                        End If
                                        If Len(M) = 1 Then
                                            M = "0" & M
                                        End If
                                        lDateLocation = thisCellAddr
                                        lDate_Format = D & "-" & M & "-" & Y
                                    End If
                                End If
                            End If
                        End If
                    End If

                    If Left(FindThis, 7) = "[LENGTH" Then
                        If Len(ThisCell) = Val(LengthLook) Then
                            addrList = addrList & "[" & thisCellAddr & "]"
                            rc_list = rc_list & "[" & a & "," & b & "]"
                            c = c + 1
                        End If
                    End If
                    If FindThis = "[DECIMAL]" Then
                        If InStr((ThisCell), ".") > 0 Then
                            addrList = addrList & "[" & thisCellAddr & "]"
                            rc_list = rc_list & "[" & a & "," & b & "]"
                            c = c + 1
                        End If
                    End If
                    If FindThis = "[PERC]" Then
                        If InStr((ThisCell), ".") > 0 And ThisCell <> "" And ThisCell <> 0 And Val(ThisCell) >= -1 And Val(ThisCell) <= 1 Then
                            addrList = addrList & "[" & thisCellAddr & "]"
                            rc_list = rc_list & "[" & a & "," & b & "]"
                            c = c + 1
                        End If
                    End If



                    Next b
                    Next a

                    If ShowWhat = "COUNT" Then
                        FindInArea = c
                    End If
                    If ShowWhat = "ADDR" Then
                        FindInArea = addrList
                    End If
                    If ShowWhat = "RC" Then
                        FindInArea = rc_list
                    End If
                    If ShowWhat = "EARLIESTDATE" Then
                        FindInArea = eDate_Format
                    End If
                    If ShowWhat = "EARLIESTDATEADDR" Then
                        FindInArea = eDateLocation
                    End If
                    If ShowWhat = "LATESTDATE" Then
                        FindInArea = lDate_Format
                    End If
                    If ShowWhat = "LATESTDATEADDR" Then
                        FindInArea = lDateLocation
                    End If
                End Function
0 голосов
/ 13 апреля 2010

Я бы также порекомендовал httparty - С этим просто невероятно легко сопоставить службы JSON. Попробуйте это:

require 'rubygems'
require 'httparty'

class Yahoo
  include HTTParty
  # i don't think you need auth for this endpoint -- but if you do, uncomment below and fill it in
  #basic_auth 'username', 'password'
  format :json

  def self.load
    self.get 'http://query.yahooapis.com/v1/public/yql', :query => {:q => 'desc social.updates.search', :format => 'json', :diagnostics => true, :env => 'store://datatables.org/alltableswithkeys'}
  end
end

puts Yahoo.load
0 голосов
/ 25 мая 2012

Вы можете попробовать omniauth-yahoo для авторизации, но видно, что он не поддерживает получение нового токена после истечения срока действия.

0 голосов
/ 13 апреля 2010

Для этого вы можете попробовать Механизировать самоцвет. Я использовал его для других аутентифицированных сервисов в прошлом.

...