Python API and utilities for the www.scpwiki.com website.
Project description
pyscp
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('www.scpwiki.com', 'snapshot_file.db')
creator.take_snapshot(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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file pyscp-1.1.6.tar.gz
.
File metadata
- Download URL: pyscp-1.1.6.tar.gz
- Upload date:
- Size: 20.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.25.1 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.7.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 85af5368ec07da60561e7fcd64b5edbf365583bdc37aa918e2b3cedf5fd34c4d |
|
MD5 | 1b2ef1d743500f0ed999284f4c3cb6ff |
|
BLAKE2b-256 | 1eee6c5a38b466b8c9ad2650835599bde0ed6b582f1c16d8bceebc24a264b4a5 |