wafflesfm / batter Goto Github PK
View Code? Open in Web Editor NEWIt makes Waffles.
License: Other
It makes Waffles.
License: Other
Allow users to send private messages to each other, or to groups of users.
Possible existing apps to use:
We need an extensible validation system for torrent data constraints that allows administrators of Batter installations to declaratively express what uploads should and should not be allowed on their site.
For example, a hypothetical Music data constraint could require that all torrents be multi-file torrents. It could further require that if format is "flac", all files should end in ".flac" or be an album art file
. It should NOT require that (e.g.) the album release year must be correct, because that is validating metadata.
As a general rule, the torrent data constraint validation should only operate on data encoded within the torrent, or collected about that data. This includes all information in the Torrent File Structure specification, as well as information collected about the files (e.g., bitrate, format, ripping program, originating media, etc).
There should be a way for a user to not encounter any NSFW content at all, should they choose it.
User profile options to hide, or allow, NSFW content (default hide).
Separate NSFW flags to be set for user avatar and user signature.
Option for video media content to be flagged as NSFW on upload.
Option for printed media content to be flagged as NSFW on upload.
Option for related images for torrent listing to be flagged as NSFW on upload (i.e. album art / dvd cover).
Option to omit NSFW results from search and hide NSFW tags from tag-cloud.
BBCode wrapper to hide NSFW material in forums.
There should be a "wiki" system that could serve as both the rules section, and the "site docs" section (for example, how to get on IRC, advanced search operators, and more).
The admins should be able to set up special routes for certain pages (e.g., site.com/rules would redirect to site.com/docs or something like that)
Pages would be assigned a specific permission level to view / edit, etc.
I think Gazelle actually has a pretty nice system for this.
Whenever changes are made to certain things, the tracker needs to be notified as per chihaya/chihaya#2. This includes:
Unless anyone is opposed, I suggest we use redis for this as it will be in the tech stack already.
There should be a system that allows staff or other groups to post news articles to the main page. This will cover site news/announcements, maybe some sort of blog (AB does a "Dev Blog"), or other content (Waffles has "Official Releases" and "Waffles Guild of Writers" articles, AB has "Anime of the Fortnight" and "Album of the Week", as examples).
It should be made where certain groups can post to certain categories (for example, on Waffles, we would want to have a group that can post WGW Articles themselves). It could perhaps be flexible enough so that the last X posts from a certain category go to a particular div (we would want this for WGW and Official Releases, AB probably wants this for AotF/AotW)
There should be a system to log various information to a centralized logging system, and based on permission levels, view that information later.
Some examples of things that should be logged:
We discussed it a little bit in IRC and continuing to use BBCode is probably the best for comments/forum posts, but the quality in BBCode libraries is pretty low and we need support for our own custom types like the spoiler tag. Ideas welcome.
Sometimes it's beneficial for administrators to assert that all uploads matching a certain pattern should be rejected, even if they are otherwise valid. This is also called a Do Not Upload (or DNU) list.
Is there any? If not, how about we adopt these:
There should be a way for staff to set up automatic, or "one-time" special awards or achievements to promote involvement with the community. On Waffles, this shows up as small icon-sized images in the user's profile and forum postbit.
Some examples:
Implement a full site API, probably using tasty-pie which would allow someone to use the whole site without logging in past registering onsite.
http://tastypieapi.org/
Allow people to
Currently when a torrent is deleted, it disappears entirely from the snatches page. This makes it harder when trying to determine if a person has been cheating, as their history is only partial.
It'd be great if items could remain in snatches even if the torrent were deleted from the site. Obviously there'd be no link, but it would be good if there were also some noticeable visual indication. A symbol, or the torrent title in a distinct colour, something like that.
I think we should follow Django guidelines on Python3, since the next release will support it.
There should be support for storing images either in a local directory, or use any number of CDN's through their APIs.
It would probably be a good idea to think about this in terms of certain staff being able to upload images at any time, without sysadmin intervention. Some examples would be award images, and images for newsposts / articles, etc.
Staff should be able to post polls to the front page, and users can pick an answer. People seem to like them?
I definitely wouldn't consider this a very pressing issue, but it's not very hard, either. Maybe a good project for someone who is just getting familiar with the code base.
Perhaps a status page for various waffles-related services?
A quick google brings this:
All music uploads should be validated as much as possible against discogs. we should also implement adding stuff not on the discogs website too
When a user is uploading, they should have the option to search Discogs for artist/release information.
There should be some support for performing "batch" or long-running jobs. We should be able to use Celery for this.
Some examples of things that would need a long-running task for:
Users should be notified when events occur. Key to this is a centralised notifications system which can store and display notifications.
It'd be cool if this was real-time or pseudo-realtime, too.
The permissions system in batter should be very flexible. Some situations I can think of:
Main "community involvement" class - this could be based on upload / downlaod, forum participation, any number of metrics depending on the site.
Staff / VIP classes - pretty self-explanatory. These would bypass the classes above, and get a specific list of permissions.
Add-on classes - for example, a site might have a group of people who work on News Stories, or articles, or "special release" write-ups. We might want to give these users access to a specific forum, or the ability to do "something" (e.g. post a news story)
Others I probably can't think of right now.
I'm getting this error on the current develop branch (19d9260). Vagrant is installed properly and works on vagrantfiles from other projects.
โ vagrant git:(develop) vagrant up
/home/user/projects/batter/vagrant/Vagrantfile:4:in <top (required)>': undefined method
configure' for Vagrant:Module (NoMethodError)
from /home/user/.rbenv/versions/1.9.3-p385/lib/ruby/gems/1.9.1/gems/vagrant-1.0.6/lib/vagrant/config/loader.rb:115:in load' from /home/user/.rbenv/versions/1.9.3-p385/lib/ruby/gems/1.9.1/gems/vagrant-1.0.6/lib/vagrant/config/loader.rb:115:in
block in procs_for_source'
from /home/user/.rbenv/versions/1.9.3-p385/lib/ruby/gems/1.9.1/gems/vagrant-1.0.6/lib/vagrant/config.rb:41:in block in capture_configures' from <internal:prelude>:10:in
synchronize'
from /home/user/.rbenv/versions/1.9.3-p385/lib/ruby/gems/1.9.1/gems/vagrant-1.0.6/lib/vagrant/config.rb:36:in capture_configures' from /home/user/.rbenv/versions/1.9.3-p385/lib/ruby/gems/1.9.1/gems/vagrant-1.0.6/lib/vagrant/config/loader.rb:114:in
procs_for_source'
from /home/user/.rbenv/versions/1.9.3-p385/lib/ruby/gems/1.9.1/gems/vagrant-1.0.6/lib/vagrant/config/loader.rb:51:in block in set' from /home/user/.rbenv/versions/1.9.3-p385/lib/ruby/gems/1.9.1/gems/vagrant-1.0.6/lib/vagrant/config/loader.rb:45:in
each'
from /home/user/.rbenv/versions/1.9.3-p385/lib/ruby/gems/1.9.1/gems/vagrant-1.0.6/lib/vagrant/config/loader.rb:45:in set' from /home/user/.rbenv/versions/1.9.3-p385/lib/ruby/gems/1.9.1/gems/vagrant-1.0.6/lib/vagrant/environment.rb:377:in
block in load_config!'
from /home/user/.rbenv/versions/1.9.3-p385/lib/ruby/gems/1.9.1/gems/vagrant-1.0.6/lib/vagrant/environment.rb:392:in call' from /home/user/.rbenv/versions/1.9.3-p385/lib/ruby/gems/1.9.1/gems/vagrant-1.0.6/lib/vagrant/environment.rb:392:in
load_config!'
from /home/user/.rbenv/versions/1.9.3-p385/lib/ruby/gems/1.9.1/gems/vagrant-1.0.6/lib/vagrant/environment.rb:327:in load!' from /home/user/.rbenv/versions/1.9.3-p385/lib/ruby/gems/1.9.1/gems/vagrant-1.0.6/bin/vagrant:40:in
<top (required)>'
from /home/user/.rbenv/versions/1.9.3-p385/bin/vagrant:23:in load' from /home/user/.rbenv/versions/1.9.3-p385/bin/vagrant:23:in
It's an obvious & mandatory feature. But it needs to be done right. A major problem I see with other sites is too much clutter/scrolling etc. Some artist pages are massive. I'd like to see something more akin to how Discogs does it.
See for an example: http://www.discogs.com/artist/Flaming+Lips%2C+The
Rather than showing all the different album versions, they are collapsed under a "master release", which, when clicked on, expands to show the different versions. (ajaxing, is it?) Keep in mind Discogs goes be every single different Catalogue #; Waffles only sees a difference if the mastering and/or tracklist is different. (or media: CD cassette vinyl)
Something else I'd love to see: have the page list the complete discog, regardless of something being on-site or not. Albums missing from the site could be denoted somehow. (diff font, an icon, even a friggin' asterisk) I really believe this would be a big incentive for the users to upload more content, in an effort to complete a discog. It would also make it an easier task for users to check for dupes, before uploading.
I would even like to carry the idea one step further, and list the main formats as well, regardless. Again, incentive to have an album up in every format. (flac, 320, V0, V2, perhaps "Other" [multichannel, DVD-A...]) Again, if the album isn't available in a certain format, the row/column would still show the missing format, just that it would be represented differently, to show it's not on site yet. Also, say there's a 192 rip up. Still show the V2 row/column, denoted as not being available, but add, say, (192CBR available) beside it, which would show that there is something there, but also that it can (and should) be upgraded/replaced. (And perhaps request votes could be shown/voted on here as well.)
All of this should be built & modifiable by the userbase & API (Discogs, by the looks of it at this point)
I don't know anything about coding, and especially don't know anything about building a tracker. Apologies if I'm screwing you around.
On Animebytes when clicking on an anime series it has the OP and ED. Hyperlinks are there for the artist, but then the user has to search through the artist to find the album in question.
e.g.http://mei.animebytes.tv/images/efd9c7daef815d7568ae30ea2aefb9a5.png
It'd be good if it'd directly link to Giniro Hikousan, as well as having the link to Supercell available
When users upload a torrent, we prompt them for the artist, release, release year, and so on. We should validate their inputted data against MusicBrainz.
I think we should use Django's i18n support right from the start, especially since it's not hard at all โ just wrap all the string in ugettext
.
What do you think?
Batter should have forums, or some equivalent method of community discussion.
Some things I can think of that will need to be provided:
In https://github.com/wafflesfm/batter/blob/develop/batter/torrents/views/upload.py#L68
t['info']['pieces'] = binascii.hexlify(t['info']['pieces'])
It would be much more efficient to just store this as binary, and if a textual representation is needed later just to convert it on the fly. I know that Django doesn't have a built-in thing for this, but IMO it's worth having to specialize some of the DB stuff to reduce the size by half. Comments regarding this @Ell?
If for some reason this isn't possible, at least base64 or better should be used.
Users should be able to make requests for specific uploads.
We need to have some brainstorming on how we might improve user engagement when dealing with requests (e.g., allow users to add some of their buffer to the request that the uploader would receive, or other ideas).
Music app needs to have its models updated.
I'm thinking along the lines of:
MusicUpload
(extends Upload
) - all the encoding specific metadata - has as its parent:
Release
(is a thing like InbetweenersTweener
) - all the release specific metadata like date, etc.
Master
(extends TorrentGroup
) - all the album/EP specific metadata.
This structure is similar to discogs, I believe, for consistency. It'd be a good idea to look at what metadata they can provide when considering model design.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.