1
0
Fork 0
forked from github/pelican

Merge pull request #3198 from mart-e/remove-posterous

This commit is contained in:
Justin Mayer 2023-10-24 10:22:19 +02:00 committed by GitHub
commit 777a708ef7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 6 additions and 75 deletions

View file

@ -11,7 +11,6 @@ software to reStructuredText or Markdown. The supported import formats are:
- Blogger XML export - Blogger XML export
- Dotclear export - Dotclear export
- Posterous API
- Tumblr API - Tumblr API
- WordPress XML export - WordPress XML export
- RSS/Atom feed - RSS/Atom feed
@ -48,16 +47,15 @@ Usage
:: ::
pelican-import [-h] [--blogger] [--dotclear] [--posterous] [--tumblr] [--wpfile] [--feed] pelican-import [-h] [--blogger] [--dotclear] [--tumblr] [--wpfile] [--feed]
[-o OUTPUT] [-m MARKUP] [--dir-cat] [--dir-page] [--strip-raw] [--wp-custpost] [-o OUTPUT] [-m MARKUP] [--dir-cat] [--dir-page] [--strip-raw] [--wp-custpost]
[--wp-attach] [--disable-slugs] [-e EMAIL] [-p PASSWORD] [-b BLOGNAME] [--wp-attach] [--disable-slugs] [-b BLOGNAME]
input|api_token|api_key input|api_key
Positional arguments Positional arguments
-------------------- --------------------
============= ============================================================================ ============= ============================================================================
``input`` The input file to read ``input`` The input file to read
``api_token`` (Posterous only) api_token can be obtained from http://posterous.com/api/
``api_key`` (Tumblr only) api_key can be obtained from https://www.tumblr.com/oauth/apps ``api_key`` (Tumblr only) api_key can be obtained from https://www.tumblr.com/oauth/apps
============= ============================================================================ ============= ============================================================================
@ -67,7 +65,6 @@ Optional arguments
-h, --help Show this help message and exit -h, --help Show this help message and exit
--blogger Blogger XML export (default: False) --blogger Blogger XML export (default: False)
--dotclear Dotclear export (default: False) --dotclear Dotclear export (default: False)
--posterous Posterous API (default: False)
--tumblr Tumblr API (default: False) --tumblr Tumblr API (default: False)
--wpfile WordPress XML export (default: False) --wpfile WordPress XML export (default: False)
--feed Feed to parse (default: False) --feed Feed to parse (default: False)
@ -101,10 +98,6 @@ Optional arguments
output. With this disabled, your Pelican URLs may not output. With this disabled, your Pelican URLs may not
be consistent with your original posts. (default: be consistent with your original posts. (default:
False) False)
-e EMAIL, --email=EMAIL
Email used to authenticate Posterous API
-p PASSWORD, --password=PASSWORD
Password used to authenticate Posterous API
-b BLOGNAME, --blogname=BLOGNAME -b BLOGNAME, --blogname=BLOGNAME
Blog name used in Tumblr API Blog name used in Tumblr API
@ -120,13 +113,9 @@ For Dotclear::
$ pelican-import --dotclear -o ~/output ~/backup.txt $ pelican-import --dotclear -o ~/output ~/backup.txt
for Posterous::
$ pelican-import --posterous -o ~/output --email=<email_address> --password=<password> <api_token>
For Tumblr:: For Tumblr::
$ pelican-import --tumblr -o ~/output --blogname=<blogname> <api_token> $ pelican-import --tumblr -o ~/output --blogname=<blogname> <api_key>
For WordPress:: For WordPress::

View file

@ -390,51 +390,6 @@ def dc2fields(file):
post_format) post_format)
def posterous2fields(api_token, email, password):
"""Imports posterous posts"""
import base64
from datetime import timedelta
import json
import urllib.request as urllib_request
def get_posterous_posts(api_token, email, password, page=1):
base64string = base64.encodestring(
("{}:{}".format(email, password)).encode('utf-8')).replace('\n', '')
url = ("http://posterous.com/api/v2/users/me/sites/primary/"
"posts?api_token=%s&page=%d") % (api_token, page)
request = urllib_request.Request(url)
request.add_header('Authorization', 'Basic %s' % base64string.decode())
handle = urllib_request.urlopen(request)
posts = json.loads(handle.read().decode('utf-8'))
return posts
page = 1
posts = get_posterous_posts(api_token, email, password, page)
subs = DEFAULT_CONFIG['SLUG_REGEX_SUBSTITUTIONS']
while len(posts) > 0:
posts = get_posterous_posts(api_token, email, password, page)
page += 1
for post in posts:
slug = post.get('slug')
if not slug:
slug = slugify(post.get('title'), regex_subs=subs)
tags = [tag.get('name') for tag in post.get('tags')]
raw_date = post.get('display_date')
date_object = SafeDatetime.strptime(
raw_date[:-6], '%Y/%m/%d %H:%M:%S')
offset = int(raw_date[-5:])
delta = timedelta(hours=(offset / 100))
date_object -= delta
date = date_object.strftime('%Y-%m-%d %H:%M')
kind = 'article' # TODO: Recognise pages
status = 'published' # TODO: Find a way for draft posts
yield (post.get('title'), post.get('body_cleaned'),
slug, date, post.get('user').get('display_name'),
[], tags, status, kind, 'html')
def tumblr2fields(api_key, blogname): def tumblr2fields(api_key, blogname):
""" Imports Tumblr posts (API v2)""" """ Imports Tumblr posts (API v2)"""
import json import json
@ -893,7 +848,7 @@ def fields2pelican(
def main(): def main():
parser = argparse.ArgumentParser( parser = argparse.ArgumentParser(
description="Transform feed, Blogger, Dotclear, Posterous, Tumblr, or " description="Transform feed, Blogger, Dotclear, Tumblr, or "
"WordPress files into reST (rst) or Markdown (md) files. " "WordPress files into reST (rst) or Markdown (md) files. "
"Be sure to have pandoc installed.", "Be sure to have pandoc installed.",
formatter_class=argparse.ArgumentDefaultsHelpFormatter) formatter_class=argparse.ArgumentDefaultsHelpFormatter)
@ -906,9 +861,6 @@ def main():
parser.add_argument( parser.add_argument(
'--dotclear', action='store_true', dest='dotclear', '--dotclear', action='store_true', dest='dotclear',
help='Dotclear export') help='Dotclear export')
parser.add_argument(
'--posterous', action='store_true', dest='posterous',
help='Posterous export')
parser.add_argument( parser.add_argument(
'--tumblr', action='store_true', dest='tumblr', '--tumblr', action='store_true', dest='tumblr',
help='Tumblr export') help='Tumblr export')
@ -959,12 +911,6 @@ def main():
help='Disable storing slugs from imported posts within output. ' help='Disable storing slugs from imported posts within output. '
'With this disabled, your Pelican URLs may not be consistent ' 'With this disabled, your Pelican URLs may not be consistent '
'with your original posts.') 'with your original posts.')
parser.add_argument(
'-e', '--email', dest='email',
help="Email address (posterous import only)")
parser.add_argument(
'-p', '--password', dest='password',
help="Password (posterous import only)")
parser.add_argument( parser.add_argument(
'-b', '--blogname', dest='blogname', '-b', '--blogname', dest='blogname',
help="Blog name (Tumblr import only)") help="Blog name (Tumblr import only)")
@ -976,8 +922,6 @@ def main():
input_type = 'blogger' input_type = 'blogger'
elif args.dotclear: elif args.dotclear:
input_type = 'dotclear' input_type = 'dotclear'
elif args.posterous:
input_type = 'posterous'
elif args.tumblr: elif args.tumblr:
input_type = 'tumblr' input_type = 'tumblr'
elif args.wpfile: elif args.wpfile:
@ -986,7 +930,7 @@ def main():
input_type = 'feed' input_type = 'feed'
else: else:
error = ('You must provide either --blogger, --dotclear, ' error = ('You must provide either --blogger, --dotclear, '
'--posterous, --tumblr, --wpfile or --feed options') '--tumblr, --wpfile or --feed options')
exit(error) exit(error)
if not os.path.exists(args.output): if not os.path.exists(args.output):
@ -1005,8 +949,6 @@ def main():
fields = blogger2fields(args.input) fields = blogger2fields(args.input)
elif input_type == 'dotclear': elif input_type == 'dotclear':
fields = dc2fields(args.input) fields = dc2fields(args.input)
elif input_type == 'posterous':
fields = posterous2fields(args.input, args.email, args.password)
elif input_type == 'tumblr': elif input_type == 'tumblr':
fields = tumblr2fields(args.input, args.blogname) fields = tumblr2fields(args.input, args.blogname)
elif input_type == 'wordpress': elif input_type == 'wordpress':