cutlist.at - Die Cutlist-Community
Startseite   Information   FAQ/Support   Direkt-Upload   Software   Scripting-API   Impressum
Komplett veralteter, nicht eingehaltener Zeitplan   Stand: 15.06.2012
Samstag 2.Juni 2012 Cutlist.at 2.0 Betasystem für Entwickler
Sonntag 10.Juni 2012 green.OTR-C.at 2.0 Migration der Hintergrunddienste
Samstag 23.Juni 2012 green.OTR-C.at 2.0 Migration auf neues System
Sonntag 24.Juni 2012 Cutlist.at 2.0 Offene Beta für interessierte Benutzer
Juni/Juli 2012 OTR-C.at 2.0 Start der Betaphase
Ende Juli 2012 Cutlist.at 2.0 Migration auf neues System
API (alpha4) 
General

All responses are stringified JSON-objects WITHOUT line breaks or indents!

So the empty search response looks like this: {"count":0,"results":[],"info":{}}

Use jsbeautifier.org to beautify the results.

"key" parameter

Most methods accept an optional "key" parameter to identify the user, that can be a POST parameter or a request header:

X-key: abcdeabcdefghij1234567890

This "key" is provided to registered users by cutlist.at - software should generate a random key at its first run and send it along with all requests. Users should be able to read and overide this value to add the random key to cutlist.at-accounts and replace it by the key from a user-account.

"info" object

This object contains information about season, episode name and number for some TV-Shows...

Search for cutlists
Implemented: 99%
URL examples:
POST /api/search?bytes=1234567
POST /api/search?name=Scrubs_10.10.10_20.15_xyz_10_TVOON_DE.mpg.avi
GET /api/search?bytes=1234567
GET /api/search?name=Scrubs_10.10.10_20.15_xyz_10_TVOON_DE.mpg.avi
Parameters:
GET
bytes
The filesize of the inputfile in bytes.
GET
name
Filename of the inputfile.
POST
key (optional)
Random key from configuration (more)
If both parameters (name and bytes) are passed, the bytes-parameter will be used.
Example responses:
{
  "count": 0,
  "results": [],
  "info": {}
}
{
  "count": 1,
  "results": [{
    "id": 1,
    "originalid": 0,
    "inputfile": "Hoer_mal_wer_da_haemmert_12.04.06_19-50_rtlnitro_25_TVOON_DE.mpg.avi",
    "author": "anatol.at",
    "uploaded": "2012-05-13 15:15",
    "outputname": "1x12 Die Rückkehr vom toten Weihnachtsmann",
    "usercomment": "1x12 Die Rueckkehr vom toten Weihnachtsmann - OHNE Vorspann",
    "ratio": "",
    "errors": [],
    "infoconfirmed": {
      "true": 0,
      "wrong": 0
    },
    "quality": {
      "perfect": 1,
      "suitable": 0,
      "inaccurate": 0
    },
    "duplicatescontained": {
      "yes": 0,
      "no": 1
    },
    "ratingcount": 1,
    "downloads": 0,
    "revisions": [{
      "id": 2,
      "author": "anatol2",
      "uploaded": "2012-05-14 15:15",
      "outputname": "Hör mal wer da hämmert s01ep12 Die Rückkehr vom toten Weihnachtsmann",
      "usercomment": "",
      "ratio": "",
      "errors": ["VIDEO"],
      "downloads": 0,
      "infoconfirmed": {
        "true": 0,
        "wrong": 0
      }
    }, {
      "id": 3,
      "author": "anatol3",
      "uploaded": "2012-05-14 16:20",
      "outputname": "01x12 - Die Rückkehr vom toten Weihnachtsmann",
      "usercomment": "Ratio und Dateiname geändert",
      "ratio": "4:3",
      "errors": [],
      "downloads": 0,
      "infoconfirmed": {
        "true": 0,
        "wrong": 0
      }
    }]
  }],
  "info": {}
}
{
  "count": 1,
  "results": [{
    "id": 27,
    "originalid": 0,
    "inputfile": "Knight_Rider_12.04.11_17-45_rtlnitro_50_TVOON_DE.HQ.avi",
    "author": "RST",
    "uploaded": "2012-05-18 02:16",
    "outputname": "Knight_Rider_12.04.11_17-45_rtlnitro_50_TVOON_DE",
    "usercomment": "Mit ColdCut geschnitten",
    "ratio": "4:3",
    "errors": [],
    "infoconfirmed": {
      "true": 0,
      "wrong": 0
    },
    "quality": {
      "perfect": 7,
      "suitable": 1,
      "inaccurate": 1
    },
    "duplicatescontained": {
      "yes": 1,
      "no": 4
    },
    "ratingcount": 1,
    "downloads": 4,
    "revisions": []
  }],
  "info": {}
}
Cutlist download
Implemented: 99%
URL examples:
POST /api/cutlist/27
GET /api/cutlist/27
Parameters:
URL
"Cutlist ID"
The cutlist id from search results.
POST
key (optional)
Random key from configuration (more)
Example responses:
{
  "inputfile": "Hoer_mal_wer_da_haemmert_12.04.06_19-50_rtlnitro_25_TVOON_DE.mpg.avi",
  "author": "anatol.at",
  "usercomment": "1x12 Die Rueckkehr vom toten Weihnachtsmann - OHNE Vorspann",
  "outputname": "1x12 Die Rückkehr vom toten Weihnachtsmann",
  "fps": 25,
  "ratio": "",
  "errors": [],
  "revision": {
    "id": 3,
    "author": "anatol3",
    "usercomment": "Ratio und Dateiname geändert",
    "outputname": "01x12 - Die Rückkehr vom toten Weihnachtsmann",
    "ratio": "4:3",
    "errors": [],
    "appendbefore": 0,
    "appendafter": 0
  },
  "quality": {
    "perfect": 1,
    "suitable": 0,
    "inaccurate": 0
  },
  "duplicatescontained": {
    "yes": 0,
    "no": 1
  },
  "cutcount": 1,
  "cuts": [{
    "start": 12347,
    "duration": 33601
  }],
  "info": {}
}
{
  "inputfile": "Knight_Rider_12.04.11_17-45_rtlnitro_50_TVOON_DE.HQ.avi",
  "author": "RST",
  "usercomment": "Mit ColdCut geschnitten",
  "outputname": "Knight_Rider_12.04.11_17-45_rtlnitro_50_TVOON_DE",
  "fps": 25,
  "ratio": "4:3",
  "errors": [],
  "revision": {
    "id": 27,
    "author": "RST",
    "usercomment": "Mit ColdCut geschnitten",
    "outputname": "Knight_Rider_12.04.11_17-45_rtlnitro_50_TVOON_DE",
    "ratio": "4:3",
    "errors": [],
    "appendbefore": 0,
    "appendafter": 0,
    "infoconfirmed": {
      "true": 0,
      "wrong": 0
    }
  },
  "quality": {
    "perfect": 7,
    "suitable": 1,
    "inaccurate": 1
  },
  "duplicatescontained": {
    "yes": 1,
    "no": 4
  },
  "cutcount": 2,
  "cuts": [{
    "start": 15843,
    "duration": 53534
  }, {
    "start": 71404,
    "duration": 12828
  }],
  "info": {}
}
Cutlist upload
Implemented: 95%
URL example:
POST /api/upload
Parameters:
POST
cutlist
The CuLiX cutlist as a multipart file upload
POST
key (optional)
Random key from configuration (more)
Example responses:
{
  "success": 1,
  "id": 123,
  "error": ""
}
{
  "success": 2,
  "id": 124,
  "error": ""
}
{
  "success": 0,
  "error": "INVALID_CUTLIST"
}
Error codes:
INVALID_JSON
JSON could not be parsed
INVALID_CUTLIST
Upload does not contain a valid cutlist
DUPLICATE
This cutlist already exists on server
INVALID_INPUTNAME
The filename is not a valid OTR recording
AUTHORNAME_IN_USE
The authorname is already in use
BLOCKED
User or IP is blocked for some reason...
Success code 2 means that a revision for an existing cutlist containing the same cuts was created.
Cutlists for uploading
{
  "generator": "ColdCut/3.0.0",
  "inputfile": "How_I_Met_Your_Mother_12.02.15_11-35_pro7_25_TVOON_DE.mpg.avi",
  "bytes": 277195982,
  "author": "Test",
  "usercomment": "Mit ColdCut geschnitten",
  "outputname": "How I Met Your Mother 2012.02.15 11.35",
  "fps": 25,
  "ratio": "16:9",
  "errors": ["BEGINNING"],
  "quality": 1,
  "duplicatescontained": "no",
  "cuts": [{
    "start": 10831,
    "duration": 21015
  }, {
    "start": 42766,
    "duration": 8384
  }]
}
"error" array
Error codes:
BEGINNING
Missing beginning
ENDING
Missing ending
VIDEO
Errors in video
AUDIO
Errors in audio
ASYNC
Async video and audio
EPG
EPG-Error
Rate a cutlist
Implemented: 95%
URL example:
POST /api/rate/123?quality=1&duplicatescontained=no&infoconfirmed=true
Parameters:
URL
"Cutlist ID"
The id of the cutlist to rate
GET
quality
1="perfect", 2="suitable", 3="inaccurate"
GET
duplicatescontained (optional)
"no"="no duplicate scenes (left)"
"yes"="still contains duplicate scenes"
GET
infoconfirmed (optional)
"wrong"="outputname, error or ratio incorrect"
"true"="information is correct"
POST
key (optional)
Random key from configuration (more)
Example responses:
{
  "success": 1,
  "error": ""
}
{
  "success": 0,
  "error": "INVALID_RATING"
}
Error codes:
INVALID_RATING
"quality" parameter is invalid. Should be 1, 2 or 3
INVALID_ID
Invalid cutlist id or cutlist not found
DUPLICATE
User or IP has aleady rated the cutlist
NO_DOWNLOAD
The cutlist was not downloaded by the user or IP before
OWN_CUTLIST
The cutlist was created by the user himself
BLOCKED
User or IP is blocked for some reason...
Delete a cutlist
Implemented: 0%
TBD
Merge two cutlists
Implemented: 0%
TBD
Cutlist v1 compatibility
Implemented: 90%
URL examples:
GET /getxml.php?ofsb=1234567
GET /getxml.php?name=File_10.10.10_20.15_xyz_10_TVOON_DE.mpg.avi
GET /getfile.php?id=9012345
GET /user/abcdefghij1234567890/getfile.php?id=9012345
GET /rate.php?rate=9012345&rating=5
GET /user/abcdefghij1234567890/rate.php?rate=9012345&rating=5
POST / [userfile=FILE.cutlist]
POST / [userfile=FILE.cutlist , userid=1234567890ABCDEF1234]
POST /user/abcdefghij1234567890/ [userfile=FILE.cutlist]
TBD
Allgemein 
Grundsätzlich sollen Cutlist.at, OTR-C.at und green.OTR-C.at vollständig neu implementiert werden. green und OTR-C.at sollen weiterhin ein einheitliches Design behalten. Cutlist.at und OTR-C.at sollen auf das Dashboard-Prinzip umgestellt werden, sodass jeder seine Startseite dem persönlichen Geschmack anpassen kann. (Bewertungswidget, Benachrichtigungswidget, Shoutboxwidget,...)

Wichtige Richtlinien und Überlegungen zur Implementierung:
Die Hauptfunktionen sollen allen zugänglich sein: Barrierefrei, kein JavaScript nötig, mehrsprachig (DE+EN)
Die erweiterten Funktionen (z.B.: der Film+Serien-Editor) werden des Komforts wegen JavaScript sowie halbwegs aktuelle Browserversionen benötigen.
Aufgrund von steigenden Nutzerzahlen, muss bei der Implementierung sehr auf HighPerformance-tauglichkeit geachtet werden!
HTTP: Einsatz von hierfür empfohlenen Techniken. (CSS+JS minifyen, Sprites, static-Host?)
Datenbank: Hauptproblem ist und bleibt Tablelocking. (Zumindest teilweisen) Umstieg auf CouchDB überlegen?! Wenn CouchDB vielleicht auch gleich integration von node.js zum rendern der API-Ausgaben und Suchergebnisse?

Anmerkungen vom 30.Jan 11:
Komplette Implementierung aller Projekte komplett in NodeJS unter Verwendung des express-Frameworks.
Auch green.OTR-C.at (Mirror) wird in NodeJS neu implementiert. Dieses Projekt dient als Beta-Projekt und wird als erstes testweise migriert.
OTR-C.at wird zum reinen Verzeichnis, die Torrent-Funktinalitäten werden auf blue.OTR-C.at ausgelagert. Seedhosts werden in Zukunft per Webseed von den Mirror-Servern von green.OTR-C.at versorgt, auch das Torrent-Archiv wird in erster Linie durch Webseeds am Leben gehalten. (Privates Seeden ist natürlich dennoch sehr erwünscht! ;)
Datenbank bleibt weiterhin MySQL - jedoch teilweiser Umstieg auf InnoDB um Table-Locking-Probleme zu umgehen. Umstieg von Apache auf nginx.
Gemeinsame Shoutbox für Cutlist.at und OTR-C.at (mit Symbolen auf welcher Seite geposted wurde).
Shoutbox 
  • Hervorhebung von Nachrichten @[meinNick]
  • Private Chatnachrichten (Flüstern)
  • Mods können URLs zu Links machen
  • Mobile-Shoutbox optimiert für IPhone, Android und Win7mobile
  • Filter und persönliche RSS-Feeds (Flüstern+@[meinNick])
Die Nutzung dieses Service ist kostenlos. Ich übernehme jedoch keinerlei Verantwortung für eventuell enstehende Schäden und garantiere keinerlei Verfügbarkeit oder Ausfallsicherheit. Für Inhalt der Cutlists, fremde Einträge in der Shoutbox sowie Inhalte auf extern verlinkten Seiten bin ich weder verantwortlich noch haftbar!

Nutzungsbedingungen   -   IMPRESSUM   -   Webdesign by anatol.at
Diese Seite wurde in 0.014 Sekunden generiert. (DB-Auslastung: 1%)