Jackett / Jackett

API Support for your favorite torrent trackers
GNU General Public License v2.0
11.96k stars 1.28k forks source link

[hachede] Found no results while trying to browse this tracker (Test & manual search) #2428

Closed keystorm closed 6 years ago

keystorm commented 6 years ago

v0.8.596.0

The new HacheDe definition (thanks @Albvadi!) sadly yields 0 results, after both Test and manual search. Logs show proper HTML being fetched but no error shown.

Can anyone replicate this issue?

Log screenshot:

jackett-hachede-logs
garfield69 commented 6 years ago

I could cross check the definition for you against the html, if you provide a full enhanced log file. You will find the instructions for enabling enhanced logging and the locations of the log file at https://github.com/Jackett/Jackett#troubleshooting. Then repeat your test/search and then edit the log to redact any personal details, such as usernames, passwords, passkeys, hashes etc. and drag/drop the scrubbed log.txt file here.

Albvadi commented 6 years ago

Hi! I just tried the new release (v0.8.602), with the inicluded definition, both test and manual search and both work correctly...

Any log file to see what´s happening??

keystorm commented 6 years ago

Here's the redacted HTML as reported in the logs. This is immediately under the log entries in the screenshot above. Sorry for the hassle, I can't grab the logfile right now, but I don't want to keep you waiting.

Hope this helps.

hachede.txt

garfield69 commented 6 years ago

looks like @keystorm is being presented with a different html page than the one that @Albvadi has coded the indexer to handle. Might have something to do with different account settings, or perhaps its a mobile versus desktop presentation....

keystorm commented 6 years ago

I don’t remember having changed any setting. But I will look into it, and report back anything I might find.

Albvadi commented 6 years ago

I've been watching your HTML and as @garfield69 says, it's different from mine. In fact, I can not replicate the page. Attached captures:

  1. No table wrapping the content
  2. Details torrent button
  3. Multipliers in the same row as title
  4. Category separate from banner

So, I don´t know how can I enter to a page with the same html as yours...

If you do a manual search from Jackett, what is the url you obtain from the log?? My example: image image

keystorm commented 6 years ago

Woah. It has never looked like that in the >5 years i’ve been a member. It looks like it’s some sort of classic view.

Search and torrents do look exactly the same when on a browser for me. Traditional tables are nowhere to be seen.

Edit: Yup. There it is.

captura de pantalla 2018-01-19 a las 9 48 12

They default to modern view, I'm afraid. I have a new-is account and I don't remember having to switchthat setting for the site to look like it usually does.

Albvadi commented 6 years ago

:scream: :scream: :scream: :scream: :scream: :scream: :scream:

I do not know how long it has been since I was a member, but I had never seen that there was another layout for the list of torrents. I just found it in my profile!!

image

I will code the definition again with the modern view... :)

keystorm commented 6 years ago

I will code the definition again with the modern view... :)

That would be awesome. Thanks a lot! =)

Albvadi commented 6 years ago

Check it!

---
  site: hachede
  name: HacheDe
  description: "HacheDe is a SPANISH site for HD content"
  language: es-es
  type: private
  encoding: UTF-8
  links:
    - https://hachede.me/

  caps:
    categorymappings:
      - {id: 1, cat: Movies, desc: "Películas"}
      - {id: 32, cat: Movies/3D, desc: "Películas 3D"}
      - {id: 52, cat: Movies/BluRay, desc: "Películas Full Bluray"}
      - {id: 33, cat: Movies/BluRay, desc: "Películas BDRemux"}
      - {id: 120, cat: Movies/BluRay, desc: "Películas JMBD"}
      - {id: 34, cat: Movies/HD, desc: "Películas BDrip 1080p"}
      - {id: 99, cat: Movies/HD, desc: "Películas BDrip 720p"}
      - {id: 37, cat: Movies/HD, desc: "Películas HDTVrip"}
      - {id: 119, cat: Movies/HD, desc: "Películas HDiTunes"}
      - {id: 84, cat: Movies/HD, desc: "Películas MicroHD 1080p"}
      - {id: 100, cat: Movies/HD, desc: "Películas MicroHD 720p"}

      - {id: 32, cat: Other/Misc, desc: "Documentales"}
      - {id: 51, cat: Audio/Video, desc: "Conciertos/Videos Musicales"}
      - {id: 131, cat: Movies/HD, desc: "Películas UHD"}

      - {id: 16, cat: TV/HD, desc: "Series"}
      - {id: 44, cat: TV/HD, desc: "Series HDTVrip"}
      - {id: 89, cat: TV/HD, desc: "Series HDiTunes"}
      - {id: 58, cat: TV/HD, desc: "Series 3D"}
      - {id: 57, cat: TV/HD, desc: "Series Full Bluray"}
      - {id: 40, cat: TV/HD, desc: "Series BDRemux"}
      - {id: 121, cat: TV/HD, desc: "Series JMBD"}
      - {id: 41, cat: TV/HD, desc: "Series BDrip 1080p"}
      - {id: 101, cat: TV/HD, desc: "Series BDrip 720p"}
      - {id: 45, cat: TV/HD, desc: "Series MicroHD 1080p"}
      - {id: 102, cat: TV/HD, desc: "Series MicroHD 720p"}

      - {id: 114, cat: TV/HD, desc: "TV"}
      - {id: 115, cat: TV/HD, desc: "TV 1080p"}
      - {id: 116, cat: TV/HD, desc: "TV 720p"}

      - {id: 90, cat: Movies, desc: "Animación"}
      - {id: 91, cat: Movies/3D, desc: "Animación 3D"}
      - {id: 92, cat: Movies/BluRay, desc: "Animación Full Bluray"}
      - {id: 93, cat: Movies/HD, desc: "Animación BDrip 1080p"}
      - {id: 104, cat: Movies/HD, desc: "Animación BDrip 720p"}
      - {id: 94, cat: Movies/BluRay, desc: "Animación BDRemux"}
      - {id: 123, cat: Movies/BluRay, desc: "Animación JMBD"}
      - {id: 96, cat: Movies/HD, desc: "Animación HDTVrip"}
      - {id: 98, cat: Movies/HD, desc: "Animación MicroHD 1080p"}
      - {id: 105, cat: Movies/HD, desc: "Animación MicroHD 720p"}

      - {id: 126, cat: Movies/HD, desc: "Peliculas H265"}
      - {id: 127, cat: TV/HD, desc: "Series H265"}
      - {id: 130, cat: Movies/3D, desc: "3D H265"}
      - {id: 128, cat: Movies/HD, desc: "Animación H265"}
      - {id: 129, cat: Other/Misc, desc: "Documentales H265"}
    modes:
      search: [q]

  login:
    path: /ajax/login.php
    method: post
    headers:
      user-agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.104 Safari/537.36"
    form: form
    inputs:
      loginbox_membername: "{{ .Config.username }}"
      loginbox_password: "{{ .Config.password }}"
      action: "login"
      loginbox_remember: "true"
    error:
      - selector: div.error
    test:
      path: /?p=home&pid=1
      selector: div#member_info_bar

  search:
    path: /
    inputs:
      p: "torrents"
      page: "1"
      pid: "10"
      $raw: "{{range .Categories}}&cid[]={{.}}{{end}}"
      keywords: "{{ .Query.Keywords }}"
      search_type: "name"
      searchin: "title"
    rows:
      selector: .torrent-box:not(#search_torrent)
      after: 1
    fields:
      title:
        selector: .newIndicator > a
      details:
        selector: .newIndicator > a
        attribute: href
      category:
        optional: true
        selector:  .categoryImage a
        attribute: href
        filters:
          - name: querystring
            args: cid
      download:
        optional: true
        selector: .torrentImages > span:first-child a
        attribute: href
      banner:
        optional: true
        selector: .previewImage a
        attribute: href
      size:
        selector: .torrentInfo a[rel="torrent_size"]
      grabs:
        selector: .torrentInfo a[rel="times_completed"]
      seeders:
        selector: .torrentInfo a[rel="torrent_seeders"]
      leechers:
        selector: .torrentInfo a[rel="torrent_leechers"]
      imdb:
        optional: true
        selector: .torrentFlags a[href^="http://www.imdb.com/title/"]
        attribute: href
      date:
        optional: true
        selector: .torrentOwner
        filters:
          - name: regexp
            args: "(?<=Subido )(.*)(?= por)"
          - name: dateparse
            args: "02-01-2006 15:04"    
      downloadvolumefactor:
        text: "1"
      downloadvolumefactor:
        optional: true
        selector: img[src$="torrent_free.png"]
        attribute: title
        filters:
          - name: replace
            args: ["FREE LEECH!", "0"]
      downloadvolumefactor:
        optional: true
        selector: img[src$="torrent_multiple_download.png"]
        attribute: title
        filters:
          - name: split
            args: [":", 1]
          - name: trim
      uploadvolumefactor:
        text: "1"
      uploadvolumefactor:
        optional: true
        selector: img[src$="torrent_multiple_upload.png"]
        attribute: title
        filters:
          - name: split
            args: [":", 1]
          - name: trim
      minimumratio:
        text: "1.0"
      minimumseedtime:
        text: "259200" # 3 day (72h)
keystorm commented 6 years ago

@Albvadi, you rock!! 🤘

captura de pantalla 2018-01-19 a las 13 00 06

Search is also looking good!

Does it still work on the classic view?

Albvadi commented 6 years ago

Unfortunately no. The html for each row it´s different for both styles.. classic use a table with tr and modern use a div with a specific class.

I don´t know if it´s possible specifiy multiple selectors... maybe @garfield69 or @kaso17 can asnwer...

garfield69 commented 6 years ago

yes, you can specify multiple selectors by using the comma delimiter. eg. selector: .newIndicator > a, td.torrent_name > a

The fly in the soup for this site is the Row block, where I don't believe Jackett cardigann can handle an optional after: 1. @kaso17 can correct me if I'm wrong. So what I've done is make the default hachede indexer use the modern view, and provided the classic view as hachede-c.

kaso17 commented 6 years ago

Yes, @garfield69 is correct about the after limitation. But looking at the HTML code the after: 1 is not needed/wrong. To me it looks like with the current modern definition every other torrent result is dropped due to the after: 1

Albvadi commented 6 years ago

I think @kaso17 it´s correct. I don´t know why I writed after: 1 for the rows block. I think it´s an error and drop results in the search.

So, maybe, we can make only one definition to handle both views. I´ll check as soon as possible.

Albvadi commented 6 years ago

I had put together the definition for both views using the selectors with a separated comma, and almost work. But, for modern view, it´s a must the after: 1 An example image: image

The selector I used for modern view is .torrent-box:not(#search_torrent),so, I need to skip the .torrent-box inside the hidden div .torrentDescription. Things that come to mind:

Any ideas?

Albvadi commented 6 years ago

Okay, I think I have it using the first option. This is the definition for both views:

hachede.yml

---
  site: hachede
  name: HacheDe
  description: "HacheDe is a SPANISH site for HD content"
  language: es-es
  type: private
  encoding: UTF-8
  links:
    - https://hachede.me/

  caps:
    categorymappings:
      - {id: 1, cat: Movies, desc: "Películas"}
      - {id: 32, cat: Movies/3D, desc: "Películas 3D"}
      - {id: 52, cat: Movies/BluRay, desc: "Películas Full Bluray"}
      - {id: 33, cat: Movies/BluRay, desc: "Películas BDRemux"}
      - {id: 120, cat: Movies/BluRay, desc: "Películas JMBD"}
      - {id: 34, cat: Movies/HD, desc: "Películas BDrip 1080p"}
      - {id: 99, cat: Movies/HD, desc: "Películas BDrip 720p"}
      - {id: 37, cat: Movies/HD, desc: "Películas HDTVrip"}
      - {id: 119, cat: Movies/HD, desc: "Películas HDiTunes"}
      - {id: 84, cat: Movies/HD, desc: "Películas MicroHD 1080p"}
      - {id: 100, cat: Movies/HD, desc: "Películas MicroHD 720p"}

      - {id: 32, cat: Other/Misc, desc: "Documentales"}
      - {id: 51, cat: Audio/Video, desc: "Conciertos/Videos Musicales"}
      - {id: 131, cat: Movies/HD, desc: "Películas UHD"}

      - {id: 16, cat: TV/HD, desc: "Series"}
      - {id: 44, cat: TV/HD, desc: "Series HDTVrip"}
      - {id: 89, cat: TV/HD, desc: "Series HDiTunes"}
      - {id: 58, cat: TV/HD, desc: "Series 3D"}
      - {id: 57, cat: TV/HD, desc: "Series Full Bluray"}
      - {id: 40, cat: TV/HD, desc: "Series BDRemux"}
      - {id: 121, cat: TV/HD, desc: "Series JMBD"}
      - {id: 41, cat: TV/HD, desc: "Series BDrip 1080p"}
      - {id: 101, cat: TV/HD, desc: "Series BDrip 720p"}
      - {id: 45, cat: TV/HD, desc: "Series MicroHD 1080p"}
      - {id: 102, cat: TV/HD, desc: "Series MicroHD 720p"}

      - {id: 114, cat: TV/HD, desc: "TV"}
      - {id: 115, cat: TV/HD, desc: "TV 1080p"}
      - {id: 116, cat: TV/HD, desc: "TV 720p"}

      - {id: 90, cat: Movies, desc: "Animación"}
      - {id: 91, cat: Movies/3D, desc: "Animación 3D"}
      - {id: 92, cat: Movies/BluRay, desc: "Animación Full Bluray"}
      - {id: 93, cat: Movies/HD, desc: "Animación BDrip 1080p"}
      - {id: 104, cat: Movies/HD, desc: "Animación BDrip 720p"}
      - {id: 94, cat: Movies/BluRay, desc: "Animación BDRemux"}
      - {id: 123, cat: Movies/BluRay, desc: "Animación JMBD"}
      - {id: 96, cat: Movies/HD, desc: "Animación HDTVrip"}
      - {id: 98, cat: Movies/HD, desc: "Animación MicroHD 1080p"}
      - {id: 105, cat: Movies/HD, desc: "Animación MicroHD 720p"}

      - {id: 126, cat: Movies/HD, desc: "Peliculas H265"}
      - {id: 127, cat: TV/HD, desc: "Series H265"}
      - {id: 130, cat: Movies/3D, desc: "3D H265"}
      - {id: 128, cat: Movies/HD, desc: "Animación H265"}
      - {id: 129, cat: Other/Misc, desc: "Documentales H265"}
    modes:
      search: [q]

  login:
    path: /ajax/login.php
    method: post
    headers:
      user-agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.104 Safari/537.36"
    form: form
    inputs:
      loginbox_membername: "{{ .Config.username }}"
      loginbox_password: "{{ .Config.password }}"
      action: "login"
      loginbox_remember: "true"
    error:
      - selector: div.error
    test:
      path: /?p=home&pid=1
      selector: div#member_info_bar

  search:
    path: /
    inputs:
      p: "torrents"
      page: "1"
      pid: "10"
      $raw: "{{range .Categories}}&cid[]={{.}}{{end}}"
      keywords: "{{ .Query.Keywords }}"
      search_type: "name"
      searchin: "title"
    rows:
      selector: table#torrents_table_classic > tbody > tr:not(:first-child), .torrent-box[id^="torrent_"]
    fields:
      title:
        selector: td.torrent_name > a, .newIndicator > a
      details:
        selector: td.torrent_name > a, .newIndicator > a
        attribute: href
      category:
        selector:  td.torrent_image div.category_image a, .categoryImage a
        attribute: href
        filters:
          - name: querystring
            args: cid
      download:
        selector: .torrentImages > span:first-child a
        attribute: href
      banner:
        optional: true
        selector: td.torrent_image div.relativeDiv div:not(.category_image) a, .previewImage a
        attribute: href
      size:
        selector: td.size a, .torrentInfo a[rel="torrent_size"]
      grabs:
        selector: td.completed a, .torrentInfo a[rel="times_completed"]
      seeders:
        selector: td.seeders a, .torrentInfo a[rel="torrent_seeders"]
      leechers:
        selector: td.leechers a, .torrentInfo a[rel="torrent_leechers"]
      imdb:
        optional: true
        selector: .torrentFlags a[href^="http://www.imdb.com/title/"]
        attribute: href
      date:
        selector: td.torrent_name, .torrentOwner
        filters:
          - name: regexp
            args: "(?<=Subido )(.*)(?= por)"
          - name: dateparse
            args: "02-01-2006 15:04"    
      downloadvolumefactor:
        text: "1"
      downloadvolumefactor:
        optional: true
        selector: img[src$="torrent_free.png"]
        attribute: title
        filters:
          - name: replace
            args: ["FREE LEECH!", "0"]
      downloadvolumefactor:
        optional: true
        selector: img[src$="torrent_multiple_download.png"]
        attribute: title
        filters:
          - name: split
            args: [":", 1]
          - name: trim
      uploadvolumefactor:
        text: "1"
      uploadvolumefactor:
        optional: true
        selector: img[src$="torrent_multiple_upload.png"]
        attribute: title
        filters:
          - name: split
            args: [":", 1]
          - name: trim
      minimumratio:
        text: "1.0"
      minimumseedtime:
        text: "259200" # 3 day (72h)

@keystorm, can you test it before submit the PR? Make a search, enter in HacheDe, change the view in Mi Perfil -> Preferencias and do the same search to compare the results...

You can distinguish the results because with the modern view appears a link to IMDB..

kaso17 commented 6 years ago

try this row selector: div.torrent-box[id^="torrent_"]

kaso17 commented 6 years ago

and please check your optionals again, especially download and details shouldn't be optional

Albvadi commented 6 years ago

You are correct... It´s more specified and have less options for errors... And corrected the optionals... Sorry.

Waiting the test of @keystorm

keystorm commented 6 years ago

Sorry, didn't catch the mention.

Working fine on both modes on my side. Ready for PR imo.