Ich habe mein Tool so gut wie fertig, habe jetzt eine exe daraus erstellt mit cx_Freeze, hat für die Wordpress APi und Tumblr API wunderbar geklappt, jedoch nicht für die Google Blogger API. Ohne exe funktioniert alles, sobald ich die exe erstelle, funktioniert das Posten nicht.
Für die Blogger API brauche ich meine Oauth2 Zugangsdaten, die ich aus der JSON lade, das klappt auch, ich werde redirceted via Broswer und erlaube den Zugriff auf die Blogger API (diese ist auch aktiviert). Jetzt müsste eine blogger.dat Datei im selben Ordner erstellt werden, jedoch passiert nichts, obwohl da steht, dass die Authentifizierung erfolgreich war. Füge ich die blogger.dat manuel rein, wird diese erkannt, denn ich werde nicht redirected, aber wenn ich posten will tut sich nichts auch keine errors.
Für die Authentifizierung benutze ich diesen Code (war von google vorgegeben):
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import print_function
import sys
from oauth2client import client
from googleapiclient import sample_tools
# Authenticate and construct service.
def google_blogger_zugangsdaten():
global service
service, flags = sample_tools.init(
sys.argv, 'blogger', 'v3', __doc__ , "client_secrets.json",
scope='https://www.googleapis.com/auth/blogger')
def google_blogger_execute(google_blogname, bild_uri_zum_posten, alt_attribut_bild, title_attribut_bild, google_post_title, google_post_content):
blogs = service.blogs()
thisusersblogs = blogs.listByUser(userId='self').execute()
for blog in thisusersblogs['items']:
print('The blog named \'%s\' is at: %s id is: %s' % (blog['name'], blog['url'], blog['id']))
posts = service.posts()
#blog_id = 0
#google_blogname = "Development Blog"
for blog in thisusersblogs['items']:
if blog['name'] == google_blogname:
#blog_id = blog['id']
request = posts.insert(blogId=blog['id'], body = {"title" : google_post_title, "content" : "<img src='" + bild_uri_zum_posten + "' title='" + title_attribut_bild + "' alt='" + alt_attribut_bild + "'><br>" + google_post_content})
request.execute()
meine setup.py, die zu cx_Freeze gehört:
Code: Alles auswählen
import sys
from cx_Freeze import setup, Executable
exe = Executable(
script=r"interface_gui.py",
base="Win32GUI",
)
setup(
name = "TESTApp",
version = "0.1",
description = "An example",
options = {"build_exe": {"includes": "BaseHTTPServer", "include_files": ["data.json", "client_secrets.json", "google_zugang.json", "tumblr_credentials.json", "blogger.dat"]} },
executables = [exe]
)
Vielen Dank!