KindleEar 搭建教程:推送 RSS 订阅到 Kindle


“Kindle推送”相关阅读

回复 取消回复

提示:带 * 标记的是必填项。您填写的邮箱地址将会被保密。首次留言将会在通过人工审核后显示。如果是提出问题,请务必提供尽可能多信息,这有助于他人更好地理解你所提出的问题。

小伙伴们写下了 805 条留言

      • 谢谢回复,已经搞定自己的了。

        如果投递日志状态显示为 wrong SRC_EMAIL,请进入 GAE 后台。在“資訊主頁 (Dashboard)”标签页中找到“App Engine”卡片,点击卡片底部的“前往 App Engine 資訊主頁 (Go to the App Engine dashboard)”,然后点击左侧的的“設定 (settings)”,看看“Email API 已獲授權的寄件者 (Email API authorized senders)”账号里面有没有添加发送邮箱地址,如果没有就点击上方的“編輯 (Edit)”添加一下,即可解决此问题。

        GAE后台界面已经更新,按这路径找不到设置了,可以直接从以下链接到达:https://console.developers.google.com/appengine/settings 应用设置点修改,然后添加Gmail邮箱地址。

  1. 配置完点击我的订阅和投递日志会显示internal server error。其余页面正常,看到小贴士说要更新下索引请问下具体代码是怎样子的

    • AEC 您好。按照小贴士的提示操作即可:在 KindleEar 目录下执行:appcfg.py update_indexes 更新一下索引。

      • C:\KindleEar>appcfg.py update_indexes
        ‘appcfg.py’ 不是内部或外部命令,也不是可运行的程序
        或批处理文件。

        • 已找到正确代码
          C:\KindleEar>cd C:\Program Files (x86)\Google\google_appengine

          C:\Program Files (x86)\Google\google_appengine>C:\python27\python.exe appcfg.py update_indexes C:\kindleear
          08:53 PM Host: appengine.google.com
          08:53 PM Uploading index definitions.

  2. 出现如下情况 如何解决
    C:\Program Files (x86)\Google\google_appengine>C:\python27\python.exe appcfg.py update C:\kindleear\app.yaml C:\kindleear\module-worker.yaml
    09:50 AM Host: appengine.google.com
    09:50 AM Application: kindle-lxxh; version: 1
    09:50 AM Starting update of app: kindle-lxxh, version: 1
    09:50 AM Getting current resource limits.
    Traceback (most recent call last):
    File “appcfg.py”, line 136, in
    run_file(__file__, globals())
    File “appcfg.py”, line 132, in run_file
    execfile(_PATHS.script_file(script_name), globals_)
    File “C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py”, line 5495, in
    main(sys.argv)
    File “C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py”, line 5486, in main
    result = AppCfgApp(argv).Run()
    File “C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py”, line 2964, in Run
    self.action(self)
    File “C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py”, line 5142, in __call__
    return method()
    File “C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py”, line 3844, in Update
    self.UpdateUsingSpecificFiles()
    File “C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py”, line 3836, in UpdateUsingSpecificFiles
    self.UpdateVersion(rpcserver, self.basepath, module_yaml, file_name)
    File “C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py”, line 3812, in UpdateVersion
    return appversion.DoUpload(paths, openfunc)
    File “C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py”, line 2399, in DoUpload
    self.error_fh)
    File “C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py”, line 497, in GetResourceLimits
    resource_limits.update(_GetRemoteResourceLimits(logging_context))
    File “C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py”, line 467, in _GetRemoteResourceLimits
    yaml_data = logging_context.Send(‘/api/appversion/getresourcelimits’)
    File “C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py”, line 1709, in Send
    result = self.rpcserver.Send(url, payload=payload, **kwargs)
    File “C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appengine_rpc_httplib2.py”, line 246, in Send
    url, method=method, body=payload, headers=headers)
    File “C:\Program Files (x86)\Google\google_appengine\lib\oauth2client\oauth2client\client.py”, line 579, in new_request
    self._refresh(request_orig)
    File “C:\Program Files (x86)\Google\google_appengine\lib\oauth2client\oauth2client\client.py”, line 787, in _refresh
    self._do_refresh_request(http_request)
    File “C:\Program Files (x86)\Google\google_appengine\lib\oauth2client\oauth2client\client.py”, line 806, in _do_refresh_request
    self.token_uri, method=’POST’, body=body, headers=headers)
    File “C:\Program Files (x86)\Google\google_appengine\lib\httplib2\httplib2\__init__.py”, line 1584, in request
    (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
    File “C:\Program Files (x86)\Google\google_appengine\lib\httplib2\httplib2\__init__.py”, line 1332, in _request
    (response, content) = self._conn_request(conn, request_uri, method, body, headers)
    File “C:\Program Files (x86)\Google\google_appengine\lib\httplib2\httplib2\__init__.py”, line 1268, in _conn_request
    conn.connect()
    File “C:\Program Files (x86)\Google\google_appengine\lib\httplib2\httplib2\__init__.py”, line 1011, in connect
    sock.connect((self.host, self.port))
    File “C:\Program Files (x86)\Google\google_appengine\socks.py”, line 362, in connect
    raise GeneralProxyError((5,_generalerrors[5]))
    socks.GeneralProxyError: (5, ‘bad input’)

  3. 而且您看,我安装socksipy的时候,也安装不了“chenchaodeMacBook-Pro:~ chenchao$ sudo pip install PySocks
    Password:
    sudo: pip: command not found
    chenchaodeMacBook-Pro:~ chenchao$”。然后就是手动下载的socksipy的压缩包,然后解压了(ps:解压路径就只是解压在常用的目录,教程也没说要什么特定目录)。

    • 您的系统没有安装 pip,安装 PySocks 前需要先安装 pip。具体方法为先下载 get-pip.py,然后运行 python get-pip.py 安装 pip。您完全可以通过搜索解决这些问题。比如遇到错误“pip: command not found”,就搜索这一错误提示,可以找到很多解决此问题的方法。

      • 按照您提示的方向我自行百度,终于把pip给安装好了。然后在上传过程中出现“2016-07-25 14:26:09,486 ERROR appcfg.py:2409 An error occurred processing file ”: [Errno 13] Permission denied: ‘/Users/apple/.appcfg_oauth2_tokens’. Aborting.”这个错误(ps:其他代码我就没粘贴过来了),看来问题似乎还是处在appcfg.py身上。同时对于mac分别输入命令上传意思是先输入“appcfg.pyupdate~/Applications/kindleear/app.yaml~/Applications/kindleear/module-worker.yaml”按下enter,等所有命令运行完后,再输入“appcfg.py update ~/Applications/kindleear”上传命令,分别输入是指这个意思吗?

        • 1、仔细按照文内步骤操作会出现这么多错误吗?单看一个错误提示没有上下文很那判断问题所在,如果有可能的话请列出输入的命令,以及执行后出现带有上下文的错误信息。
          2、两个步骤是先后操作的。执行完毕一个命令再执行另一个。

  4. 您看看,就是这个情况。找了文件路径也不对,估计是命令前面没有设置文件路径。chenchaodeMacBook-Pro:~ chenchao$ sudo/appcfg.py update ~/Applications/kindleear/app.yaml ~/Applications/kindleear/module-worker.yaml
    -bash: sudo/appcfg.py: No such file or directory
    chenchaodeMacBook-Pro:~ chenchao$ appcfg.py update ~/Applications/kindleear
    -bash: appcfg.py: command not found
    chenchaodeMacBook-Pro:~ chenchao$
    麻烦您看一下,谢谢。

    • 陈超 您好。第一条命令提示的是输入错误。第二条命令是找不到 appcfg.py 命令,请问确认安装 GAE SDK 了吗?

      • 安装了,我的应用里显示为“GoogleAppEngineLauncher”这个名字的应用。会不会是这个“KindleEar 压缩包”解压的位置错误,我把它放在了user/apple/application里面去了。您给我看看这下怎么办?麻烦您了

        • KindleEar 解压到什么地方不重要(当然还是建议按照文章内所说的做),只要输入的路径正确就可以了,问题的关键是 appcfg.py 命令找不到。请先打开 GoogleAppEngineLaungcher 这个软件,然后点击左上角菜单“GoogleAppEngineLaungcher”,然后再点击弹出菜单中的“Make Symlinks…”,最后点击“OK”,这样应该就可以直接使用 appcfg.py 的命令了。

          • 我按照您说的做,然后是这样:chenchaodeMacBook-Pro:~ chenchao$ appcfg.py update ~/Applications/kindleear/app.yaml ~/Applications/kindleear/module-worker.yaml
            Traceback (most recent call last):
            File “/usr/local/bin/appcfg.py”, line 18, in
            import socks
            ImportError: No module named socks
            chenchaodeMacBook-Pro:~ chenchao$ appcfg.py update ~/Applications/kindleear
            Traceback (most recent call last):
            File “/usr/local/bin/appcfg.py”, line 18, in
            import socks
            ImportError: No module named socks
            我回去看了步骤,不知道错误出在哪里了

            • WIN10系统,折腾过程也出现过这个提示,然后把以下要添加的代码移到这一行的上面解决了,不知道可不可以帮到你。(我原来是把代码放在这一行的下面)
              “””Convenience wrapper for starting an appengine tool.”””

              在它上面添加下列代码:
              import socks
              import socket
              socket.socket = socks.socksocket
              socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, “127.0.0.1”, 8788)

              • 您说的这个我已经正确做了,而且我的电脑是苹果mbp,跟您的系统不一样,不过还是谢谢您的解答。目前问题还没有解决,因为一层一层的扒皮后,一个问题接着一个问题

                • 我的已经搞定了。
                  是代理问题,原先用ShadowSocks软件来翻墙,后来一直出现这问题,就试着设置VPN翻墙,结果解决了,你也可以试一下。

  5. google indexes 都上传了 可以选书选自定义rss什么的了 但是为什么现在投递还是internal server error

  6. 按楼主部步骤来,可以说成功了,能够进如kindleear网页设置,推送显示状态ok,可是推送到kindle邮箱太慢了,大约一到两个小时才能推送到,本地网速还是可以的,10M的网速,试过推送几次,有时候还不能推送到,请问这正常吗,有办法解决吗?

  7. bogon:~ mac$ appcfg.py update ~/Applications/kindleear/app.yaml ~/Applications/kindleear/module-worker.yaml
    -bash: appcfg.py: command not found
    bogon:~ mac$
    到这步骤执行不下去了,什么原因呢?谢谢!

  8. 你好,我执行第一条语句C:\python27\python.exe appcfg.py update D:\kindleear\app.yaml D:\kindleear\module-worker.yaml成功了
    但是执行第二条语句时出现这个:
    C:\Program Files\Google\google_appengine>C:\python27\python.exe appcfg.py update
    D:\kindleear
    02:35 PM Application: zhang-kanshuai; version: 1
    02:35 PM Host: appengine.google.com
    ****************************************************************
    There is a new release of the SDK available.
    ———–
    Latest SDK:
    api_versions: [‘1’]
    release: 1.9.38
    supported_api_versions:
    go:
    api_versions: [go1]
    java7:
    api_versions: [‘1.0’]
    python:
    api_versions: [‘1’]
    python27:
    api_versions: [‘1’]
    timestamp: 1462211654

    ———–
    Your SDK:
    api_versions: [‘1’]
    release: 1.9.36
    supported_api_versions:
    go:
    api_versions: [go1]
    java7:
    api_versions: [‘1.0’]
    python:
    api_versions: [‘1’]
    python27:
    api_versions: [‘1’]
    timestamp: 1458250107

    ———–
    Please visit https://developers.google.com/appengine/downloads
    for the latest SDK
    ****************************************************************
    02:35 PM Starting update of app: zhang-kanshuai, version: 1
    02:35 PM Getting current resource limits.
    02:35 PM Scanning files on local disk.
    02:35 PM Cloning 15 static files.
    02:35 PM Cloning 387 application files.
    2016-07-06 14:35:41,265 ERROR appcfg.py:2569 An unexpected error occurred. Abort
    ing.
    Traceback (most recent call last):
    File “C:\Program Files\Google\google_appengine\google\appengine\tools\appcfg.p
    y”, line 2406, in DoUpload
    missing_files = self.Begin()
    File “C:\Program Files\Google\google_appengine\google\appengine\tools\appcfg.p
    y”, line 1999, in Begin
    CloneFiles(‘/api/appversion/clonefiles’, files_to_clone, ‘application’)
    File “C:\Program Files\Google\google_appengine\google\appengine\tools\appcfg.p
    y”, line 1987, in CloneFiles
    payload=BuildClonePostBody(chunk))
    File “C:\Program Files\Google\google_appengine\google\appengine\tools\appcfg.p
    y”, line 1702, in Send
    result = self.rpcserver.Send(url, payload=payload, **kwargs)
    File “C:\Program Files\Google\google_appengine\google\appengine\tools\appengin
    e_rpc_httplib2.py”, line 247, in Send
    url, method=method, body=payload, headers=headers)
    File “C:\Program Files\Google\google_appengine\lib\oauth2client\oauth2client\c
    lient.py”, line 569, in new_request
    redirections, connection_type)
    File “C:\Program Files\Google\google_appengine\lib\httplib2\httplib2\__init__.
    py”, line 1584, in request
    (response, content) = self._request(conn, authority, uri, request_uri, metho
    d, body, headers, redirections, cachekey)
    File “C:\Program Files\Google\google_appengine\lib\httplib2\httplib2\__init__.
    py”, line 1332, in _request
    (response, content) = self._conn_request(conn, request_uri, method, body, he
    aders)
    File “C:\Program Files\Google\google_appengine\lib\httplib2\httplib2\__init__.
    py”, line 1268, in _conn_request
    conn.connect()
    File “C:\Program Files\Google\google_appengine\lib\httplib2\httplib2\__init__.
    py”, line 1014, in connect
    self.disable_ssl_certificate_validation, self.ca_certs)
    File “C:\Program Files\Google\google_appengine\lib\httplib2\httplib2\__init__.
    py”, line 80, in _ssl_wrap_socket
    cert_reqs=cert_reqs, ca_certs=ca_certs)
    File “C:\python27\lib\ssl.py”, line 911, in wrap_socket
    ciphers=ciphers)
    File “C:\python27\lib\ssl.py”, line 579, in __init__
    self.do_handshake()
    File “C:\python27\lib\ssl.py”, line 808, in do_handshake
    self._sslobj.do_handshake()
    SSLEOFError: EOF occurred in violation of protocol (_ssl.c:590)
    02:35 PM Rolling back the update.
    Traceback (most recent call last):
    File “appcfg.py”, line 136, in
    run_file(__file__, globals())
    File “appcfg.py”, line 132, in run_file
    execfile(_PATHS.script_file(script_name), globals_)
    File “C:\Program Files\Google\google_appengine\google\appengine\tools\appcfg.p
    y”, line 5403, in
    main(sys.argv)
    File “C:\Program Files\Google\google_appengine\google\appengine\tools\appcfg.p
    y”, line 5394, in main
    result = AppCfgApp(argv).Run()
    File “C:\Program Files\Google\google_appengine\google\appengine\tools\appcfg.p
    y”, line 2957, in Run
    self.action(self)
    File “C:\Program Files\Google\google_appengine\google\appengine\tools\appcfg.p
    y”, line 5050, in __call__
    return method()
    File “C:\Program Files\Google\google_appengine\google\appengine\tools\appcfg.p
    y”, line 3789, in Update
    self._UpdateWithParsedAppYaml(appyaml, self.basepath)
    File “C:\Program Files\Google\google_appengine\google\appengine\tools\appcfg.p
    y”, line 3842, in _UpdateWithParsedAppYaml
    self.UpdateVersion(rpcserver, basepath, appyaml, APP_YAML_FILENAME)
    File “C:\Program Files\Google\google_appengine\google\appengine\tools\appcfg.p
    y”, line 3727, in UpdateVersion
    return appversion.DoUpload(paths, openfunc)
    File “C:\Program Files\Google\google_appengine\google\appengine\tools\appcfg.p
    y”, line 2406, in DoUpload
    missing_files = self.Begin()
    File “C:\Program Files\Google\google_appengine\google\appengine\tools\appcfg.p
    y”, line 1999, in Begin
    CloneFiles(‘/api/appversion/clonefiles’, files_to_clone, ‘application’)
    File “C:\Program Files\Google\google_appengine\google\appengine\tools\appcfg.p
    y”, line 1987, in CloneFiles
    payload=BuildClonePostBody(chunk))
    File “C:\Program Files\Google\google_appengine\google\appengine\tools\appcfg.p
    y”, line 1702, in Send
    result = self.rpcserver.Send(url, payload=payload, **kwargs)
    File “C:\Program Files\Google\google_appengine\google\appengine\tools\appengin
    e_rpc_httplib2.py”, line 247, in Send
    url, method=method, body=payload, headers=headers)
    File “C:\Program Files\Google\google_appengine\lib\oauth2client\oauth2client\c
    lient.py”, line 569, in new_request
    redirections, connection_type)
    File “C:\Program Files\Google\google_appengine\lib\httplib2\httplib2\__init__.
    py”, line 1584, in request
    (response, content) = self._request(conn, authority, uri, request_uri, metho
    d, body, headers, redirections, cachekey)
    File “C:\Program Files\Google\google_appengine\lib\httplib2\httplib2\__init__.
    py”, line 1332, in _request
    (response, content) = self._conn_request(conn, request_uri, method, body, he
    aders)
    File “C:\Program Files\Google\google_appengine\lib\httplib2\httplib2\__init__.
    py”, line 1268, in _conn_request
    conn.connect()
    File “C:\Program Files\Google\google_appengine\lib\httplib2\httplib2\__init__.
    py”, line 1014, in connect
    self.disable_ssl_certificate_validation, self.ca_certs)
    File “C:\Program Files\Google\google_appengine\lib\httplib2\httplib2\__init__.
    py”, line 80, in _ssl_wrap_socket
    cert_reqs=cert_reqs, ca_certs=ca_certs)
    File “C:\python27\lib\ssl.py”, line 911, in wrap_socket
    ciphers=ciphers)
    File “C:\python27\lib\ssl.py”, line 579, in __init__
    self.do_handshake()
    File “C:\python27\lib\ssl.py”, line 808, in do_handshake
    self._sslobj.do_handshake()
    ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:590)

    C:\Program Files\Google\google_appengine>
    请问是什么问题,谢谢

  9. 我在第三步添加代码后保存出现unable to save的错误,请问一下这个要怎么解决?谢谢。

  10. C:\Program Files (x86)\Google\google_appengine>C:\python27\python.exe appcfg.py update C:\kindleear\app.yaml C:\kindleear\module-worker.yaml
    01:20 PM Host: appengine.google.com
    01:20 PM Application: catstreetnews; version: 1
    01:20 PM Starting update of app: catstreetnews, version: 1
    01:20 PM Getting current resource limits.
    Traceback (most recent call last):
    File “appcfg.py”, line 136, in
    run_file(__file__, globals())
    File “appcfg.py”, line 132, in run_file
    execfile(_PATHS.script_file(script_name), globals_)
    File “C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py”, line 5495, in
    main(sys.argv)
    File “C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py”, line 5486, in main
    result = AppCfgApp(argv).Run()
    File “C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py”, line 2964, in Run
    self.action(self)
    File “C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py”, line 5142, in __call__
    return method()
    File “C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py”, line 3844, in Update
    self.UpdateUsingSpecificFiles()
    File “C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py”, line 3836, in UpdateUsingSpecificFiles
    self.UpdateVersion(rpcserver, self.basepath, module_yaml, file_name)
    File “C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py”, line 3812, in UpdateVersion
    return appversion.DoUpload(paths, openfunc)
    File “C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py”, line 2399, in DoUpload
    self.error_fh)
    File “C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py”, line 497, in GetResourceLimits
    resource_limits.update(_GetRemoteResourceLimits(logging_context))
    File “C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py”, line 467, in _GetRemoteResourceLimits
    yaml_data = logging_context.Send(‘/api/appversion/getresourcelimits’)
    File “C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appcfg.py”, line 1709, in Send
    result = self.rpcserver.Send(url, payload=payload, **kwargs)
    File “C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\appengine_rpc_httplib2.py”, line 246, in Send
    url, method=method, body=payload, headers=headers)
    File “C:\Program Files (x86)\Google\google_appengine\lib\oauth2client\oauth2client\client.py”, line 579, in new_request
    self._refresh(request_orig)
    File “C:\Program Files (x86)\Google\google_appengine\lib\oauth2client\oauth2client\client.py”, line 787, in _refresh
    self._do_refresh_request(http_request)
    File “C:\Program Files (x86)\Google\google_appengine\lib\oauth2client\oauth2client\client.py”, line 806, in _do_refresh_request
    self.token_uri, method=’POST’, body=body, headers=headers)
    File “C:\Program Files (x86)\Google\google_appengine\lib\httplib2\httplib2\__init__.py”, line 1584, in request
    (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
    File “C:\Program Files (x86)\Google\google_appengine\lib\httplib2\httplib2\__init__.py”, line 1332, in _request
    (response, content) = self._conn_request(conn, request_uri, method, body, headers)
    File “C:\Program Files (x86)\Google\google_appengine\lib\httplib2\httplib2\__init__.py”, line 1268, in _conn_request
    conn.connect()
    File “C:\Program Files (x86)\Google\google_appengine\lib\httplib2\httplib2\__init__.py”, line 1011, in connect
    sock.connect((self.host, self.port))
    File “C:\Program Files (x86)\Google\google_appengine\socks.py”, line 362, in connect
    raise GeneralProxyError((5,_generalerrors[5]))
    socks.GeneralProxyError: (5, ‘bad input’)
    之前安装了,但是不好用,从来不投地,重新上传,总是出现上面的,求解,谢谢大神了

  11. appcfg.py: error: Error parsing C:\kindleear\app.yaml: mapping values are not allowed here
    in “C:\kindleear\app.yaml”, line 2, column 8.

    app.yam里的代码如下,哪里出错了?
    application:vidoc
    version: 1
    runtime: python27
    api_version: 1
    threadsafe: true
    instance_class: F1

    • hule 您好。使用 GAE Launcher 添加本地的 KindleEar 项目后,需要在项目设置 Extra Flags 中添加 module-worker.yaml 的路径。运行后通过 127.0.0.1:8081 访问。