Author Topic: Übergabe von Containerlinks (Name)  (Read 11403 times)

0 Members and 1 Guest are viewing this topic.

Offline .Infecto

  • Newbie
  • *
  • Posts: 48
    • View Profile
Übergabe von Containerlinks (Name)
« on: November 06, 2014, 08:49:24 PM »
Hallo zusammen,

da ich komplette Bilderpakete angebe, habe ich versucht mittels der Bildereinstellung direkt die Container anzugeben und den Bildername direkt mit dem Name des Containers zu überschreiben.

Ich habe folgendes getan.

Ich habe in der admin/images.php eingetragen unter:
                    if (!empty($additional_image_fields)) {
                        
$table_fields $site_db->get_table_fields(IMAGES_TABLE);
                        foreach (
$additional_image_fields as $key => $val) {
                            
                            if (isset(
$HTTP_POST_VARS[$key.'_'.$i]) && isset($table_fields[$key])) {
                                
$additional_field_sql .= ", $key";
                                
$additional_value_sql .= ", '".un_htmlspecialchars(trim($HTTP_POST_VARS[$key.'_'.$i]))."'";
                            }

                        }

                    }


Das hier:
                    // Sharelinkz START
                    
$sharelinksdl str_replace('http://share-links.biz/_'''$image_download_url);
                    
$re1='.*?';
	
# Non-greedy match on filler
                    
$re2='('.$sharelinksdl.')';
	
# Alphanum 1
	
	
	
	
	
if (
preg_match_all ("/".$re1.$re2."/is"$image_download_url)) {
                    
$ch curl_init();
                    
curl_setopt($chCURLOPT_URL"http://share-links.biz/api/status");
                    
curl_setopt($chCURLOPT_RETURNTRANSFER1);
                    
curl_setopt($chCURLOPT_POST1);
                    
curl_setopt($chCURLOPT_FOLLOWLOCATION1);
                    
$data = array(    
	
	
	
	
	
'apikey' => '2ed183155346a56a',      // Der API-Key, den man als reg. User bekommt 
                    
'folderCodes' => $sharelinksdl,   // Code des Ordners (bspw. "_xxkhv4aw7s5qa")
                    
);
                    
curl_setopt($chCURLOPT_POSTFIELDS$data);
                    
$rueckgabe explode(';'curl_exec($ch));
                    
curl_close($ch);
                    
$sl_name $rueckgabe[1];
	
	
	
	
    } else {
	
	
	
	
	
	
$sl_name $image_name;
	
	
	
	
	
}
	
	
	
	
	
// Sharelinkz ENDE


Und $image_name mit $sl_name ausgetauscht:
                    $sql "INSERT INTO ".IMAGES_TABLE."
                (cat_id, user_id, image_name, image_description, image_keywords, image_date, image_active, image_media_file, image_thumb_file, image_download_url, image_allow_comments"
.$additional_field_sql.")
                VALUES
                (
$cat_id$user_id, '$sl_name', '$image_description', '$image_keywords', $current_time$image_active, '$new_name', '$new_thumb_name', '$image_download_url', $image_allow_comments".$additional_value_sql.")";


Das klappt auch wunderbar. Da ich aber verschiedene Container-Dienste nutze, habe ich noch folgendes hinzugefügt:

                    $ncdl str_replace('http://ncrypt.in/folder-'''$image_download_url);
                    
$re1x='.*?';
	
# Non-greedy match on filler
                    
$re2x='('.$ncdl.')';
	
# Alphanum 1
	
	
	
	
	
if (
preg_match_all ("/".$re1x.$re2x."/is"$image_download_url)) {
	
	
	
	

curl_setopt($chCURLOPT_URL"http://ncrypt.in/api_status.php");
curl_setopt($chCURLOPT_RETURNTRANSFER1); 
curl_setopt($chCURLOPT_POST1); 
curl_setopt($chCURLOPT_FOLLOWLOCATION1); 
$data = array(
    
'link' => 'http://ncrypt.in/folder-'.$ncdl,
);
curl_setopt($chCURLOPT_POSTFIELDS$data); 
$rueckgabe explode(';'curl_exec($ch));
curl_close($ch); 
 
                    
$sl_name $rueckgabe[4];
	
	
	
	
    } else {
	
	
	
	
	
	
$sl_name $image_name;
	
	
	
	
	
}


Jetzt übergibt er den Name nicht mehr. Ich muss mich entscheiden ob ich NCrypt oder Share-Linkz nutze.
Ich möchte erreichen, dass das System automatisch erkennt ob es sich um share-linkz oder ncrypt handelt.
Der Dontainerlink wird als
$image_download_url trim($HTTP_POST_VARS['image_download_url_'.$i]);
Genutzt.

Kann mir jemand helfen?

Rembrandt

  • Guest
Re: Übergabe von Containerlinks (Name)
« Reply #1 on: November 07, 2014, 07:52:06 AM »
Hi!

Soviel ich jetzt verstanden habe möchtest du, eine Download URL (im Upload Formular) als Bildnamen verwenden (den jeweiligen *zip Namen)?

Du könntest auch mit preg_match zuerst herausfinden ob in der Var "$image_download_url" das Wort "NCrypt" oder "Share-Linkz" enthalten ist und dann erst  zu einen deiner beiden Script
weiterleiten.

mfg Andi

Offline .Infecto

  • Newbie
  • *
  • Posts: 48
    • View Profile
Re: Übergabe von Containerlinks (Name)
« Reply #2 on: November 07, 2014, 12:56:05 PM »
Das tuhe ich doch bereits oder?
Nur irgendwie beist sich die if-abfrage.

Wenn ich nur ein Script laufen lasse, dann übernimmt er die Daten, lasse sich beide ablaufen, spruckt er mir preg_mach fehler aus.
Als if-Abfrage, nutze ich das
if (preg_match_all ("/".$re1x.$re2x."/is"$image_download_url)) {

Rembrandt

  • Guest
Re: Übergabe von Containerlinks (Name)
« Reply #3 on: November 07, 2014, 01:17:04 PM »
Also noch mal meine Frage, eine Download URL (im Upload Formular) als Bildnamen verwenden (den jeweiligen *zip Namen)?

Offline .Infecto

  • Newbie
  • *
  • Posts: 48
    • View Profile
Re: Übergabe von Containerlinks (Name)
« Reply #4 on: November 07, 2014, 01:40:32 PM »
So ähnlich.

Es geht um den Ordnername: http://share-links.biz/_qu55men1z4bm
Anhand der API (Siehe Script)
API


Script
                    // Sharelinkz START
                    
$sharelinksdl str_replace('http://share-links.biz/_'''$image_download_url);
                    
$re1='.*?';
	
# Non-greedy match on filler
                    
$re2='('.$sharelinksdl.')';
	
# Alphanum 1
	
	
	
	
	
if (
$image_download_url == 'http://share-links.biz/_'.$sharelinksdl.')') {
                    
$ch curl_init();
                    
curl_setopt($chCURLOPT_URL"http://share-links.biz/api/status");
                    
curl_setopt($chCURLOPT_RETURNTRANSFER1);
                    
curl_setopt($chCURLOPT_POST1);
                    
curl_setopt($chCURLOPT_FOLLOWLOCATION1);
                    
$data = array(    
	
	
	
	
	
'apikey' => '2ed183155346a56a',      // Der API-Key, den man als reg. User bekommt 
                    
'folderCodes' => $sharelinksdl,   // Code des Ordners (bspw. "_xxkhv4aw7s5qa")
                    
);
                    
curl_setopt($chCURLOPT_POSTFIELDS$data);
                    
$rueckgabe explode(';'curl_exec($ch));
                    
curl_close($ch);
                    
$sl_name $rueckgabe[1];
	
	
	
	
    } else {
	
	
	
	
	
	
$sl_name $image_name;
	
	
	
	
    }
	
	
	
	
	
// Sharelinkz ENDE


NCrypt ist ähnlich augebaut. Nur 4images soll das erkennen ob es sich um ncrypt oder share-linkz handelt und entsprechend das richtige Script nutzen.

EDIT:
Mit dieser Variante scheint es bisher zu funktionieren. Aber ist das Codetechnisch ok?
                    // Sharelinkz START
                    
$sharelinksdl str_replace('http://share-links.biz/_'''$image_download_url);
	
	
	
	
	
if (
$image_download_url == 'http://share-links.biz/_'.$sharelinksdl.'') {
                    
$ch curl_init();
                    
curl_setopt($chCURLOPT_URL"http://share-links.biz/api/status");
                    
curl_setopt($chCURLOPT_RETURNTRANSFER1);
                    
curl_setopt($chCURLOPT_POST1);
                    
curl_setopt($chCURLOPT_FOLLOWLOCATION1);
                    
$data = array(    
	
	
	
	
	
'apikey' => '2ed183155346a56a',      // Der API-Key, den man als reg. User bekommt 
                    
'folderCodes' => $sharelinksdl,   // Code des Ordners (bspw. "_xxkhv4aw7s5qa")
                    
);
                    
curl_setopt($chCURLOPT_POSTFIELDS$data);
                    
$rueckgabe explode(';'curl_exec($ch));
                    
curl_close($ch);
                    
$sl_name $rueckgabe[1];
	
	
	
	
	
echo 
"Kuchen";
	
	
	
	
    }
	
	
	
	
	
// Sharelinkz ENDE
	
	
	
	
	

                    
$ncdl str_replace('http://ncrypt.in/folder-'''$image_download_url);
	
	
	
	
	
if (
$image_download_url == 'http://ncrypt.in/folder-'.$ncdl.'') {
	
	
	
	
	
	
$chx curl_init();
	
	
	

curl_setopt($chxCURLOPT_URL"http://ncrypt.in/api_status.php");
curl_setopt($chxCURLOPT_RETURNTRANSFER1); 
curl_setopt($chxCURLOPT_POST1); 
curl_setopt($chxCURLOPT_FOLLOWLOCATION1); 
$datax = array(
    
'link' => 'http://ncrypt.in/folder-'.$ncdl,
);
curl_setopt($chxCURLOPT_POSTFIELDS$datax); 
$rueckgabex explode(';'curl_exec($chx));
curl_close($chx); 
 
                    
$sl_name $rueckgabex[4];
	
	
	
	
	
echo 
"Torte";
	
	
	
	
    }

« Last Edit: November 07, 2014, 02:04:28 PM by .Infecto »

Rembrandt

  • Guest
Re: Übergabe von Containerlinks (Name)
« Reply #5 on: November 10, 2014, 07:16:19 PM »
Hi!

So ich habe einmal was zusammen gestellt, vorweg es gibt natürlich mehrere Möglichkeiten um ans Ziel zu kommen.
Der Code sieht im ersten Moment aufwendiger aus, hat aber den Vorteil wenn du einen weiteren Anbieter nutzen möchtest kannst du in der "function shareLink"  ganz einfach ein weiteres "case" anlegen.

1.) die beiden functionen in die Datei "includes/functions.php" vor "?>" hinein kopieren.

function curlSharelink($shareLinkUrl$shareLinkArray$shareLinkReturn){
  
$cInit curl_init();
  
curl_setopt($cInitCURLOPT_URL$shareLinkUrl);
  
curl_setopt($cInitCURLOPT_RETURNTRANSFER1); 
  
curl_setopt($cInitCURLOPT_POST1); 
  
curl_setopt($cInitCURLOPT_FOLLOWLOCATION1); 
  
curl_setopt($cInitCURLOPT_POSTFIELDS$shareLinkArray); 
  
$downloadName explode(';'curl_exec($cInit));
  
curl_close($cInit); 
  return 
$downloadName[$shareLinkReturn];
}

function 
shareLink($shareLinkUrl$image_name=''){
  if(
$shareLinkUrl){
    
$shareLink parse_url($shareLinkUrlPHP_URL_HOST);

    switch (
$shareLink) {
      case (
$shareLink == "share-links.biz") :
        
$folderCodes str_replace('http://share-links.biz/_'''$shareLinkUrl);   
        
$shareLinkArray = array(    
          
'apikey' => '2ed183155346a56a',
          
'folderCodes' => $folderCodes
        
);
        
$shareLinkReturn 1;
      return 
curlSharelink($shareLinkUrl$shareLinkArray$shareLinkReturn);
      break;
      
      case (
$shareLink == "ncrypt.in") :
        
$shareLinkArray = array(
          
'link' => $shareLinkUrl
        
);
        
$shareLinkReturn 4;
      return 
curlSharelink($shareLinkUrl$shareLinkArray$shareLinkReturn);
      break;
      
      default:
      return 
$image_name;
      break; 
    }
  }
  else{
    return 
$image_name;
  }
}


2.)  suche in der member.php in der section "($action == "uploadimage")":

$upload_cat 
= ($direct_upload) ? $cat_id 0;

und füge darunter ein:

$image_name 
shareLink($remote_media_file,$image_name);


Testen konnte ich es nicht, da ich auf diesen Seiten keinen Zugang habe.
Aber ich nehme mal an das wenn du dir den Code der beiden "functionen" ansiehst wirst du ihn verstehen und gegeben falls korrigieren können.

mfg Andi
« Last Edit: November 20, 2014, 07:56:22 AM by Rembrandt »

Offline .Infecto

  • Newbie
  • *
  • Posts: 48
    • View Profile
Re: Übergabe von Containerlinks (Name)
« Reply #6 on: November 11, 2014, 03:43:34 PM »
Vielen vielen Dank.
Das werde ich die Tage testen und melde mich mit einem Feedback zurück!

Rembrandt

  • Guest
Re: Übergabe von Containerlinks (Name)
« Reply #7 on: November 11, 2014, 05:02:43 PM »
Na da bin ich schon gespannt ob es funktioniert .  :)

Offline .Infecto

  • Newbie
  • *
  • Posts: 48
    • View Profile
Re: Übergabe von Containerlinks (Name)
« Reply #8 on: November 12, 2014, 01:17:32 AM »
Das denke ich mir.
Bisher habe ich das so gelöst, einwandfrei.

                $sldl str_replace(SHARELINKZBIZ_FOLDERKEY''$image_download_url);
                
                if (
$image_download_url == SHARELINKZBIZ_FOLDERKEY $sldl '') {
                    
$sl_curl curl_init();
                    
curl_setopt($sl_curlCURLOPT_URLSHARELINKZBIZ);
                    
curl_setopt($sl_curlCURLOPT_RETURNTRANSFER1);
                    
curl_setopt($sl_curlCURLOPT_POST1);
                    
curl_setopt($sl_curlCURLOPT_FOLLOWLOCATION1);
                    
$array = array(
                        
'apikey' => 'xxx',
                        
'folderCode' => $sldl
                    
);
                    
curl_setopt($sl_curlCURLOPT_POSTFIELDS$array);
                    
$sl_echo explode(';'curl_exec($sl_curl));
                    
curl_close($sl_curl);
                    if (
$config['container_name'] == 0) {
                        
$image_filesize byte_umrechner($sl_echo[2]);
                        
$image_provider $sl_echo[3];
                    } else {
                        
$sls_curl curl_init();
                        
curl_setopt($sls_curlCURLOPT_URLSHARELINKZBIZ_STATS);
                        
curl_setopt($sls_curlCURLOPT_RETURNTRANSFER1);
                        
curl_setopt($sls_curlCURLOPT_POST1);
                        
curl_setopt($sls_curlCURLOPT_FOLLOWLOCATION1);
                        
$arrays = array(
                            
'apikey' => 'xxx',
                            
'folderCodes' => $sldl
                        
);
                        
curl_setopt($sls_curlCURLOPT_POSTFIELDS$arrays);
                        
$sls_echo explode(';'curl_exec($sls_curl));
                        
curl_close($sls_curl);
                        
$image_name     $sls_echo[1];
                        
$image_filesize byte_umrechner($sl_echo[2]);
                        
$image_provider $sl_echo[3];
                    }
                }
                
                
$ncdl str_replace(NCRYPTIN_FOLDERKEY''$image_download_url);
                
                if (
$image_download_url == NCRYPTIN_FOLDERKEY $ncdl '') {
                    
$nc_curl curl_init();
                    
curl_setopt($nc_curlCURLOPT_URLNCRYPTIN);
                    
curl_setopt($nc_curlCURLOPT_RETURNTRANSFER1);
                    
curl_setopt($nc_curlCURLOPT_POST1);
                    
curl_setopt($nc_curlCURLOPT_FOLLOWLOCATION1);
                    
$array = array(
                        
'link' => NCRYPTIN_FOLDERKEY $ncdl
                    
);
                    
curl_setopt($nc_curlCURLOPT_POSTFIELDS$array);
                    
$nc_echo explode(';'curl_exec($nc_curl));
                    
curl_close($nc_curl);
                    if (
$config['container_name'] == 0) {
                        
$image_filesize byte_umrechner($nc_echo[2]);
                        
$image_provider $nc_echo[1];
                    } else {
                        
$image_filesize byte_umrechner($nc_echo[2]);
                        
$image_provider $nc_echo[1];
                        
$image_name     $nc_echo[4];
                    }
                }
                
                
$lcdl str_replace(LINKCRYPTWS_FOLDERKEY''$image_download_url);
                
                if (
$image_download_url == LINKCRYPTWS_FOLDERKEY $lcdl '') {
                    
$returnData file_get_contents(LINKCRYPTWS $lcdl);
                    
                    if (!
$returnData or !$returnData = @simplexml_load_string($returnData)) {
                        echo 
"Keine Daten empfangen!";
                    } else {
                        
$image_filesize $returnData->folderSize ' MB';
                        
$image_provider $returnData->folderHoster;
                        if (
$config['container_name'] == 1) {
                        }
                        
$image_name $image_name;
                    }
                }


Aber wie gesagt, deine Variante werde ich mir in jedem Fall anschauen.
Um selber dein Script zu testen, brauchst du im Grunde keine Zugangsdaten.
Bis auf Share-Linkz, ist die Abfrage der Daten ohne APIKey möglich.
Für Share-Linkz kann ich dir einen zum testen geben.
Für die anderen, reicht lediglich ein Ordnerlink.

Rembrandt

  • Guest
Re: Übergabe von Containerlinks (Name)
« Reply #9 on: November 12, 2014, 05:12:48 AM »
...
Für Share-Linkz kann ich dir einen zum testen geben.
Für die anderen, reicht lediglich ein Ordnerlink.
Ah ok, kannst du mir die beiden Links per PM zukommen lassen?

mfg Andi