Skip to main content

Python API and utilities for the www.scpwiki.com website.

Project description

pyscp

made-with-python PyPI license PyPI version shields.io PyPI pyversions

pyscp is a python library for interacting with wikidot-hosted websites. The library is mainly intended for use by the administrative staff of the www.scpwiki.com website, and has a host of feature exclusive to it. However, the majority of the core functionality should be applicalbe to any wikidot-based site.

Installation

Open console and run the following command:

pip install pyscp

Done.

Examples

Acessing Pages

import pyscp

wiki = pyscp.wikidot.Wiki('www.scpwiki.com')
p = wiki('scp-837')
print(
    '"{}" has a rating of {}, {} revisions, and {} comments.'
    .format(p.title, p.rating, len(p.history), len(p.comments)))
"SCP-837: Multiplying Clay" has a rating of 108, 14 revisions, and 54 comments.

You can access other sites as well:

ru_wiki = pyscp.wikidot.Wiki('scpfoundation.net')
p = ru_wiki('scp-837')
print('"{}" was created by {} on {}.'.format(p.title, p.author, p.created))
"SCP-837 - Глина умножения" was created by Gene R on 2012-12-26 11:12:13.

If the site doesn't use a custom domain, you can use the name of the site instead of the full url. E.g. Wiki('scpsandbox2') is the same as Wiki('scpsandbox2.wikidot.com').

Editing Pages

wiki = pyscp.wikidot.Wiki('scp-sandbox-3')
wiki.auth('example_username', 'example_password')
p = wiki('test')
last_revision = p.history[-1].number
p.edit(
    source='= This is centered **text** that uses Wikidot markup.',
    title="you can skip the title if you don't want changing it",
    #you can leave out the comment too, but that'd be rude
    comment='testing automated editing')
print(p.text)   # see if it worked
p.revert(last_revision)  # let's revert it back to what it were.
This is centered text that uses Wikidot markup.

Snapshots

When working with large number of pages, it could be faster to create a snapshot of the site than to download the pages one by one. Snapshots are optimized to download a large amount of data in the shortest possible time using multithreading.

import pyscp

creator = pyscp.snapshot.SnapshotCreator('snapshot_file.db')
creator.take_snapshot('www.scpwiki.com', forums=False)
# that's where we wait half an hour for it to finish

Once a snapshot is created, you can use snapshot.Wiki to read pages same as in the first example:

wiki = pyscp.snapshot.Wiki('www.scpwiki.com', 'snapshot_file.db')
p = wiki('scp-9005-2')
print(
    '"{}" has a rating of {}, was created by {}, and is awesome.'
    .format(p.title, p.rating, p.author))
print('Other pages by {}:'.format(p.author))
for other in wiki.list_pages(author=p.author):
    print(
        '{} (rating: {}, created: {})'
        .format(other.title, other.rating, other.created))
Page "SCP-9005-2" has a rating of 80, was created by yellowdrakex, and is awesome.
Other pages by yellowdrakex:
ClusterfREDACTED (rating: 112, created: 2011-10-20 18:08:49)
Dr Rights' Draft Box (rating: None, created: 2009-02-01 18:58:36)
Dr. Rights' Personal Log (rating: 3, created: 2008-11-26 23:03:27)
Dr. Rights' Personnel File (rating: 13, created: 2008-11-24 20:45:34)
Fifteen To Sixteen (rating: 17, created: 2010-02-15 05:55:58)
Great Short Story Concepts (rating: 1, created: 2010-06-03 19:26:06)
RUN AWAY FOREVURRR (rating: 79, created: 2011-10-24 16:34:23)
SCP-288: The "Stepford Marriage" Rings (rating: 56, created: 2008-11-27 07:47:01)
SCP-291: Disassembler/Reassembler (rating: 113, created: 2008-11-24 20:11:11)
...

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyscp-1.1.18.tar.gz (22.7 kB view details)

Uploaded Source

File details

Details for the file pyscp-1.1.18.tar.gz.

File metadata

  • Download URL: pyscp-1.1.18.tar.gz
  • Upload date:
  • Size: 22.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/56.0.0 requests-toolbelt/0.9.1 tqdm/4.56.2 CPython/3.9.5

File hashes

Hashes for pyscp-1.1.18.tar.gz
Algorithm Hash digest
SHA256 31f3fc570d03c17a36776aefec2fb704743c54398dc6eaf134d84041b79872a0
MD5 914d730be918ccdb3a30b8d3ca5d60e7
BLAKE2b-256 a6750a6a5f957e00004ad8d6c2eda09486c618db5a4d9aa442fc80f90a3d439b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page